AWS IAM Identity Center (successor to AWS Single Sign-On)을 사용하도록 AWS CLI 구성 - AWS Command Line Interface

AWS IAM Identity Center (successor to AWS Single Sign-On)을 사용하도록 AWS CLI 구성

AWS IAM Identity Center (successor to AWS Single Sign-On)(IAM Identity Center)을 사용하는 조직의 사용자는 Active Directory 또는 기본 제공 IAM Identity Center 디렉터리에 로그인하거나 IAM Identity Center에 연결된 다른 IdP에 로그인한 다음 AWS Identity and Access Management(IAM) 역할에 매핑하여 AWS CLI 명령을 실행할 수 있습니다. 사용하는 IdP와 관계없이 IAM Identity Center는 이러한 구별을 추상화하며, 아래 설명과 같이 모두 AWS CLI에서 작동합니다. 예를 들어 The Next Evolution in AWS IAM Identity Center (successor to AWS Single Sign-On) 블로그 문서에 설명된 대로 Microsoft Azure AD를 연결할 수 있습니다.

IAM Identity Center에 대한 자세한 내용은 AWS IAM Identity Center (successor to AWS Single Sign-On) 사용 설명서를 참조하세요.

이 주제에서는 AWS CLI 명령을 실행하기 위한 단기 보안 인증 정보를 얻기 위해 IAM Identity Center를 사용하여 사용자를 인증하도록 AWS CLI를 구성하는 방법에 대해 설명합니다. 다음과 같은 섹션이 포함되어 있습니다.

IAM Identity Center를 사용하도록 명명된 프로파일 구성

IAM Identity Center의 역할을 사용하도록 AWS CLI 명명된 프로파일 중 하나 이상을 구성할 수 있습니다.

다음과 같은 방법으로 프로파일을 구성할 수 있습니다.

  • aws configure sso 명령을 사용하여 자동으로

  • 명명된 프로파일을 저장한 .aws/config 파일을 편집하여 수동으로

자동 구성

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

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

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

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

IAM Identity Center는 코드를 사용하여 IAM Identity Center 세션을 현재 AWS CLI 세션과 연결합니다. IAM Identity Center 브라우저 페이지에 IAM Identity Center 보안 인증 정보로 로그인하라는 메시지가 표시됩니다. 이를 통해 AWS CLI(IAM Identity Center 계정과 연결된 권한을 통해)가 IAM Identity Center에 사용할 권한이 있는 AWS 계정 및 역할을 검색하고 표시할 수 있습니다.

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

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 역할을 표시합니다. 선택한 계정에 하나의 역할만 나열되는 경우 AWS CLI에서 자동으로 해당 역할을 선택하고 프롬프트를 건너뜁니다. 사용할 수 있는 역할은 IAM Identity Center의 사용자 구성에 따라 결정됩니다

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

이전과 마찬가지로 화살표 키를 사용하여 이 프로파일에 사용할 IAM 역할을 선택합니다. 왼쪽의 ">" 문자는 현재 선택 항목을 가리킵니다. <ENTER>를 눌러 선택합니다.

AWS CLI에서 역할 선택을 확인합니다.

Using the role name "ReadOnly"

이제 기본 출력 형식, 명령을 보낼 기본 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에서 다음 예제와 같이 명명된 프로파일이 생성됩니다.

