본문 바로가기
BackEnd/AWS

[AWS] CLI에서 SSO를 이용한 접속

by 푸고배 2022. 1. 26.

CLI 버전 확인

이 기능은 AWS CLI 버전 2를 사용하는 경우에만 사용할 수 있다.

aws --version 을 통해 버전을 확인하고, 아래를 통해 버전 2를 설치한다.

 

AWS CLI 버전 2 설치, 업데이트 및 제거 - AWS Command Line Interface

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

AWS SSO named profile 구성

AWS SSO의 역할을 사용하도록 하나 이상의 AWS CLI named profile을 구성할 수 있다. 여러 프로파일을 작성 및 구성하고 각기 다른 AWS SSO 사용자 포털 또는 SSO 정의 역할을 사용하도록 구성할 수 있다.

profile을 구성하는 방법은 자동과 수동이 있다.

  • 자동 구성 : aws configure sso 명령어 이용
  • 수동 구성 : named profile을 저장한 .aws/config 파일을 편집

 

자동 구성

다음 명령어를 실행해 AWS SSO 시작 URL과 AWS CLI 디렉터리를 호스팅하는 AWS SSO 리전을 제공하여 AWS 지원 프로파일을 AWS SSO에 추가할 수 있다.

$ aws configure sso
SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]:us-east-1

AWS CLI는 기본 브라우저를 열고 AWS SSO 계정에 대한 로그인 프로세스를 시작하려고 시도한다.

SSO authorization page has automatically been opened in your default browser.
Follow the instructions in the browser to complete this authorization request.

AWS CLI에서 브라우저를 열수 없으면 로그인 프로세스를 수동으로 시작하는 방법에 대한 지침과 함께 다음 메시지가 나타난다.

Using a browser, open the following URL:
 
https://my-sso-portal.awsapps.com/verify

and enter the following code:
QCFK-N451

AWS SSO는 코드를 사용하여 AWS SSO 세션을 현재 AWS CLI 세션과 연결한다. AWS SSO 브라우저 페이지에 AWS SSO 계정 자격 증명으로 로그인하라는 메시지가 표시된다. 이를 통해 AWS CLI(AWS SSO계정과 연결된 권한을 통해)가 AWS에 사용할 권한이 있는 AWS SSO 계정 및 역할을 검색하고 표시할 수 있다.

 

AWS CLI에 사용 가능한 AWS 계정이 표시된다. 하나의 계정만 사용할 수 있는 경우 AWS CLI에서 자동으로 해당 계정을 선택하고 프롬프트를 건너 뛴다. 사용할 수 있는 AWS 계정은 AWS SSO의 사용자 구성에 따라 결정된다.

There are 2 AWS accounts available to you.
> DeveloperAccount, developer-account-admin@example.com (123456789011) 
  ProductionAccount, production-account-admin@example.com (123456789022)

화살표 키와 Enter를 사용해 이 프로파일에 사용할 계정을 선택한다. 왼쪽의 ">" 문자는 현재 선택 항목을 가리킨다.

 

AWS CLI에서 계정 선택을 확인하고 선택한 계정에서 사용할 수 있는 IAM 역할을 표시한다. 선택한 계정에 하나의 역할만 나열되는 경우 위와 동일하게 프롬프트를 건너뛴다.

Using the account ID 123456789011
There are 2 roles available to you.
> ReadOnly
  FullAccess

 

이제 기본 출력 형식, 명령을 보낼 기본 AWS 리전 및 프로파일 이름을 지정하여 로컬 컴퓨터에 정의된 모든 프로파일 중에서 이 프로파일을 참조할 수 있도록 프로파일 구성을 마칠 수 있다. 다음 예제에서 사용자는 프로파일의 이름, 기본 리전 및 기본 출력 형식을 입력한다. 또는 Enter키를 눌러 대괄호 사이에 표시되는 기본값을 선택할 수 있다. 제안된 프로파일 이름은 계정 ID 번호, 밑줄, 역할 이름 순으로 표시된다.

CLI default client Region [None]: us-west-2<ENTER>
CLI default output format [None]: json<ENTER>
CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
default를 프로파일 이름으로 지정하면 이 프로파일은 AWS CLI 명령을 실행할 때마다 사용되는 프로파일이 되고 프로파일 이름을 지정하지 않는다.

최종 메시지는 완료된 프로파일 구성을 설명한다.

이 프로파일을 사용하려면 다음과 같이 --profile을 사용하여 프로파일 이름을 지정한다.

aws s3 ls --profile my-dev-profile

앞의 예제 항목은ㅇ ~/.aws/config에서 다음 예제와 같이 named profile이 생성된다.

[profile my-dev-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json
지정된 프로파일을 사용하여 AWS CLI 명령을 실행할 수도 있다. AWS SSO 포털에 현재 로그인하지 않은 경우 aws sso login 명령을 수동으로 실행한 것처럼 로그인 프로세스가 자동으로 시작된다.

 

수동 구성

자동 구성을 주로 사용할 것 같기 때문에 따로 정리하지 않겠다.. 레퍼런스 참고

 

 

AWS SSO named profile 사용

이전 섹션에서 생성한 AWS SSO 프로파일을 사용하는 방법에 대해 알아본다.

로그인 및 임시 자격 증명 가져오기

프로파일을 구성한 후 이 프로파일을 호출하여 임시 자격 증명을 요청할 수 있다. AWS CLI 명령을 실행하려면 먼저 임시 자격 증명 집합을 검색하고 캐시해야한다. 이러한 임시 자격 증명을 가져오려면 다음 명령을 실행한다.

aws sso login --profile my-dev-profile

AWS CLI에서 기본 브라우저를 열고 AWS SSO 로그인을 확인한다.

SSO authorization page has automatically been opened in your default browser. 
Follow the instructions in the browser to complete this authorization request.
Successully logged into Start URL: https://my-sso-portal.awsapps.com/start

현재 AWS SSO 계정에 로그인하지 않은 경우 AWS SSO 사용자 이름과 암호를 입력해야 한다.

AWS CLI에서 브라우저를 열 수 없는 경우 직접 브라우저를 열고 지정된 코드를 입력하라는 메시지가 표시된다.

$ aws sso login --profile my-dev-profile
Using a browser, open the following URL:
 
https://my-sso-portal.awsapps.com/verify

and enter the following code:
QCFK-N451

AWS CLI는 기본 브라우저(또는 사용자가 선택하여 수동으로 연 브라우저)에서 지정된 페이지를 열고 제공된 코드를 입력한다. 그런 다음 웹 페이지에 AWS SSO 자격 증명을 묻는 메시지가 표시된다.

 

AWS SSO 세션 자격 증명이 캐시되고 만료 타임스탬프가 포함된다. 자격 증명이 만료되면 AWS CLI에서 AWS SSO에 다시 로그인하도록 요청한다.

 

AWS SSO 자격 증명이 유효한 경우 AWS CLI에서는 이 자격 증명을 사용하여 프로파일에 지정된 IAM 역할에 대한 AWS 임시 자격증명을 안전하게 검색한다.

 

AWS SSO 프로파일로 명령 실행

이러한 임시 자격 증명을 사용하여 연결된 프로파일과 함께 AWS CLI 명령을 호출할 수 있다. 다음은 지정된 계정의 일부인 위임된 역할에서 명령이 실행되었음을 보여주는 예이다.

$ aws sts get-caller-identity --profile my-dev-profile
{
    "UserId": "AROA12345678901234567:test-user@example.com",
    "Account": "123456789011",
    "Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/test-user@example.com"
}

 

AWS SSO 세션에서 로그아웃

AWS SSO 지원 프로파일 사용이 완료되면 아무 작업도 수행하지 않고 AWS 임시 자격 증명과 AWS SSO 자격 증명이 만료되도록 선택할 수 있다. 그러나 다음 명령을 실행하여 SSO 자격 증명 캐시 폴더의 모든 캐시된 자격증명과 AWS 자격 증명을 기반으로 한 모든 AWS SSO 임시 자격 증명을 즉시 삭제하도록 선택할 수도 있다 이렇게 하면 이러한 자격 증명을 향후 명령에 사용할 수 없게 된다.

$ aws sso logout
Successfully signed out of all SSO profiles.

 


Reference

 

AWS Single Sign-On를 사용하도록 AWS CLI 구성 - AWS Command Line Interface

지정된 프로파일을 사용하여 AWS CLI 명령을 실행할 수도 있습니다. AWS SSO 포털에 현재 로그인하지 않은 경우 aws sso login 명령을 수동으로 실행한 것처럼 로그인 프로세스가 자동으로 시작됩니다.

docs.aws.amazon.com

반응형

'BackEnd > AWS' 카테고리의 다른 글

[AWS] 클라우드 컴퓨팅  (0) 2021.05.17

댓글