[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 sso login 명령을 사용하여 실제로 명령을 실행하는 데 필요한 임시 자격 증명을 요청하고 검색해야 합니다. 지침은 IAM Identity Center 지원 명명된 프로파일 사용 단원을 참조하십시오.

참고

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

수동 구성

명명된 프로파일에 IAM Identity Center 지원을 수동으로 추가하려면 ~/.aws/config 파일(Linux 또는 macOS) 또는 %USERPROFILE%/.aws/config 파일(Windows)의 프로파일 정의에 다음 키와 값을 추가해야 합니다.

sso_start_url

조직의 AWS 액세스 포털을 가리키는 URL을 지정합니다. AWS CLI는 이 URL을 통해 IAM Identity Center 서비스와의 세션을 설정하여 사용자를 인증합니다. AWS 액세스 포털 URL을 찾으려면 다음 중 하나를 사용합니다.

  • 초대 이메일을 엽니다. AWS 액세스 포털 URL이 나와 있습니다.

  • https://console.aws.amazon.com/singlesignon/에서 AWS IAM Identity Center (successor to AWS Single Sign-On) 콘솔을 엽니다. AWS 액세스 포털 URL이 설정에 나와 있습니다.

sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region

AWS 액세스 포털 호스트가 포함된 AWS 리전입니다. 이 값은 기본 CLI region 파라미터와 별개이며 다른 리전일 수 있습니다.

sso_region = us-west-2
sso_account_id

이 프로파일에 사용할 IAM 역할이 포함된 AWS 계정 ID입니다.

sso_account_id = 123456789011
sso_role_name

이 프로파일을 사용할 때 사용자의 권한을 정의하는 IAM 역할의 이름입니다.

sso_role_name = ReadAccess

이러한 키가 있으면 이 프로파일을 IAM Identity Center를 사용하여 사용자를 인증하는 것으로 식별합니다.

.aws/config, region 또는 output과 같이 s3 파일에 유효한 다른 키와 값을 포함할 수도 있습니다. 그러나 role_arn 또는 aws_secret_access_key와 같은 자격 증명 관련 값은 포함할 수 없습니다. 이렇게 하면 AWS CLI에서 오류가 발생합니다.

따라서 .aws/config의 일반적인 IAM Identity Center 프로파일은 다음 예제와 비슷할 수 있습니다.

[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 login 명령을 사용하여 실제로 명령을 실행하는 데 필요한 임시 자격 증명을 요청하고 검색해야 합니다. 지침은 다음 IAM Identity Center 지원 명명된 프로파일 사용 섹션을 참조하세요.

IAM Identity Center 지원 명명된 프로파일 사용

이 섹션에서는 이전 섹션에서 생성한 IAM Identity Center 프로파일을 사용하는 방법에 대해 설명합니다.

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

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

$ aws sso login --profile my-dev-profile

AWS CLI에서 기본 브라우저를 열고 IAM Identity Center 로그인을 확인합니다.

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

현재 IAM Identity Center에 로그인하지 않은 경우 IAM Identity Center 보안 인증 정보를 제공해야 합니다.

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는 기본 브라우저(또는 사용자가 선택하여 수동으로 연 브라우저)에서 지정된 페이지를 열고 제공된 코드를 입력합니다. 그런 다음 웹 페이지에 IAM Identity Center 보안 인증 정보를 묻는 메시지가 표시됩니다.

IAM Identity Center 세션 보안 인증 정보가 캐시되고 만료 타임스탬프가 포함됩니다. 보안 인증 정보가 만료되면 AWS CLI에서 IAM Identity Center에 다시 로그인하도록 요청합니다.

IAM Identity Center 보안 인증 정보가 유효한 경우 AWS CLI에서는 이 보안 인증 정보를 사용하여 프로파일에 지정된 IAM 역할에 대한 AWS 임시 보안 인증 정보를 안전하게 검색합니다.

Welcome, you have successfully signed-in to the AWS-CLI.

IAM Identity Center 지원 프로파일로 명령 실행

이러한 임시 자격 증명을 사용하여 연결된 명명된 프로파일과 함께 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" }

IAM Identity Center에 로그인하고 캐시된 보안 인증 정보가 만료되지 않는 한 AWS CLI는 필요한 경우 만료된 AWS 임시 보안 인증 정보를 자동으로 갱신합니다. 그러나 IAM Identity Center 보안 인증 정보가 만료되면 IAM Identity Center 계정에 다시 로그인하여 명시적으로 갱신해야 합니다.

$ aws s3 ls --profile my-sso-profile Your short-term credentials have expired. Please sign-in to renew your credentials SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

각각 다른 AWS 계정이나 역할을 가리키는 여러 개의 IAM Identity Center 지원 명명된 프로파일을 만들 수 있습니다. 한 번에 두 개 이상의 프로파일에 aws sso login 명령을 사용할 수도 있습니다. 이러한 프로파일이 동일한 IAM Identity Center 사용자 계정을 공유하는 경우 해당 IAM Identity Center 사용자 계정에 한 번만 로그인한 다음 모두 IAM Identity Center 캐시된 보안 인증 정보 집합을 공유하도록 해야 합니다.

# The following command retrieves temporary credentials for the AWS account and role # specified in one named profile. If you are not yet signed in to IAM Identity Center or your # cached credentials have expired, it opens your browser and prompts you for your # IAM Identity Center user name and password. It then retrieves AWS temporary credentials for # the IAM role associated with this profile. $ aws sso login --profile my-first-sso-profile # The next command retrieves a different set of temporary credentials for the AWS # account and role specified in the second named profile. It does not overwrite or # in any way compromise the first profile's credentials. If this profile specifies the # same AWS access portal, then it uses the SSO credentials that you retrieved in the # previous command. The AWS CLI then retrieves AWS temporary credentials for the # IAM role associated with the second profile. You don't have to sign in to # IAM Identity Center again. $ aws sso login --profile my-second-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the first profile. $ aws ec2 describe-instances --profile my-first-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the second profile. $ aws ec2 describe-instances --profile my-second-sso-profile

IAM Identity Center 세션 로그아웃

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

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

나중에 IAM Identity Center 지원 프로파일 중 하나를 사용하여 명령을 실행하려면 aws sso login 명령을 다시 실행하고(이전 섹션 참조) 사용할 프로파일을 지정해야 합니다.