

# AWS CLI에 대한 인증 및 액세스 보안 인증
<a name="cli-chap-authentication"></a>

AWS 서비스를 사용하여 개발할 때 AWS를 사용한 AWS CLI 인증 방법을 설정해야 합니다. AWS CLI에 대한 프로그램 방식의 액세스 보안 인증을 구성하려면 다음 옵션 중 한 가지를 선택합니다. 옵션은 권장 순서입니다.


****  

| 인증 유형 | 용도 | 지침 | 
| --- | --- | --- | 
|  AWS Management Console 자격 증명  | **(권장)** 콘솔 자격 증명으로 AWS CLI에 로그인하여 단기 자격 증명을 사용합니다. AWS 계정 액세스를 위해 루트, IAM 사용자 또는 IAM과의 페더레이션을 사용하는 경우 권장 | [콘솔 자격 증명을 사용하여 AWS 로컬 개발을 위해 로그인](cli-configure-sign-in.md) | 
|  IAM Identity Center 인력 사용자 단기 자격 증명  | IAM Identity Center 인력 사용자에게 단기 자격 증명을 사용합니다.보안 모범 사례는 IAM Identity Center가 있는 AWS Organizations를 사용하는 것입니다. 단기 자격 증명을 기본 제공 IAM Identity Center 디렉터리 또는 Active Directory와 같은 사용자 디렉터리와 결합합니다. | [AWS CLI를 사용하여 IAM Identity Center 인증 구성](cli-configure-sso.md) | 
| IAM 사용자 단기 자격 증명 | 장기 자격 증명보다 더 안전한 IAM 사용자 단기 자격 증명을 사용하세요. 자격 증명이 유출된 경우 만료되기 전까지 사용할 수 있는 시간이 제한되어 있습니다. | [AWS CLI에 대한 단기 자격 증명으로 인증](cli-authentication-short-term.md) | 
| Amazon EC2 인스턴스의 IAM 또는 IAM Identity Center 사용자. | Amazon EC2 인스턴스 메타데이터를 사용하여 Amazon EC2 인스턴스에 할당된 역할을 사용하여 임시 자격 증명을 쿼리할 수 있습니다. | [AWS CLI에서 Amazon EC2 인스턴스 메타데이터의 자격 증명 사용](cli-configure-metadata.md) | 
| 권한에 대한 역할 가정 | 다른 자격 증명 방법을 페어링하고 사용자가 액세스 권한이 없을 수 있는 AWS 서비스에 대한 임시 액세스를 위한 역할을 맡습니다. | [AWS CLI에서 IAM 역할 사용](cli-configure-role.md) | 
| IAM 사용자 장기 자격 증명 | (권장하지 않음) 만료 기간이 없는 장기 인증 정보를 사용하세요. | [IAM 사용자 자격 증명을 사용한 인증](cli-authentication-user.md) | 
| IAM 또는 IAM Identity Center 인력 사용자의 외부 스토리지  | (권장되지 않음) 다른 자격 증명 방법을 페어링하되 자격 증명 값을 AWS CLI 외부의 위치에 저장합니다. 이 방법은 자격 증명이 저장된 외부 위치만큼만 안전합니다. | [AWS CLI에서 외부 프로세스를 통해 자격 증명 소싱](cli-configure-sourcing-external.md) | 

## 구성 및 보안 인증 우선 순위
<a name="cli-chap-authentication-precedence"></a>

보안 인증 및 구성 설정은 시스템 또는 사용자 환경 변수, 로컬 AWS 구성 파일 또는 명령줄에서 파라미터로 명시적으로 선언된 위치 등 다양한 장소에 있습니다. 특정 인증은 다른 인증보다 우선합니다. AWS CLI 인증 설정은 다음 순서대로 우선 적용됩니다.

1. **[명령줄 옵션](cli-configure-options.md)** - `--region`, `--output`, `--profile`와 같은 다른 위치의 설정을 재정의합니다.

1. **[환경 변수](cli-configure-envvars.md)** - 시스템의 환경 변수에 값을 저장할 수 있습니다.

1. **[역할 위임](cli-configure-role.md)** - 구성 또는 [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 명령을 통해 IAM 역할의 권한을 위임합니다.

1. **[웹 ID로 역할 위임](cli-configure-role.md)** - 구성 또는 [https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html) 명령을 통해 웹 ID를 사용하여 IAM 역할의 권한을 위임합니다.

1. **[AWS IAM Identity Center](cli-configure-files.md)** - `config` 파일에 저장된 IAM Identity Center 구성 설정은 `aws configure sso` 명령을 실행할 때 업데이트됩니다. 그런 다음 보안 인증 정보는 `aws sso login` 명령을 실행할 때 인증됩니다. `config` 파일은 `~/.aws/config`(Linux 또는 macOS) 또는 `C:\Users\USERNAME\.aws\config`(Windows)에 저장됩니다.

1. **[보안 인증 파일](cli-configure-files.md)** - `aws configure` 명령을 실행하면 `credentials` 및 `config` 파일이 업데이트됩니다. `credentials` 파일은 `~/.aws/credentials`(Linux 또는 macOS) 또는 `C:\Users\USERNAME\.aws\credentials`(Windows)에 저장됩니다.

1. **[사용자 지정 프로세스](cli-configure-sourcing-external.md)** - 외부 소스에서 보안 인증을 가져옵니다.

1. **[구성 파일](cli-configure-files.md)** - `aws configure` 명령을 실행하면 `credentials` 및 `config` 파일이 업데이트됩니다. `config` 파일은 `~/.aws/config`(Linux 또는 macOS) 또는 `C:\Users\USERNAME\.aws\config`(Windows)에 저장됩니다.

1. **[컨테이너 보안 인증](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)** - IAM 역할을 각 Amazon Elastic Container Service(Amazon ECS) 태스크 정의에 연결할 수 있습니다. 그러면 작업의 컨테이너에 대해 해당 역할의 임시 보안 인증을 사용할 수 있습니다. 자세한 내용은 *Amazon Elastic Container Service 개발자 안내서*에서 [태스크에 대한 IAM 역할](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)을 참조하세요.

1. **[Amazon EC2 인스턴스 프로파일 보안 인증](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)** - IAM 역할을 각 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결할 수 있습니다. 그러면 인스턴스에서 실행되는 코드에 대해 해당 역할의 임시 보안 인증을 사용할 수 있습니다. 보안 인증은 Amazon EC2 메타데이터 서비스를 통해 전달됩니다. 자세한 내용은 **Amazon EC2 사용 설명서의 [Amazon EC2에 대한 IAM 역할](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)과 **IAM 사용 설명서의 [인스턴스 프로파일 사용](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)을 참조하세요.

## 이 섹션의 추가 주제
<a name="cli-chap-authentication-topics"></a>
+ [AWS CLI를 사용하여 IAM Identity Center 인증 구성](cli-configure-sso.md)
+ [AWS CLI에 대한 단기 자격 증명으로 인증](cli-authentication-short-term.md)
+ [AWS CLI에서 IAM 역할 사용](cli-configure-role.md)
+ [IAM 사용자 자격 증명을 사용한 인증](cli-authentication-user.md)
+ [AWS CLI에서 Amazon EC2 인스턴스 메타데이터의 자격 증명 사용](cli-configure-metadata.md)
+ [AWS CLI에서 외부 프로세스를 통해 자격 증명 소싱](cli-configure-sourcing-external.md)

# 콘솔 자격 증명을 사용하여 AWS 로컬 개발을 위해 로그인
<a name="cli-configure-sign-in"></a>

기존 AWS Management Console 로그인 자격 증명을 사용하여 AWS 서비스에 프로그래밍 방식으로 액세스할 수 있습니다. 브라우저 기반 인증 흐름 후 AWS는 AWS CLI, AWS Tools for PowerShell 및 AWS SDK와 같은 로컬 개발 도구에서 작동하는 임시 자격 증명을 생성합니다. 특히 장기 액세스 키를 관리하는 것보다 대화형 인증을 선호하는 경우에 이 기능은 AWS CLI 자격 증명을 구성하고 관리하는 프로세스를 간소화합니다.

이 프로세스를 사용하면 초기 계정 설정 중에 생성된 루트 자격 증명, IAM 사용자 또는 자격 증명 공급자의 페더레이션 자격 증명을 사용하여 인증할 수 있으며 AWS CLI가 자동으로 임시 자격 증명을 관리합니다. 이 접근 방식은 장기 자격 증명을 로컬에 저장할 필요가 없으므로 보안이 강화됩니다.

`aws login` 명령을 실행하면 활성 콘솔 세션에서 선택하거나 브라우저 기반 인증 흐름을 통해 로그인할 수 있으며, 그러면 임시 자격 증명이 자동으로 생성됩니다. CLI는 최대 12시간 동안 이러한 자격 증명을 자동으로 새로 고칩니다.

구성이 완료되면 AWS CLI와 기타 AWS SDK 및 도구에서 세션을 사용할 수 있습니다.

**Topics**
+ [

## 사전 조건
](#cli-configure-sign-in-prerequisites)
+ [

## `aws login` 명령을 사용하여 AWS CLI에 로그인합니다.
](#cli-configure-sign-in-login-command)
+ [

## 프로필로 명령 실행
](#cli-configure-sign-in-with-profile)
+ [

## aws 로그아웃 명령을 사용하여 세션에서 로그아웃
](#cli-configure-sign-in-sign-out)
+ [

## 문제 해결
](#cli-configure-sign-in-troubleshooting)
+ [

## 관련 리소스
](#cli-configure-sign-in-resources)

## 사전 조건
<a name="cli-configure-sign-in-prerequisites"></a>
+ AWS CLI를 설치합니다. 자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md) 섹션을 참조하세요. `aws login` 명령을 사용하려면 최소 2.32.0 버전이 필요합니다.
+ 루트 사용자, IAM 사용자 또는 IAM과의 페더레이션을 통해 AWS Management Console에 로그인할 수 있는 액세스 권한. IAM Identity Center를 사용하는 경우 대신 [AWS CLI를 사용하여 IAM Identity Center 인증 구성](cli-configure-sso.md)로 이동합니다.
+ IAM 자격 증명에 적절한 권한이 있는지 확인합니다. [SignInLocalDevelopmentAccess](https://docs.aws.amazon.com/signin/latest/userguide/security-iam-awsmanpol.html) 관리형 정책을 IAM 사용자, 역할 또는 그룹에 연결합니다. 루트 사용자로 로그인하는 경우 추가 권한이 필요하지 않습니다.

## `aws login` 명령을 사용하여 AWS CLI에 로그인합니다.
<a name="cli-configure-sign-in-login-command"></a>

`aws login` 명령을 실행하여 기존 AWS Management Console 자격 증명을 사용하여 인증합니다. 이전에 프로필을 구성하지 않은 경우 추가 정보를 묻는 메시지가 표시됩니다. 로그인하거나 프로필을 구성하려면 다음 단계를 따르세요.

1. 원하는 터미널에서 `aws login` 명령을 실행합니다.

   ```
   $ aws login
   ```

   명명된 프로필에 로그인하거나 새 프로필을 생성하려면 `--profile` 옵션을 사용합니다.

   ```
   $ aws login --profile my-dev-profile
   ```
   + 새 프로필이거나 AWS 리전이 지정되지 않은 경우 AWS CLI가 리전을 제공하라는 메시지를 표시합니다.

     ```
     No AWS region has been configured. The AWS region is the geographic location of 
     your AWS resources. 
     
     If you've used AWS before and already have resources in your account, tell us 
     which region they were created in. If you haven't created resources in your account 
     before, you can pick the region closest to you: 
     https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. 
     You are able to change the region in the CLI at any time with the command 
     `aws configure set region NEW_REGION`.
     
     AWS Region [us-east-1]:
     ```
   + AWS CLI를 사용하는 디바이스에 브라우저가 없는 경우 `--remote` 옵션을 사용하여 브라우저 지원 디바이스에서 열 수 있는 URL을 제공할 수 있습니다.

     ```
     $ aws login --remote
     ```
**참고**  
동일 디바이스(`aws login`) 및 교차 디바이스(`aws login --remote`) 인증에 대한 액세스를 제어할 수 있습니다. 관련 IAM 정책에서 다음 리소스 ARN을 사용합니다.  
`arn:aws:signin:region:account-id:oauth2/public-client/localhost` - `aws login`을 사용한 동일 디바이스 인증에 이 ARN을 사용합니다.
`arn:aws:signin:region:account-id:oauth2/public-client/remote` - `aws login --remote`를 사용한 교차 디바이스 인증에 이 ARN을 사용합니다.

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

   ```
   Attempting to open the login page for `us-east-1` in your default browser. 
   If the browser does not open, use the following URL to complete your login:
   https://signin.us-east-1.amazonaws.com/authorize?<abbreviated>
   
   If you cannot connect to this URL, make sure that you have specified a valid region.
   ```
   + `--remote` 옵션을 사용한 경우 사용 중인 권한 부여 유형에 따라 로그인 프로세스를 수동으로 시작하는 지침이 표시됩니다. 표시되는 URL은 https://us-east-1.signin.amazonaws.com/authorize.로 시작하는 고유한 URL입니다. 브라우저 로그인을 완료한 후에는 결과 권한 부여 코드를 복사하여 CLI에 다시 붙여 넣어야 합니다.

     ```
     Browser will not be automatically opened.
     Please visit the following URL:
     https://region.signin.amazonaws.com/authorize?<abbreviated>
     
     Please enter the authorization code displayed in the browser:
     ```

1. 브라우저의 표시된 목록에서 사용할 자격 증명을 선택한 다음 터미널로 돌아갑니다.
   + 구성하려는 프로필에 새 세션과 일치하지 않으며 이전에 구성된 로그인 세션이 있는 경우 AWS CLI는 기존 프로필에 해당하는 세션을 전환하고 있는지 확인하라는 메시지를 표시합니다.

     ```
     Profile signin is already configured to use session arn:aws:iam::0123456789012:user/ReadOnly. 
     Do you want to overwrite it to use arn:aws:iam::0123456789012:user/Admin instead? (y/n):.
     ```

1. 최종 메시지는 완료된 프로파일 구성을 설명합니다. 이제 이 프로파일을 사용하여 자격 증명을 요청할 수 있습니다. `aws login` 명령을 사용하여 명령을 실행하는 데 필요한 보안 인증 정보를 요청하고 검색합니다.

   인증 토큰은 해결된 프로필에 기반한 파일 이름을 가진 `.aws/login/cache` 디렉터리 아래의 디스크에 캐시됩니다.

### 생성된 구성 파일
<a name="cli-configure-sign-in-generated-config"></a>

이 단계를 수행하면 다음과 같이 `config` 파일에 `default` 프로필이 생성됩니다.

```
[default]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1
```

## 프로필로 명령 실행
<a name="cli-configure-sign-in-with-profile"></a>

로그인한 후에는 자격 증명을 사용하여 연결된 프로필로 AWS 명령을 간접 호출할 수 있습니다. 다음 예제에서는 `default` 프로필을 사용하는 `get-caller-identity` 명령을 직접 호출합니다.

```
$ aws sts get-caller-identity
```

특정 세션에 로그인하려면 `--profile` 옵션을 사용합니다.

```
$ aws sts get-caller-identity --profile my-dev-profile
```

AWS CLI 및 SDK는 필요에 따라 15분마다 캐시된 자격 증명을 자동으로 새로 고칩니다. 전체 세션은 IAM 보안 주체의 설정된 세션 기간(최대 12시간)까지 유효하며, 이후에는 `aws login`을 다시 실행해야 합니다.

## aws 로그아웃 명령을 사용하여 세션에서 로그아웃
<a name="cli-configure-sign-in-sign-out"></a>

세션 사용을 마치면 자격 증명을 만료하거나 `aws logout` 명령을 실행하여 캐시된 자격 증명을 삭제할 수 있습니다. 명령줄 또는 `AWS_PROFILE` 환경 변수에 프로필이 지정되지 않은 경우 명령은 기본 프로필에서 로그아웃합니다. 다음 예제에서는 기본 프로필에서 로그아웃합니다.

```
$ aws logout
```

특정 세션에서 로그아웃하려면 `--profile` 옵션을 사용합니다.

```
$ aws logout --profile my-dev-profile
```

로그인 자격 증명을 사용하는 모든 프로필에서 로그아웃하려면 `--all` 옵션을 사용합니다.

```
$ aws logout --all
```

### 캐시된 자격 증명
<a name="cli-configure-sign-in-sharing-login-creds"></a>

임시 캐시된 자격 증명과 이를 새로 고치는 데 필요한 메타데이터는 기본적으로 `~/.aws/login/cache`(Linux 및 macOS) 또는 `%USERPROFILE%\.aws\login\cache`(Windows)에 저장됩니다.

단기 자격 증명 캐시를 대체 위치에 저장하려면 `AWS_LOGIN_CACHE_DIRECTORY` 환경 변수를 설정합니다.

#### 로그인 자격 증명을 프로세스 자격 증명으로 공유
<a name="cli-configure-sign-in-cached-credentials"></a>

이전 버전의 AWS SDK 또는 기타 개발 도구는 아직 콘솔 자격 증명을 지원하지 않을 수 있습니다. 차선책으로 프로세스 자격 증명 공급자 역할을 하도록 AWS CLI를 구성할 수 있습니다. CLI는 필요에 따라 자격 증명을 계속 새로 고치는 동시에 credentials\$1process 프로필을 사용하도록 구성된 도구와 해당 자격 증명을 공유합니다.

이 예제에서는 AWS CLI를 사용하여 프로필 로그인을 위해 먼저 로그인합니다.

```
$ aws login --profile signin
```

그런 다음 로그인 프로필을 가리키는 credentials\$1process 옵션을 사용하여 프로필을 수동으로 구성합니다. 이제 SDK 또는 도구가 프로세스 프로필을 사용하도록 구성하면 CLI를 간접 호출하여 로그인 프로필의 자격 증명을 공유할 수 있습니다.

```
[profile signin]
login_session = arn:aws:iam::0123456789012:user/username
region = us-east-1

[profile process] 
credential_process = aws configure export-credentials --profile signin --format process
region = us-east-1
```

## 문제 해결
<a name="cli-configure-sign-in-troubleshooting"></a>

이 페이지에는 AWS CLI용 콘솔 자격 증명을 사용하는 AWS 로컬 개발을 위해 로그인할 때 발생하는 문제를 해결하기 위한 권장 사항이 포함되어 있습니다.

**참고**  
AWS CLI를 사용하여 발생할 수 있는 다른 문제를 해결하려면 [AWS CLI에 대한 오류 문제 해결](cli-chap-troubleshooting.md) 섹션을 참조하세요.

### "aws login"을 사용한 후 ExpiredToken 또는 AccessDeniedException 오류 발생
<a name="expired-token-login-troubleshooting"></a>

지정된 프로필에 대해 `aws login`을 실행한 후 AWS CLI 명령을 실행할 때 만료되거나 잘못된 자격 증명 오류가 발생할 수 있습니다.

```
$ aws s3 ls

An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired.
```

**가능한 원인:** 해당 프로필에 기존 자격 증명과 새 로그인 자격 증명이 혼합되어 있습니다.

`aws configure list` 또는 `aws configure list --profile <profile name>`를 실행하여 CLI가 기본 또는 지정된 프로필에 대한 자격 증명을 확인하는 위치를 인쇄합니다.

TYPE 열이 로그인이 아닌 다른 열인 경우 대상 프로필에 다른 유형의 자격 증명이 여전히 설정되어 있음을 의미합니다.

이 예제에서는 홈 디렉터리의 공유 자격 증명 파일에서 자격 증명이 확인되고 있는데, 이는 로그인 자격 증명보다 우선합니다.

```
$  aws configure list
NAME       : VALUE                    : TYPE             : LOCATION
profile    : <not set>                : None             : None
access_key : ****************MPLE     : shared-credentials-file :
secret_key : ****************EKEY     : shared-credentials-file :
region     : us-east-1                : config-file      : ~/.aws/config
```

이를 해결하려면 대상 프로필의 구성 및 자격 증명 파일에서 기존 자격 증명을 수동으로 제거합니다. 이렇게 하면 `aws configure list`를 다시 실행할 때 로그인 자격 증명이 표시됩니다.

```
$  aws configure list
NAME       : VALUE                    : TYPE             : LOCATION
profile    : <not set>                : None             : None
access_key : ****************MPLE     : login            :
secret_key : ****************EKEY     : login            :
region     : us-east-1                : config-file      : ~/.aws/config
```

또는 `--debug` 옵션을 사용하면 CLI가 자격 증명을 확인하는 위치가 표시됩니다.

### "aws login"을 실행할 때 네트워크 액세스를 차단하는 방화벽
<a name="firewall-blocking-login-troubleshooting"></a>

`aws login` 실행 시 방화벽 소프트웨어에서 AWS CLI가 네트워크에 액세스하지 못하도록 하는 팝업 또는 메시지가 표시될 수 있습니다.

**가능한 원인:** 방화벽 또는 보안 소프트웨어로 인해 AWS CLI가 OAuth 콜백을 처리하는 데 사용되는 포트를 열 수 없습니다.

이 문제를 방지하려면 `--remote` 옵션을 대신 사용하세요. 그러면 OAuth 콜백을 사용하는 대신 권한 부여 코드를 복사하여 붙여넣으라는 메시지가 표시됩니다.

```
$ aws login --remote
```

## 관련 리소스
<a name="cli-configure-sign-in-resources"></a>

추가 리소스는 다음과 같습니다.
+ [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md)
+ [AWS CLI 버전 2 참조의 `aws login`](https://docs.aws.amazon.com/cli/latest/reference/)
+ [AWS CLI 버전 2 참조의 `aws logout`](https://docs.aws.amazon.com/cli/latest/reference/)

# AWS CLI를 사용하여 IAM Identity Center 인증 구성
<a name="cli-configure-sso"></a>

이 주제에서는 AWS CLI 명령을 실행하기 위한 자격 증명을 검색하기 위해 AWS IAM Identity Center으로 AWS CLI를 구성하는 방법(IAM Identity Center)에 대해 설명합니다. `config` 파일을 통해 AWS CLI 명령을 실행하기 위한 자격 증명을 얻기 위해 IAM Identity Center로 사용자를 인증하는 방법에는 크게 두 가지가 있습니다 
+ **(권장)** SSO 토큰 공급자 구성.
+ 새로 고칠 수 없는 레거시 구성.

계정 ID와 역할을 사용하지 않는 보유자 인증을 사용하는 방법에 대한 자세한 내용은 *Amazon CodeCatalyst 사용 설명서*의 [CodeCatalyst와 함께 AWS CLI 사용하도록 설정하기](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)를 참조하세요.

**참고**  
AWS CLI 명령과 함께 IAM Identity Center를 사용하는 안내 프로세스는 [튜토리얼: AWS CLI에서 IAM Identity Center를 사용하여 Amazon S3 명령 실행](cli-configure-sso-tutorial.md) 섹션을 참조하세요.

**주제**
+ [사전 조건](#cli-configure-sso-prereqs)
+ [`aws configure sso` 마법사를 사용하여 프로파일 구성](#cli-configure-sso-configure)
+ [`aws configure sso-session` 마법사를 사용하여 `sso-session` 섹션만 구성합니다.](#cli-configure-sso-session)
+ [`config` 파일을 사용한 수동 구성](#cli-configure-sso-manual)
+ [IAM Identity Center 세션에 로그인](#cli-configure-sso-login)
+ [IAM Identity Center 프로파일로 명령 실행](#cli-configure-sso-use)
+ [IAM Identity Center 세션 로그아웃](#cli-configure-sso-logout)
+ [문제 해결](#cli-configure-sso-tshoot)
+ [관련 리소스](#cli-configure-sso-resources)

## 사전 조건
<a name="cli-configure-sso-prereqs"></a>
+ AWS CLI 설치. 자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md) 섹션을 참조하세요.
+ 먼저 IAM ID 센터 내에서 SSO 인증에 액세스해야 합니다. AWS 보안 인증에 액세스하려면 다음 방법 중 하나를 선택합니다.

### IAM ID 센터를 통한 액세스 권한을 설정하지 않았습니다.
<a name="idc-access"></a>

*AWS IAM Identity Center 사용 설명서*의 [시작하기](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)에 나온 지침을 따릅니다. 이 프로세스는 IAM Identity Center를 활성화하고, 관리자 사용자를 생성하고, 적절한 최소 권한 세트를 추가합니다.

**참고**  
최소 권한을 적용하는 권한 세트를 생성합니다. 고용주가 이러한 목적으로 사용자 지정 권한 집합을 만든 경우가 아니라면 사전 정의된 `PowerUserAccess` 권한 집합을 사용하는 것이 좋습니다.

포털을 종료하고 다시 로그인하면 AWS 계정, 프로그래밍 방식 액세스 세부 정보, `Administrator` 또는 `PowerUserAccess` 옵션을 확인할 수 있습니다. SDK로 작업할 때 `PowerUserAccess`을 선택합니다.

### 이미 고용주가 관리하는 페더레이션 ID 공급자(예: Azure AD 또는 Okta)를 통해 AWS에 액세스할 수 있습니다.
<a name="federated-access"></a>

ID 공급업체의 포털을 통해 AWS에 로그인합니다. 클라우드 관리자가 사용자 `PowerUserAccess`(개발자)에게 권한을 부여한 경우 액세스 권한이 있는 AWS 계정와 권한 집합이 표시됩니다. 권한 집합 이름 옆에는 해당 권한 집합을 사용하여 수동으로 또는 프로그래밍 방식으로 계정에 액세스할 수 있는 옵션이 표시됩니다.

사용자 지정 구현으로 인해 사용 권한 집합 이름이 달라지는 등 다양한 경험이 발생할 수 있습니다. 어떤 권한 세트를 사용할지 확실하지 않은 경우 IT 팀에 문의하세요.

### 이미 고용주가 관리하는 AWS 액세스 포털을 통해 AWS에 접속할 수 있습니다.
<a name="accessportal-access"></a>

AWS 액세스 포털을 통해 AWS에 로그인합니다. 클라우드 관리자가 사용자 `PowerUserAccess`(개발자)에게 권한을 부여한 경우 액세스 권한이 있는 AWS 계정과 권한 집합이 표시됩니다. 권한 집합 이름 옆에는 해당 권한 집합을 사용하여 수동으로 또는 프로그래밍 방식으로 계정에 액세스할 수 있는 옵션이 표시됩니다.

### 이미 고용주가 관리하는 페더레이션된 사용자 지정 ID 공급업체를 통해 AWS에 액세스할 수 있습니다.
<a name="customfederated-access"></a>

IT 팀에 문의하세요.

IAM Identity Center에 대한 액세스 권한을 얻은 후에는다음을 수행하여 IAM Identity Center 정보를 수집합니다.

1. `aws configure sso`를 실행하는 데 필요한 `SSO Start URL` 및 `SSO Region` 값 수집

   1. AWS 액세스 포털에서 개발에 사용할 권한 세트를 선택하고 ****액세스 키 링크를 선택합니다.

   1. **자격 증명 가져오기** 대화 상자에서 운영 체제와 일치하는 탭을 선택합니다.

   1. **IAM Identity Center 자격 증명** 방법을 선택하여 `SSO Start URL` 및 `SSO Region` 값을 가져옵니다.

1. 또는 버전 2.22.0부터 시작 URL 대신 발급자 URL을 사용할 수 있습니다. 발급자 URL은 AWS IAM Identity Center 콘솔의 다음 위치 중 하나에 있습니다.
   + **대시보드** 페이지의 발급자 URL은 설정 요약에 있습니다.
   + **설정** 페이지의 발급자 URL은 **자격 증명 소스** 설정에 있습니다.

1. 등록할 범위 값에 대한 자세한 내용은 *IAM Identity Center 사용 설명서*의 [OAuth 2.0 액세스 범위](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)를 참조하세요.

## `aws configure sso` 마법사를 사용하여 프로파일 구성
<a name="cli-configure-sso-configure"></a>

**AWS CLI에 IAM Identity Center 프로파일을**

1. 원하는 터미널에서 `aws configure sso` 명령을 실행합니다.

------
#### [ (Recommended) IAM Identity Center ]

   세션 이름을 만들고, IAM Identity Center 시작 URL 또는 발급자 URL, IAM Identity Center 디렉터리를 호스팅하는 AWS 리전 및 등록 범위를 입력합니다.

   ```
   $ aws configure sso
   SSO session name (Recommended): my-sso
   SSO start URL [None]: https://my-sso-portal.awsapps.com/start
   SSO region [None]: us-east-1
   SSO registration scopes [None]: sso:account:access
   ```

   듀얼 스택 지원을 위해서는 듀얼 스택 SSO 시작 URL을 사용합니다.

   ```
   $ aws configure sso
   SSO session name (Recommended): my-sso
   SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
   SSO region [None]: us-east-1
   SSO registration scopes [None]: sso:account:access
   ```

   PKCE(Proof Key for Code Exchange) 권한 부여는 버전 **2.22.0**부터 AWS CLI에 기본적으로 사용되며 브라우저가 있는 디바이스에서 사용해야 합니다. 디바이스 권한 부여를 계속 사용하려면 `--use-device-code` 옵션을 추가합니다.

   ```
   $ aws configure sso --use-device-code
   ```

------
#### [ Legacy IAM Identity Center ]

   세션 이름을 건너뛰고 IAM Identity Center 시작 URL 및 Identity Center 디렉터리를 호스팅하는 AWS 리전을 입력합니다.

   ```
   $ aws configure sso
   SSO session name (Recommended):
   SSO start URL [None]: https://my-sso-portal.awsapps.com/start
   SSO region [None]:us-east-1
   ```

   듀얼 스택 지원이 필요한 경우:

   ```
   $ aws configure sso
   SSO session name (Recommended):
   SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
   SSO region [None]:us-east-1
   ```

------

1. AWS CLI는 IAM Identity Center 계정의 로그인 프로세스를 위해 기본 브라우저를 열려고 시도합니다. 이 과정에서 AWS CLI가 데이터에 액세스할 수 있도록 허용하라는 메시지가 표시될 수 있습니다. AWS CLI는 Python용 SDK를 기반으로 구축되므로 권한 메시지에는 `botocore` 이름의 변형이 포함될 수 있습니다.
   + **AWS CLI가 브라우저를 열 수 없는 경우** 사용 중인 권한 부여 유형에 따라 로그인 프로세스를 수동으로 시작하는 지침이 표시됩니다.

------
#### [ PKCE authorization ]

     PKCE(Proof Key for Code Exchange) 권한 부여는 버전 2.22.0부터 AWS CLI에 기본적으로 사용됩니다. 표시되는 URL은 다음으로 시작하는 고유한 URL입니다.
     + IPv4: *https://oidc.us-east-1.amazonaws.com/authorize*
     + 듀얼 스택: *https://oidc.us-east-1.api.aws/authorize*

     PKCE 권한 부여 URL은 로그인하는 디바이스와 동일한 디바이스에서 열어야 하며 브라우저가 있는 디바이스에 사용해야 합니다.

     ```
     Attempting to automatically open the SSO authorization page in your 
     default browser.
     If the browser does not open or you wish to use a different device to 
     authorize the request, open the following URL:
     
     https://oidc.us-east-1.amazonaws.com/authorize?<abbreviated>
     ```

------
#### [ Device authorization ]

     OAuth 2.0 디바이스 권한 부여는 2.22.0 이전 버전에 대해 AWS CLI에서 사용됩니다. `--use-device-code` 옵션을 사용하여 최신 버전에서 이 방법을 활성화할 수 있습니다.

     디바이스 권한 부여 URL은 로그인하는 디바이스와 동일한 디바이스에서 열 필요가 없으며 브라우저가 있거나 없는 디바이스에 사용할 수 있습니다. 엔드포인트 형식은 구성에 따라 다릅니다.
     + IPv4: *https://device.sso.us-west-2.amazonaws.com/*
     + 듀얼 스택: *https://device.sso.us-west-2.api.aws/*

     ```
     If the browser does not open or you wish to use a different device to 
     authorize this request, open the following URL:
     https://device.sso.us-west-2.amazonaws.com/
     
     Then enter the code:
     QCFK-N451
     ```

------

1. 표시된 목록에서 사용할 AWS 계정을 선택합니다. 계정을 하나만 사용할 수 있는 경우 AWS CLI는 자동으로 해당 계정을 선택하고 프롬프트를 건너뜁니다.

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

1. 표시된 목록에서 사용할 IAM 역할을 선택합니다. 사용 가능한 역할이 하나만 있는 경우 AWS CLI는 자동으로 해당 역할을 선택하고 프롬프트를 건너뜁니다.

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

1. [기본 출력 형식](cli-configure-files.md#cli-config-output), 명령을 보낼 [기본 AWS 리전](cli-configure-files.md#cli-config-region), [프로파일의 이름](cli-configure-files.md)을 지정합니다. `default`를 프로파일 이름으로 지정하면 이 프로파일이 기본 프로파일로 사용됩니다. 다음 예제에서 사용자는 프로파일의 이름, 기본 리전 및 기본 출력 형식을 입력합니다.

   ```
   Default client Region [None]: us-west-2<ENTER>
   CLI default output format (json if not specified) [None]: json<ENTER>
   Profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
   ```

1. 최종 메시지는 완료된 프로파일 구성을 설명합니다. 이제 이 프로파일을 사용하여 자격 증명을 요청할 수 있습니다. `aws sso login` 명령을 사용하여 명령을 실행하는 데 필요한 보안 인증 정보를 요청하고 검색합니다. 지침은 [IAM Identity Center 세션에 로그인](#cli-configure-sso-login) 섹션을 참조하세요.

### 생성된 구성 파일
<a name="cli-configure-sso-generated"></a>

이 단계를 수행하면 다음과 같이 `config` 파일에 `sso-session` 섹션과 이름이 지정된 프로파일이 생성됩니다.

------
#### [ IAM Identity Center ]

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

듀얼 스택 지원이 필요한 경우:

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_registration_scopes = sso:account:access
```

------
#### [ Legacy 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
```

듀얼 스택 지원이 필요한 경우:

```
[profile my-dev-profile]
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_region = us-east-1
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json
```

------

## `aws configure sso-session` 마법사를 사용하여 `sso-session` 섹션만 구성합니다.
<a name="cli-configure-sso-session"></a>

**참고**  
이 구성은 레거시 IAM Identity Center와 호환되지 않습니다.

이 `aws configure sso-session` 명령은 `~/.aws/config` 파일의 `sso-session` 섹션을 업데이트합니다. `aws configure sso-session` 명령을 실행하고 IAM Identity Center 시작 URL 또는 발급자 URL과 IAM Identity Center 디렉터리를 호스팅하는 AWS 리전을 제공합니다.

```
$ aws configure sso-session
SSO session name: my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

듀얼 스택 지원을 위해서는 듀얼 스택 SSO 시작 URL을 사용합니다.

```
$ aws configure sso-session
SSO session name: my-sso
SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

## `config` 파일을 사용한 수동 구성
<a name="cli-configure-sso-manual"></a>

IAM Identity Center 구성 정보는 `config` 파일에 저장되며 텍스트 편집기를 사용하여 편집할 수 있습니다. 명명된 프로파일에 IAM Identity Center 지원을 수동으로 추가하려면 `config` 파일에 키와 값을 추가해야 합니다.

### IAM Identity Center 구성 파일
<a name="cli-configure-sso-manual-config"></a>

`config` 파일의 `sso-session` 섹션은 SSO 액세스 토큰을 획득하기 위한 구성 변수를 그룹화하는 데 사용되며, 이를 사용하여 AWS 보안 인증 정보를 얻을 수 있습니다. 다음 설정이 사용됩니다.
+ **(필수)** `sso\$1start\$1url`
+ **(필수)** `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

`sso-session` 섹션을 정의하고 프로파일에 연결합니다. `sso_region` 및 `sso_start_url` 설정은 `sso-session` 섹션 내에 설정해야 합니다. 일반적으로 SDK가 SSO 보안 인증 정보를 요청할 수 있도록 `profile` 섹션에서 `sso_account_id` 및 `sso_role_name`을 설정해야 합니다.

다음 예제는 SSO 보안 인증 정보를 요청하도록 SDK를 구성하고 자동 토큰 새로 고침을 지원합니다.

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
```

듀얼 스택 지원을 위해서는 듀얼 스택 SSO 시작 URL 형식을 사용합니다.

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
```

이는 또한 여러 프로필에서 `sso-session` 구성을 재사용하도록 허용합니다.

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[profile prod]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole2

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
```

듀얼 스택 지원을 위해서는 듀얼 스택 SSO 시작 URL 형식을 사용합니다.

```
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[profile prod]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole2

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
```

그러나 `sso_account_id` 및 `sso_role_name`은 SSO 토큰 구성의 모든 시나리오에 필수적이지는 않습니다. 애플리케이션이 보유자 인증 정보를 지원하는 AWS 서비스만 사용하는 경우 기존 AWS 보안 인증 정보는 필요하지 않습니다. 보유자 인증은 보유자 토큰이라는 보안 토큰을 사용하는 HTTP 인증 체계입니다. 이 시나리오에서는 `sso_account_id` 및 `sso_role_name`은 필수가 아닙니다. 해당 AWS 서비스가 보유자 토큰 인증을 지원하는지 확인하려면 해당 서비스의 개별 가이드를 참조하세요.

또한 등록 범위는 `sso-session`의 일부로 구성할 수 있습니다. 범위는 애플리케이션의 사용자 계정 액세스를 제한하는 OAuth 2.0의 메커니즘입니다. 애플리케이션은 하나 이상의 범위를 요청할 수 있으며 애플리케이션에 발급되는 액세스 토큰은 부여된 범위로 제한됩니다. 이러한 범위는 등록된 OIDC 클라이언트에 대해 인증받기 위해 요청된 권한과 클라이언트가 검색한 액세스 토큰을 정의합니다. 다음 예제는 계정/역할 목록에 대한 액세스 권한을 제공하도록 `sso_registration_scopes`를 설정합니다.

```
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

듀얼 스택 지원이 필요한 경우:

```
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_registration_scopes = sso:account:access
```

인증 토큰은 세션 이름을 기반으로 하는 파일 이름을 사용하여 `sso/cache` 디렉터리 아래의 디스크에 캐시됩니다.

### 레거시 IAM Identity Center 구성 파일
<a name="cli-configure-sso-manual-legacy"></a>

**참고**  
새로 고칠 수 없는 기존 구성을 사용하는 자동 토큰 새로 고침은 지원되지 않습니다. SSO 토큰 구성을 사용하는 것이 좋습니다.

명명된 프로파일에 IAM Identity Center 지원을 수동으로 추가하려면 `config` 파일의 프로파일 정의에 다음 키와 값을 추가해야 합니다.
+ `sso\$1start\$1url`
+ `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`

`.aws/config` 파일에 유효한 다른 키와 값을 포함할 수 있습니다. 다음 예시는 IAM Identity Center 프로파일입니다.

```
[profile my-sso-profile]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-west-2
sso_account_id = 111122223333
sso_role_name = SSOReadOnlyRole
region = us-west-2
output = json
```

듀얼 스택 지원이 필요한 경우:

```
[profile my-sso-profile]
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_region = us-west-2
sso_account_id = 111122223333
sso_role_name = SSOReadOnlyRole
region = us-west-2
output = json
```

명령을 실행하려면 먼저 [IAM Identity Center 세션에 로그인](#cli-configure-sso-login)을 사용하여 임시 자격 증명을 요청하고 검색해야 합니다.

`config` 및 `credentials` 파일에 대한 자세한 내용은 [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md) 섹션을 참조하세요.

## IAM Identity Center 세션에 로그인
<a name="cli-configure-sso-login"></a>

**참고**  
로그인 과정에서 데이터 AWS CLI 액세스를 허용하라는 메시지가 표시될 수 있습니다. AWS CLI는 Python용 SDK를 기반으로 구축되므로 권한 메시지에는 `botocore` 이름의 변형이 포함될 수 있습니다.

IAM Identity Center 자격 증명 세트를 검색하고 캐시하려면 AWS CLI에서 다음 명령을 실행하여 기본 브라우저를 열고 IAM Identity Center 로그인을 확인합니다.

```
$ aws sso login --profile my-dev-profile
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 세션 자격 증명이 캐시되고 AWS CLI는 이를 사용하여 프로파일에 지정된 IAM 역할에 대한 AWS 자격 증명을 안전하게 검색합니다.

### AWS CLI가 브라우저를 열 수 없는 경우
<a name="cli-configure-sso-login-browser"></a>

AWS CLI가 브라우저를 자동으로 열 수 없는 경우 사용 중인 권한 부여 유형에 따라 로그인 프로세스를 수동으로 시작하는 지침이 표시됩니다.

------
#### [ PKCE authorization ]

PKCE(Proof Key for Code Exchange) 권한 부여는 버전 2.22.0부터 AWS CLI에 기본적으로 사용됩니다. 표시되는 URL은 다음으로 시작하는 고유한 URL입니다.
+ IPv4: *https://oidc.us-east-1.amazonaws.com/authorize*
+ 듀얼 스택: *https://oidc.us-east-1.api.aws/authorize*

PKCE 권한 부여 URL은 로그인하는 디바이스와 동일한 디바이스에서 열어야 하며 브라우저가 있는 디바이스에 사용해야 합니다.

```
Attempting to automatically open the SSO authorization page in your 
default browser.
If the browser does not open or you wish to use a different device to 
authorize the request, open the following URL:

https://oidc.us-east-1.amazonaws.com/authorize?<abbreviated>
```

------
#### [ Device authorization ]

OAuth 2.0 디바이스 권한 부여는 2.22.0 이전 버전에 대해 AWS CLI에서 사용됩니다. `--use-device-code` 옵션을 사용하여 최신 버전에서 이 방법을 활성화할 수 있습니다.

디바이스 권한 부여 URL은 로그인하는 디바이스와 동일한 디바이스에서 열 필요가 없으며 브라우저가 있거나 없는 디바이스에 사용할 수 있습니다.

```
If the browser does not open or you wish to use a different device to 
authorize this request, open the following URL:
https://device.sso.us-west-2.amazonaws.com/

Then enter the code:
QCFK-N451
```

------

`aws sso login` 명령의 `--sso-session` 파라미터를 사용하여 로그인할 때 사용할 `sso-session` 프로필을 지정할 수도 있습니다. 레거시 IAM Identity Center에서는 `sso-session` 옵션을 사용할 수 없습니다.

```
$ aws sso login --sso-session my-dev-session
```

버전 2.22.0부터 PKCE 권한 부여가 기본값입니다. 로그인에 디바이스 권한 부여를 사용하려면 `--use-device-code` 옵션을 추가합니다.

```
$ aws sso login --profile my-dev-profile --use-device-code
```

인증 토큰은 `sso_start_url` 기반한 파일 이름을 가진 `~/.aws/sso/cache` 디렉터리 아래의 디스크에 캐시됩니다.

## IAM Identity Center 프로파일로 명령 실행
<a name="cli-configure-sso-use"></a>

로그인한 후에는 자격 증명을 사용하여 연결된 명명된 프로파일로 AWS CLI 명령을 호출할 수 있습니다. 다음 예시에서는 프로파일을 사용하는 명령을 보여줍니다.

```
$ aws sts get-caller-identity --profile my-dev-profile
```

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

## IAM Identity Center 세션 로그아웃
<a name="cli-configure-sso-logout"></a>

IAM Identity Center 프로파일 사용을 마치면 자격 증명을 만료하거나 다음 명령을 실행하여 캐시된 자격 증명을 삭제할 수 있습니다.

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

## 문제 해결
<a name="cli-configure-sso-tshoot"></a>

AWS CLI를 사용하는 데 문제가 발생할 경우 [AWS CLI에 대한 오류 문제 해결](cli-chap-troubleshooting.md)에 나온 문제 해결 단계를 참조하세요.

## 관련 리소스
<a name="cli-configure-sso-resources"></a>

추가 리소스는 다음과 같습니다.
+ [AWS CLI의 AWS IAM Identity Center 개념](cli-configure-sso-concepts.md)
+ [튜토리얼: AWS CLI에서 IAM Identity Center를 사용하여 Amazon S3 명령 실행](cli-configure-sso-tutorial.md)
+ [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md)
+ [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/sso/login.html](https://docs.aws.amazon.com/cli/latest/reference/sso/login.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html)
+ *Amazon CodeCatalyst 사용 설명서*의 [Setting up to use the AWS CLI with CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)
+ *IAM Identity Center 사용 설명서*의 [OAuth 2.0 액세스 범위](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept) 
+ *IAM Identity Center 사용 설명서*의 [시작하기 튜토리얼](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)

# AWS CLI의 AWS IAM Identity Center 개념
<a name="cli-configure-sso-concepts"></a>

이 주제에서는 AWS IAM Identity Center(IAM Identity Center)의 주요 개념에 대해 설명합니다. IAM Identity Center는 기존 ID 제공업체(idP)와 통합하여 여러 AWS 계정, 애플리케이션, SDK 및 도구에서 사용자 액세스 관리를 간소화하는 클라우드 기반 IAM 서비스입니다. 중앙 집중식 사용자 포털을 통해 안전한 AWS Single Sign-On(SSO), 권한 관리 및 감사를 지원하여 조직의 ID 및 액세스 거버넌스를 간소화할 수 있습니다.

**Topics**
+ [

## IAM Identity Center 정의
](#cli-configure-sso-concepts-what)
+ [

## 용어
](#cli-configure-sso-terms)
+ [

## IAM Identity Center 동기화 작동 방식
](#cli-configure-sso-concepts-process)
+ [

## 추가 리소스
](#cli-configure-sso-concepts-resources)

## IAM Identity Center 정의
<a name="cli-configure-sso-concepts-what"></a>

IAM Identity Center는 여러 AWS 계정 계정 및 비즈니스 애플리케이션에 대한 액세스를 중앙에서 관리할 수 있는 클라우드 기반 IAM(ID 및 액세스 관리) 서비스입니다.

권한이 부여된 사용자가 기존 기업 자격 증명을 사용하여 권한이 부여된 AWS 계정 계정 및 애플리케이션에 액세스할 수 있는 사용자 포털을 제공합니다. 이를 통해 조직은 일관된 보안 정책을 시행하고 사용자 액세스 관리를 간소화할 수 있습니다.

사용하는 IdP와 관계없이 IAM Identity Center는 이러한 구별을 추상화합니다. 예를 들어 [The Next Evolution in IAM Identity Center](https://aws.amazon.com/blogs/aws/the-next-evolution-in-aws-single-sign-on/) 블로그 문서에 설명된 대로 Microsoft Azure AD를 연결할 수 있습니다.

**참고**  
계정 ID와 역할을 사용하지 않는 보유자 인증을 사용하는 방법에 대한 자세한 내용은 *Amazon CodeCatalyst 사용 설명서*의 [CodeCatalyst와 함께 AWS CLI 사용하도록 설정하기](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)를 참조하세요.

## 용어
<a name="cli-configure-sso-terms"></a>

IAM Identity Center를 사용할 때 일반적으로 사용하는 용어는 다음과 같습니다.

**ID 제공업체(idP)**  
IAM Identity Center, Microsoft Azure AD, Okta 또는 자체 기업 디렉터리 서비스와 같은 ID 관리 시스템입니다.

**AWS IAM Identity Center**  
IAM Identity Center는 AWS 소유 idP 서비스입니다. 이전에는 AWS Single Sign-On으로 알려진 SDK 및 도구는 이전 버전과의 호환성을 위해 `sso` API 네임스페이스를 유지합니다. 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [IAM Identity Center 이름 변경](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed)을 참조하세요.

**AWS 액세스 포털 URL, SSO 시작 URL, 시작 URL**  
승인된 AWS 계정, 서비스 및 리소스에 액세스하기 위한 조직의 고유한 IAM Identity Center URL입니다.

**발급자 URL**  
승인된 AWS 계정, 서비스 및 리소스에 액세스하기 위한 조직의 고유한 IAM Identity Center 발급자 URL입니다. AWS CLI의 버전 2.22.0부터 발급자 URL을 시작 URL과 교환하여 사용할 수 있습니다.

**연동**  
Single Sign-On(SSO)을 활성화하기 위해 IAM Identity Center와 ID 제공업체 간에 신뢰를 구축하는 프로세스입니다.

**AWS 계정**  
AWS IAM Identity Center을 통해 사용자에게 액세스 권한을 제공하는 AWS 계정입니다

**권한 세트, AWS 자격 증명, 자격 증명, sigv4 자격 증명**  
AWS 서비스에 대한 액세스 권한을 부여하기 위해 사용자 또는 그룹에 할당할 수 있는 사전 정의된 권한 모음입니다.

**등록 범위, 액세스 범위, 범위**  
범위는 애플리케이션의 사용자 계정 액세스를 제한하는 OAuth 2.0의 메커니즘입니다. 애플리케이션은 하나 이상의 범위를 요청할 수 있으며 애플리케이션에 발급되는 액세스 토큰은 부여된 범위로 제한됩니다. 범위에 대한 자세한 내용은 *IAM Identity Center 사용 설명서*의 [액세스 범위](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept) 섹션을 참조하세요.

**토큰, 토큰 새로 고침, 액세스 토큰**  
토큰은 인증 시 발급되는 임시 보안 자격 증명입니다. 이 토큰에는 사용자의 신원 및 부여된 권한에 대한 정보가 포함되어 있습니다.  
IAM Identity Center 포털을 통해 AWS 리소스 또는 애플리케이션에 액세스하면 인증 및 권한 부여를 위해 토큰이 AWS에 제공됩니다. 이를 통해 AWS는 사용자의 신원을 확인하고 요청된 작업을 수행하는 데 필요한 권한이 있는지 확인할 수 있습니다.  
인증 토큰은 세션 이름을 기반으로 하는 JSON 파일 이름을 사용하여 `~/.aws/sso/cache` 디렉터리 아래의 디스크에 캐시됩니다.

**세션**  
IAM Identity Center 세션은 사용자가 인증되고 AWS 리소스 또는 애플리케이션에 액세스할 수 있는 권한이 부여된 기간을 말합니다. 사용자가 IAM Identity Center 포털에 로그인하면 세션이 설정되고 사용자 토큰은 지정된 기간 동안 유효합니다. 세션 기간 설정에 대한 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [세션 기간 설정](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)을 참조하세요.  
세션 중에는 세션이 활성 상태로 유지되는 한 재인증할 필요 없이 다른 AWS 계정과 애플리케이션 사이를 이동할 수 있습니다. 세션이 만료되면 다시 로그인하여 액세스 권한을 갱신합니다.  
IAM Identity Center 세션은 원활한 사용자 경험을 제공하는 동시에 사용자 액세스 자격 증명의 유효성을 제한하여 보안 모범 사례를 시행하는 데 도움이 됩니다.

**PKCE, PKCE, PKCE(Proof Key for Code Exchange)가 포함된 권한 부여 코드 부여**  
버전 2.22.0부터 PKCE(Proof Key for Code Exchange)는 브라우저가 있는 디바이스에 대한 OAuth 2.0 인증 권한 부여 흐름입니다. PKCE는 웹 브라우저를 사용하여 데스크톱 및 모바일 디바이스에서 AWS 리소스에 액세스하도록 인증하고 동의를 얻는 간단하고 안전한 방법입니다. 이는 기본 권한 부여 동작입니다. PKCE에 대한 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [PKCE를 사용한 권한 부여 코드 부여](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#auth-code-grant-pkce)를 참조하세요.

**디바이스 인증 권한 허용**  
웹 브라우저가 있거나 없는 디바이스에 대한 OAuth 2.0 인증 권한 부여 흐름입니다. 세션 기간 설정에 대한 자세한 내용은 *AWS IAM Identity Center 사용 설명서*의 [디바이스 권한 부여](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#device-auth-grant)를 참조하세요.

## IAM Identity Center 동기화 작동 방식
<a name="cli-configure-sso-concepts-process"></a>

IAM Identity Center는 조직의 ID 제공업체(예: IAM Identity Center, Microsoft Azure AD 또는 Okta)와 통합됩니다. 사용자는 이 ID 제공업체에 대해 인증하고, IAM Identity Center는 해당 ID를 사용자의 AWS 환경 내의 적절한 권한 및 액세스에 매핑합니다.

다음 IAM Identity Center 워크플로에서는 이미 IAM Identity Center를 사용하도록 AWS CLI를 구성했다고 가정합니다.

1. 원하는 터미널에서 `aws sso login` 명령을 실행합니다.

1. AWS 액세스 포털에 로그인하여 새 세션을 시작합니다.
   + 새 세션을 시작하면 새로 고침 토큰과 캐시된 액세스 토큰을 받습니다.
   + 이미 활성 세션이 있는 경우 기존 세션이 재사용되며 기존 세션이 만료되면 만료됩니다.

1. `config` 파일에 설정한 프로파일에 따라 IAM Identity Center는 적절한 권한 세트를 가정하여 관련 AWS 계정 및 애플리케이션에 대한 액세스 권한을 부여합니다.

1. AWS CLI, SDK 및 도구는 해당 세션이 만료될 때까지 가정된 IAM 역할을 사용하여 Amazon S3 버킷 생성 등의 호출을 수행합니다.

1. IAM Identity Center의 액세스 토큰은 매시간 확인되며 새로 고침 토큰을 사용하여 자동으로 새로 고쳐집니다.
   + 액세스 토큰이 만료된 경우 SDK 또는 도구는 새로 고침 토큰을 사용하여 새 액세스 토큰을 가져옵니다. 그런 다음 이러한 토큰의 세션 기간을 비교하고 새로 고침 토큰이 만료되지 않은 경우 IAM Identity Center에서 새 액세스 토큰을 제공합니다.
   + 새로 고침 토큰이 만료된 경우 새 액세스 토큰이 제공되지 않으며 세션이 종료된 것입니다.

1. 세션은 새로 고침 토큰이 만료된 후 또는 `aws sso logout` 명령을 사용하여 수동으로 로그아웃하면 종료됩니다. 캐시된 자격 증명이 제거됩니다. IAM Identity Center를 사용하여 서비스에 계속 액세스하려면 `aws sso login` 명령을 사용하여 새 세션을 시작해야 합니다.

## 추가 리소스
<a name="cli-configure-sso-concepts-resources"></a>

추가 리소스는 다음과 같습니다.
+ [AWS CLI를 사용하여 IAM Identity Center 인증 구성](cli-configure-sso.md)
+ [튜토리얼: AWS CLI에서 IAM Identity Center를 사용하여 Amazon S3 명령 실행](cli-configure-sso-tutorial.md)
+ [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md)
+ [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/sso/login.html](https://docs.aws.amazon.com/cli/latest/reference/sso/login.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html)
+ *Amazon CodeCatalyst 사용 설명서*의 [Setting up to use the AWS CLI with CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)
+ *AWS IAM Identity Center 사용 설명서*의 [IAM Identity Center 이름 바꾸기](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html#renamed)
+ *IAM Identity Center 사용 설명서*의 [OAuth 2.0 액세스 범위](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept) 
+ *AWS IAM Identity Center 사용 설명서*의 [세션 기간 설정](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)
+ *IAM Identity Center 사용 설명서*의 [시작하기 튜토리얼](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)

# 튜토리얼: AWS CLI에서 IAM Identity Center를 사용하여 Amazon S3 명령 실행
<a name="cli-configure-sso-tutorial"></a>

이 주제에서는 Amazon Simple Storage Service(Amazon S3)에 대한 AWS Command Line Interface(AWS CLI) 명령을 실행할 자격 증명을 검색하기 위해 현재 AWS IAM Identity Center(IAM Identity Center)로 사용자를 인증하도록 AWS CLI를 구성하는 방법에 대해 설명합니다.

**Topics**
+ [

## 1단계: IAM Identity Center에서 인증
](#cli-configure-sso-tutorial-authentication)
+ [

## 2단계: IAM Identity Center 정보 수집
](#cli-configure-sso-tutorial-gather)
+ [

## 3단계: Amazon S3 버킷 생성
](#cli-configure-sso-tutorial-buckets)
+ [

## 4단계: AWS CLI 설치
](#cli-configure-sso-tutorial-install)
+ [

## 5단계: AWS CLI 프로파일 구성
](#cli-configure-sso-tutorial-configure)
+ [

## 6단계: IAM Identity Center에 로그인
](#cli-configure-sso-tutorial-login.title)
+ [

## 7단계: Amazon S3 명령 실행
](#cli-configure-sso-tutorial-commands)
+ [

## 8단계: IAM Identity Center에서 로그아웃
](#cli-configure-sso-tutorial-logout)
+ [

## 9단계: 리소스 정리
](#cli-configure-sso-tutorial-cleanup)
+ [

## 문제 해결
](#cli-configure-sso-tutorial-tshoot)
+ [

## 추가 리소스
](#cli-configure-sso-tutorial-resources.title)

## 1단계: IAM Identity Center에서 인증
<a name="cli-configure-sso-tutorial-authentication"></a>

IAM Identity Center 내에서 SSO 인증에 대한 액세스 권한을 얻습니다. 사용자 AWS 보안 인증에 액세스 할 방법 하나를 다음 중에서 선택합니다.

### IAM ID 센터를 통한 액세스 권한을 설정하지 않았습니다.
<a name="idc-access"></a>

*AWS IAM Identity Center 사용 설명서*의 [시작하기](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)에 나온 지침을 따릅니다. 이 프로세스는 IAM Identity Center를 활성화하고, 관리자 사용자를 생성하고, 적절한 최소 권한 세트를 추가합니다.

**참고**  
최소 권한을 적용하는 권한 세트를 생성합니다. 고용주가 이러한 목적으로 사용자 지정 권한 집합을 만든 경우가 아니라면 사전 정의된 `PowerUserAccess` 권한 집합을 사용하는 것이 좋습니다.

포털을 종료하고 다시 로그인하면 AWS 계정, 프로그래밍 방식 액세스 세부 정보, `Administrator` 또는 `PowerUserAccess` 옵션을 확인할 수 있습니다. SDK로 작업할 때 `PowerUserAccess`을 선택합니다.

### 이미 고용주가 관리하는 페더레이션 ID 공급자(예: Azure AD 또는 Okta)를 통해 AWS에 액세스할 수 있습니다.
<a name="federated-access"></a>

ID 공급업체의 포털을 통해 AWS에 로그인합니다. 클라우드 관리자가 사용자 `PowerUserAccess`(개발자)에게 권한을 부여한 경우 액세스 권한이 있는 AWS 계정와 권한 집합이 표시됩니다. 권한 집합 이름 옆에는 해당 권한 집합을 사용하여 수동으로 또는 프로그래밍 방식으로 계정에 액세스할 수 있는 옵션이 표시됩니다.

사용자 지정 구현으로 인해 사용 권한 집합 이름이 달라지는 등 다양한 경험이 발생할 수 있습니다. 어떤 권한 세트를 사용할지 확실하지 않은 경우 IT 팀에 문의하세요.

### 이미 고용주가 관리하는 AWS 액세스 포털을 통해 AWS에 접속할 수 있습니다.
<a name="accessportal-access"></a>

AWS 액세스 포털을 통해 AWS에 로그인합니다. 클라우드 관리자가 사용자 `PowerUserAccess`(개발자)에게 권한을 부여한 경우 액세스 권한이 있는 AWS 계정과 권한 집합이 표시됩니다. 권한 집합 이름 옆에는 해당 권한 집합을 사용하여 수동으로 또는 프로그래밍 방식으로 계정에 액세스할 수 있는 옵션이 표시됩니다.

### 이미 고용주가 관리하는 페더레이션된 사용자 지정 ID 공급업체를 통해 AWS에 액세스할 수 있습니다.
<a name="customfederated-access"></a>

IT 팀에 문의하세요.

## 2단계: IAM Identity Center 정보 수집
<a name="cli-configure-sso-tutorial-gather"></a>

AWS에 대한 액세스 권한을 얻은 후에는다음을 수행하여 IAM Identity Center 정보를 수집합니다.

1. `aws configure sso`를 실행하는 데 필요한 `SSO Start URL` 및 `SSO Region` 값 수집

   1. AWS 액세스 포털에서 개발에 사용할 권한 세트를 선택하고 ****액세스 키 링크를 선택합니다.

   1. **자격 증명 가져오기** 대화 상자에서 운영 체제와 일치하는 탭을 선택합니다.

   1. **IAM Identity Center 자격 증명** 방법을 선택하여 `SSO Start URL` 및 `SSO Region` 값을 가져옵니다.

1. 또는 버전 2.22.0부터 시작 URL 대신 새 발급자 URL을 사용할 수 있습니다. 발급자 URL은 AWS IAM Identity Center 콘솔의 다음 위치 중 하나에 있습니다.
   + **대시보드** 페이지의 발급자 URL은 설정 요약에 있습니다.
   + **설정** 페이지의 발급자 URL은 **자격 증명 소스** 설정에 있습니다.

1. 등록할 범위 값에 대한 자세한 내용은 *IAM Identity Center 사용 설명서*의 [OAuth 2.0 액세스 범위](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)를 참조하세요.

## 3단계: Amazon S3 버킷 생성
<a name="cli-configure-sso-tutorial-buckets"></a>

AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

이 튜토리얼에서는 나중에 목록에서 검색할 버킷을 몇 개 만들어 봅니다.

## 4단계: AWS CLI 설치
<a name="cli-configure-sso-tutorial-install"></a>

운영 체제별 지침에 따라 CLI를 설치합니다. 자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md) 섹션을 참조하세요.

설치가 완료되면 원하는 터미널을 열고 다음 명령을 실행하여 설치를 확인할 수 있습니다. 설치된 AWS CLI 버전이 표시되어야 합니다.

```
$ aws --version
```

## 5단계: AWS CLI 프로파일 구성
<a name="cli-configure-sso-tutorial-configure"></a>

다음 방법 중 하나를 사용하여 프로파일 구성

### `aws configure sso` 마법사를 사용하여 프로파일 구성
<a name="li-configure-sso-tutorial-configure-wizard"></a>

`config` 파일의 `sso-session` 섹션은 SSO 액세스 토큰을 획득하기 위한 구성 변수를 그룹화하는 데 사용되며, 이를 사용하여 AWS 보안 인증 정보를 얻을 수 있습니다. 다음 설정이 사용됩니다.
+ **(필수)** `sso\$1start\$1url`
+ **(필수)** `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

`sso-session` 섹션을 정의하고 프로파일에 연결합니다. `sso_region` 및 `sso_start_url` 설정은 `sso-session` 섹션 내에 설정해야 합니다. 일반적으로 SDK가 SSO 보안 인증 정보를 요청할 수 있도록 `profile` 섹션에서 `sso_account_id` 및 `sso_role_name`을 설정해야 합니다.

다음 예제는 SSO 보안 인증 정보를 요청하도록 SDK를 구성하고 자동 토큰 새로 고침을 지원합니다.

```
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

듀얼 스택 지원을 위해 듀얼 스택 SSO 시작 URL 형식을 사용할 수 있습니다.

```
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

PKCE(Proof Key for Code Exchange) 권한 부여는 버전 2.22.0부터 AWS CLI에 기본적으로 사용되며 브라우저가 있는 디바이스에서 사용해야 합니다. 디바이스 권한 부여를 계속 사용하려면 `--use-device-code` 옵션을 추가합니다.

```
$ aws configure sso --use-device-code
```

### `config` 파일을 사용한 수동 구성
<a name="cli-configure-sso-tutorial-configure-manual"></a>

`config` 파일의 `sso-session` 섹션은 SSO 액세스 토큰을 획득하기 위한 구성 변수를 그룹화하는 데 사용되며, 이를 사용하여 AWS 보안 인증 정보를 얻을 수 있습니다. 다음 설정이 사용됩니다.
+ **(필수)** `sso\$1start\$1url`
+ **(필수)** `sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

`sso-session` 섹션을 정의하고 프로파일에 연결합니다. `sso-session` 섹션 내에서 `sso_region` 및 `sso_start_url`을 설정해야 합니다. 일반적으로 SDK가 SSO 보안 인증 정보를 요청할 수 있도록 `profile` 섹션에서 `sso_account_id` 및 `sso_role_name`을 설정해야 합니다.

다음 예제는 SSO 보안 인증 정보를 요청하도록 SDK를 구성하고 자동 토큰 새로 고침을 지원합니다.

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

듀얼 스택 지원을 위해서는 듀얼 스택 SSO 시작 URL 형식을 사용합니다.

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_registration_scopes = sso:account:access
```

인증 토큰은 세션 이름을 기반으로 하는 파일 이름을 사용하여 `~/.aws/sso/cache` 디렉터리 아래의 디스크에 캐시됩니다.

## 6단계: IAM Identity Center에 로그인
<a name="cli-configure-sso-tutorial-login.title"></a>

**참고**  
로그인 과정에서 데이터 AWS CLI 액세스를 허용하라는 메시지가 표시될 수 있습니다. AWS CLI는 Python용 SDK를 기반으로 구축되므로 권한 메시지에는 `botocore` 이름의 변형이 포함될 수 있습니다.

IAM Identity Center 자격 증명을 검색하고 캐시하려면 AWS CLI에서 다음 명령을 실행하여 기본 브라우저를 열고 IAM Identity Center 로그인을 확인합니다.

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

버전 2.22.0부터 PKCE 권한 부여가 기본값입니다. 로그인에 디바이스 권한 부여를 사용하려면 `--use-device-code` 옵션을 추가합니다.

```
$ aws sso login --profile my-dev-profile --use-device-code
```

## 7단계: Amazon S3 명령 실행
<a name="cli-configure-sso-tutorial-commands"></a>

이전에 생성한 버킷을 나열하려면 [https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) 명령을 사용합니다. 다음 예제에서는 모든 Amazon S3 버킷을 나열합니다.

```
$ aws s3 ls
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2
```

## 8단계: IAM Identity Center에서 로그아웃
<a name="cli-configure-sso-tutorial-logout"></a>

IAM Identity Center 프로파일 사용을 마쳤으면 다음 명령을 실행하여 캐시된 자격 증명을 삭제합니다.

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

## 9단계: 리소스 정리
<a name="cli-configure-sso-tutorial-cleanup"></a>

이 튜토리얼을 완료한 후에는 Amazon S3 버킷을 포함하여 이 튜토리얼에서 만든 리소스 중 더 이상 필요하지 않은 리소스를 모두 정리합니다.

## 문제 해결
<a name="cli-configure-sso-tutorial-tshoot"></a>

AWS CLI를 사용하는 데 문제가 발생할 경우 [AWS CLI에 대한 오류 문제 해결](cli-chap-troubleshooting.md)에 나온 일반적인 문제 해결 단계를 참조하세요.

## 추가 리소스
<a name="cli-configure-sso-tutorial-resources.title"></a>

추가 리소스는 다음과 같습니다.
+ [AWS CLI의 AWS IAM Identity Center 개념](cli-configure-sso-concepts.md)
+ [AWS CLI를 사용하여 IAM Identity Center 인증 구성](cli-configure-sso.md)
+ [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md)
+ [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/sso/login.html](https://docs.aws.amazon.com/cli/latest/reference/sso/login.html)
+ **AWS CLI 버전 2 참조의 [https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html)
+ *Amazon CodeCatalyst 사용 설명서*의 [Setting up to use the AWS CLI with CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)
+ *IAM Identity Center 사용 설명서*의 [OAuth 2.0 액세스 범위](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept) 
+ *IAM Identity Center 사용 설명서*의 [시작하기 튜토리얼](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)

# AWS CLI에 대한 단기 자격 증명으로 인증
<a name="cli-authentication-short-term"></a>

세션 기간 연장 옵션과 함께 [IAM Identity Center 인증](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html)을 사용하도록 SDK 또는 도구를 구성하는 것이 좋습니다. 하지만 AWS 액세스 포털에서 사용할 수 있는 임시 보안 인증을 복사하여 사용할 수 있습니다. 보안 인증이 만료되면 새 보안 인증을 복사해야 합니다. 프로필에서 임시 보안 인증을 사용하거나 이를 시스템 속성 및 환경 변수의 값으로 사용할 수 있습니다.

1. [AWS 액세스 포털에 로그인합니다](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosignin.html).

1. [다음 지침](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html)에 따라 AWS 액세스 포털에서 IAM 역할 보안 인증을 복사하세요.

   1. 링크된 지침의 2단계에서 개발 요구 사항에 대한 액세스 권한을 부여하는 AWS 계정 및 IAM 역할 이름을 선택합니다. 이 역할에는 일반적으로 **PowerUserAccess** 또는 **Developer**와 같은 이름이 있습니다.

   1. 4단계에서 **AWS 보안 인증 파일에 프로필 추가** 옵션을 선택하고 내용을 복사합니다.

1. 공유 `credentials` 파일을 생성하거나 엽니다. 이 파일은 Linux 및 macOS 시스템의 경우 `~/.aws/credentials`이며, Windows의 경우 `%USERPROFILE%\.aws\credentials`입니다. 자세한 내용은 [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md) 섹션을 참조하세요.

1. 다음 텍스트를 공유 `credentials` 파일에 추가합니다. 샘플 값을 복사한 보안 인증으로 바꿉니다.

   ```
   [default] 
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE 
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
   ```

1. 원하는 기본 지역 및 형식을 공유 `config` 파일에 추가합니다.

   ```
   [default]
   region=us-west-2
   output=json
   
   [profile user1]
   region=us-east-1
   output=text
   ```

SDK는 서비스 클라이언트를 생성할 때 이러한 임시 보안 인증에 액세스하여 각 요청에 사용합니다. 2a단계에서 선택한 IAM 역할 설정에 따라 [임시 보안 인증의 유효 기간](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtosessionduration.html)이 결정됩니다. 최대 유효 기간은 12시간입니다.

보안 인증 정보가 만료될 때마다 이 단계를 반복하세요.

# AWS CLI에서 IAM 역할 사용
<a name="cli-configure-role"></a>

[AWS Identity and Access Management(IAM) 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)은 사용자가 추가(또는 다른) 권한을 얻을 수 있도록 하거나 다른 AWS 계정에서 작업을 수행할 권한을 주는 인증 도구입니다.

**Topics**
+ [

## 사전 조건
](#cli-role-prereqs)
+ [

## IAM 역할 사용 개요
](#cli-role-overview)
+ [

## 역할 구성 및 사용
](#cli-role-prepare)
+ [

## 멀티 팩터 인증 사용
](#cli-configure-role-mfa)
+ [

## 교차 계정 역할 및 외부 ID
](#cli-configure-role-xaccount)
+ [

## 보다 쉬운 감사를 위한 역할 세션 이름 지정
](#cli-configure-role-session-name)
+ [

## 웹 자격 증명을 사용한 역할 수임
](#cli-configure-role-oidc)
+ [

## 캐시된 자격 증명 지우기
](#cli-configure-role-cache)

## 사전 조건
<a name="cli-role-prereqs"></a>

`iam` 명령을 실행하려면 AWS CLI를 설치하고 구성해야 합니다. 여기에는 역할이 다른 자격 증명 방법과 페어링되어 있다고 가정하여 구성된 프로필을 설정하는 것도 포함됩니다. 자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md) 섹션을 참조하세요.

## IAM 역할 사용 개요
<a name="cli-role-overview"></a>

`~/.aws/config` 파일에서 역할에 대한 프로파일을 정의하여 IAM 역할을 사용하도록 AWS Command Line Interface(AWS CLI)를 구성할 수 있습니다.

다음 예제는 `marketingadmin`라는 이름의 역할 프로파일을 보여줍니다. `--profile marketingadmin`으로 명령을 실행하거나([AWS\$1PROFILE 환경 변수](cli-configure-envvars.md)로 이를 지정한 경우) AWS CLI가 별도의 `user1` 프로파일에 정의된 자격 증명을 사용하여 Amazon 리소스 이름(ARN)이 `arn:aws:iam::123456789012:role/marketingadminrole`인 역할을 수임합니다. 해당 역할에 할당된 권한에서 허용되는 모든 작업을 실행할 수 있습니다.

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
source_profile = user1
```

그런 다음 역할을 사용할 권한과 함께 사용자 보안 인증 정보가 포함된 별도의 명명된 프로파일을 가리키는 `source_profile`을 지정하면 됩니다. 앞의 예제에서는 `marketingadmin` 프로파일이 `user1` 프로파일의 자격 증명을 사용하고 있습니다. AWS CLI 명령에 `marketingadmin` 프로파일을 사용하도록 지정하면 AWS CLI가 연결된 `user1` 프로파일에 대한 자격 증명을 자동으로 찾고 이를 사용하여 지정된 IAM 역할에 대한 임시 자격 증명을 요청합니다. CLI는 백그라운드에서 [sts:AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 작업을 사용하여 이를 수행합니다. 이러한 임시 자격 증명은 요청된 AWS CLI 명령을 실행하는 데 사용됩니다. 지정된 역할은 요청된 AWS CLI 명령이 실행되도록 허용하는 IAM 권한 정책에 연결되어야 합니다.

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 Amazon Elastic Container Service(Amazon ECS) 컨테이너 안에서 AWS CLI 명령을 실행하려면 인스턴스 프로파일 또는 컨테이너에 연결된 IAM 역할을 사용하면 됩니다. 프로파일을 지정하지 않거나 환경 변수를 설정하지 않은 경우 해당 역할이 직접 사용됩니다. 이렇게 하면 인스턴스에서 수명이 긴 액세스 키를 저장하는 것을 피할 수 있습니다. 또한 이러한 인스턴스 또는 컨테이너 역할을 다른 역할에 대한 자격 증명을 가져오는 데에만 사용할 수 있습니다. 이를 위해서는 `credential_source`(`source_profile` 대신에)를 사용하여 자격 증명을 찾는 방법을 지정해야 합니다. `credential_source` 속성은 다음과 같은 값들을 지원합니다.
+ `Environment` - 환경 변수에서 소스 자격 증명을 검색합니다.
+ `Ec2InstanceMetadata` - Amazon EC2 인스턴스 프로파일에 연결된 IAM 역할을 사용합니다.
+ `EcsContainer` - Amazon ECS 컨테이너에 연결된 IAM 역할을 사용합니다.

아래 예제는 Amazon EC2 인스턴스 프로파일을 참조하여 사용한 것과 동일한 `marketingadminrole` 역할을 보여줍니다.

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
```

역할을 호출할 때 멀티 팩터 인증 및 외부 ID(타사에서 클라이언트 리소스에 액세스하는 데 사용)와 같은 추가 옵션이 필요할 수 있습니다. AWS CloudTrail 로그에서 보다 쉽게 감사할 수 있는 고유한 역할 세션 이름을 지정할 수도 있습니다.

## 역할 구성 및 사용
<a name="cli-role-prepare"></a>

IAM 역할을 지정하는 프로파일을 사용하여 명령을 실행하면 AWS CLI는 원본 프로파일의 자격 증명을 사용하여 AWS Security Token Service(AWS STS)를 호출하고 지정된 역할에 대한 임시 자격 증명을 요청합니다. 원본 프로파일의 사용자에는 지정된 프로파일의 역할에 대한 `sts:assume-role`을 호출할 권한이 있어야 합니다. 이 역할에는 소스 프로파일의 사용자가 역할을 사용할 수 있도록 허용하는 신뢰 관계가 있어야 합니다. 역할에 대한 임시 자격 증명을 가져온 다음 사용하는 프로세스는 종종 *역할 수임*이라고 합니다.

*AWS Identity and Access Management 사용 설명서*의 [IAM 사용자에게 권한을 위임할 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)에 있는 절차에 따라 사용자가 수임할 수 있도록 하는 권한이 있는 역할을 IAM에 생성할 수 있습니다. 역할과 원본 프로필의 사용자가 동일한 계정에 있는 경우 역할의 신뢰 관계를 구성할 때 자신의 계정 ID를 입력할 수 있습니다.

역할을 생성한 후 사용자가 해당 역할을 수임할 수 있도록 신뢰 관계를 수정합니다.

아래 예제는 역할에 연결할 수 있는 신뢰 정책을 보여줍니다. 이 정책은 ***만약*** 해당 계정의 관리자가 사용자에게 `sts:AssumeRole` 권한을 명시적으로 부여하면 123456789012 계정에서 모든 사용자가 역할을 수임하도록 허용합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

신뢰 정책은 실제로 권한을 부여하지 않습니다. 계정의 관리자는 정책을 적절한 권한에 연결하여 역할을 수임할 권한을 개별 사용자에게 위임해야 합니다. 아래 예제는 사용자가 `marketingadminrole` 역할만 수임하도록 허용하기 위해 사용자에게 연결할 수 있는 정책을 보여줍니다. 사용자에게 역할을 수임할 수 있는 액세스 권한을 부여하는 방법은 *IAM 사용 설명서*에서 [사용자에게 역할 전환 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html)를 참조하세요.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::123456789012:role/marketingadminrole"
    }
  ]
}
```

------

사용자는 추가 권한이 없더라도 역할 프로파일을 사용하여 AWS CLI 명령을 실행할 수 있습니다. 대신 명령을 실행하는 데 필요한 권한은 *역할*에 연결된 권한으로부터 나옵니다. 권한 정책을 역할에 연결하여 어떤 AWS 리소스에 대해 어떤 작업을 수행할 수 있는지를 지정할 수 있습니다. 권한을 역할에 연결(사용자에게 동일하게 적용)하는 방법은 *IAM 사용 설명서*에서 [IAM 사용자의 권한 변경](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html)을 참조하세요.

이제 역할 프로파일, 역할 권한, 역할 신뢰 관계 및 사용자 권한이 올바르게 구성되었으므로 `--profile` 옵션을 호출하여 명령줄에서 역할을 사용할 수 있습니다. 예를 들어, 다음은 이 주제의 시작 부분에 있는 예제에서 정의된 대로 `ls` 역할에 연결된 권한을 사용하여 Amazon S3 `marketingadmin` 명령을 호출합니다.

```
$ aws s3 ls --profile marketingadmin
```

여러 호출에 역할을 사용하려면 명령줄에서 현재 세션에 대한 `AWS_PROFILE` 환경 변수를 설정하면 됩니다. 환경 변수를 정의하는 동안 각 명령에서 `--profile` 옵션을 지정할 필요가 없습니다.

**Linux 또는 macOS**

```
$ export AWS_PROFILE=marketingadmin
```

**Windows**

```
C:\> setx AWS_PROFILE marketingadmin
```

사용자 및 역할 구성에 대한 자세한 내용은 **IAM 사용 설명서의 [IAM ID(사용자, 사용자 그룹 및 역할)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) 및 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id-roles.html)을 참조하세요.

## 멀티 팩터 인증 사용
<a name="cli-configure-role-mfa"></a>

보안을 강화하기 위해, 사용자가 역할 프로파일을 사용하여 호출을 수행하려고 할 때 멀티 팩터 인증(MFA) 디바이스, U2F 디바이스 또는 모바일 앱에서 생성된 일회용 키를 제공하도록 사용자에게 요구할 수 있습니다.

먼저, MFA를 요구하도록 IAM 역할에 대한 신뢰 관계를 수정합니다. 이렇게 하면 MFA를 사용하여 먼저 인증해야 역할을 사용할 수 있게 됩니다. 해당하는 예는 다음 예제의 `Condition` 행을 참조하세요. 이 정책을 사용하면 이름이 `anika`인 사용자가 정책이 연결된 역할을 수임할 수 있지만, MFA를 사용하여 인증하는 경우에만 수임할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" },
      "Action": "sts:AssumeRole",
      "Condition": { "Bool": { "aws:multifactorAuthPresent": true } }
    }
  ]
}
```

------

그런 다음 사용자 MFA 디바이스의 ARN을 지정하는 줄을 역할 프로파일에 추가합니다. 다음 샘플 `config` 파일 항목은 `anika`라는 사용자가 `cli-role` 역할에 대한 임시 보안 인증 정보를 요청하기 위해 액세스 키를 사용하는 두 가지 역할 프로파일을 보여줍니다. 사용자 `anika`는 역할을 맡을 권한이 있으며, 이러한 권한은 역할의 신뢰 정책에서 부여합니다.

```
[profile role-without-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile=cli-user

[profile role-with-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile = cli-user
mfa_serial = arn:aws:iam::128716708097:mfa/cli-user

[profile cli-user]
region = us-west-2
output = json
```

`mfa_serial` 설정은 표시된 대로 ARN 또는 하드웨어 MFA 토큰의 일련 번호를 가져올 수 있습니다.

첫 번째 프로파일인 `role-without-mfa`에서는 MFA를 요구하지 않습니다. 그러나 이전 예제에서 역할에 연결된 신뢰 정책은 MFA를 요구하므로 이 프로파일을 사용하여 명령을 실행하면 실패하게 됩니다.

```
$ aws iam list-users --profile role-without-mfa

An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied
```

두 번째 프로파일 항목 `role-with-mfa`에서는 사용할 MFA 디바이스를 식별합니다. 사용자가 이 프로파일을 사용하여 AWS CLI 명령을 실행하면 사용자에게 MFA 디바이스에서 제공하는 OTP(일회용 암호)를 입력하라는 메시지가 AWS CLI에 표시됩니다. MFA 인증이 성공하면 명령이 요청 작업을 수행합니다. OTP는 화면에 표시되지 않습니다.

```
$ aws iam list-users --profile role-with-mfa
Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user:
{
    "Users": [
        {
            ...
```

## 교차 계정 역할 및 외부 ID
<a name="cli-configure-role-xaccount"></a>

역할을 교차 계정 역할로 구성하면 사용자가 다른 계정에 속한 역할을 사용할 수 있습니다. [IAM 사용자에게 권한을 위임하는 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)에 설명된 대로 역할 생성 중에 역할 유형을 **다른 AWS 계정**으로 설정합니다. 경우에 따라 **Require MFA(MFA 필요)**를 선택합니다. [**MFA 필요(Require MFA)**]는 [멀티 팩터 인증 사용](#cli-configure-role-mfa)의 설명과 같이 신뢰 관계에서 적절한 조건을 구성합니다.

계정 전체의 역할을 사용할 수 있는 사용자에 대한 추가 제어를 제공하기 위해 [외부 ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)를 사용하는 경우 역할 프로파일에 `external_id` 파라미터도 추가해야 합니다. 일반적으로 회사 또는 조직 외부에 있는 사람이 다른 계정을 제어하는 경우에만 이를 사용합니다.

```
[profile crossaccountrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
external_id = 123456
```

## 보다 쉬운 감사를 위한 역할 세션 이름 지정
<a name="cli-configure-role-session-name"></a>

한 역할을 여러 개인이 공유하는 경우 감사가 더 어려워집니다. 호출된 각 작업을 호출한 개인에 연결하려고 합니다. 그러나 개인이 역할을 사용할 때 개인에 의한 역할 수임은 작업 호출과는 별도의 작업이므로 역할과 개인을 수동으로 상호 연결해야 합니다.

사용자가 역할을 수임할 때 고유한 역할 세션 이름을 지정하여 이러한 작업을 간단하게 수행할 수 있습니다. 역할을 지정하는 `role_session_name` 파일의 명명된 각 프로파일에 `config` 파라미터를 추가하여 이를 수행합니다. `role_session_name` 값이 `AssumeRole` 작업에 전달되고 역할 세션에 대한 ARN의 일부가 됩니다. 이 값은 로그된 모든 작업에 대한 AWS CloudTrail 로그에도 포함됩니다.

예를 들어, 다음과 같이 역할 기반 프로파일을 생성할 수 있습니다.

```
[profile namedsessionrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
role_session_name = Session_Maria_Garcia
```

이 결과 다음 ARN을 포함하는 역할 세션이 생성됩니다.

```
arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia
```

또한 모든 AWS CloudTrail 로그에 각 작업에 대해 캡처된 정보의 역할 세션 이름이 포함됩니다.

## 웹 자격 증명을 사용한 역할 수임
<a name="cli-configure-role-oidc"></a>

AWS CLI에서 [웹 자격 증명 연동 및 OIDC(Open ID Connect)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html)를 사용하여 역할을 수임하도록 프로파일을 구성할 수 있습니다. 프로파일에서 이를 지정할 때 AWS CLI에서 자동으로 해당 AWS STS `AssumeRoleWithWebIdentity` 호출을 수행합니다.

**참고**  
IAM 역할을 사용하는 프로파일을 지정하면 AWS CLI가 적절한 호출을 수행하여 임시 자격 증명을 검색합니다. 이러한 자격 증명은 `~/.aws/cli/cache`에 저장됩니다. 동일한 프로파일을 지정하는 후속 AWS CLI 명령은 캐시된 임시 자격 증명을 만료될 때까지 사용합니다. 이 시점에서 AWS CLI는 자동으로 자격 증명을 새로 고칩니다.

웹 자격 증명 연동을 사용하여 임시 자격 증명을 검색하고 사용하려면 공유 프로파일에서 다음 구성 값을 지정할 수 있습니다.

[role\$1arn](#cli-configure-role)  
수임할 역할의 ARN을 지정합니다.

web\$1identity\$1token\$1file  
자격 증명 공급자가 제공하는 OAuth 2.0 액세스 토큰 또는 OpenID Connect ID 토큰을 포함하는 파일의 경로를 지정합니다. AWS CLI에서 이 파일을 로드하고 해당 내용을 `WebIdentityToken` 작업에 대한 `AssumeRoleWithWebIdentity` 인수로 전달합니다.

[role\$1session\$1name](#cli-configure-role-session-name)  
이 역할 수임 세션에 적용된 선택적 이름을 지정합니다.

다음은 웹 자격 증명 프로파일로 역할 수임을 구성하는 데 필요한 최소 양의 구성에 대한 예입니다.

```
# In ~/.aws/config

[profile web-identity]
role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume
web_identity_token_file=/path/to/a/token
```

[환경 변수](cli-configure-envvars.md)를 사용하여 이 구성을 제공할 수도 있습니다.

AWS\$1ROLE\$1ARN  
수임할 역할의 ARN

AWS\$1WEB\$1IDENTITY\$1TOKEN\$1FILE  
웹 자격 증명 토큰 파일의 경로입니다.

AWS\$1ROLE\$1SESSION\$1NAME  
이 역할 수임 세션에 적용된 이름입니다.

**참고**  
이러한 환경 변수는 현재 웹 자격 증명 공급자의 역할 수임에만 적용됩니다. 일반 역할 수임 공급자 구성에는 적용되지 않습니다.

## 캐시된 자격 증명 지우기
<a name="cli-configure-role-cache"></a>

역할을 사용하면 AWS CLI는 임시 자격 증명이 만료될 때까지 로컬에서 임시 자격 증명을 캐시합니다. 다음에 이러한 자격 증명을 사용하려고 할 때 AWS CLI에서 해당 자격 증명을 자동으로 갱신하려고 합니다.

역할의 임시 자격 증명이 [취소](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_revoke-sessions.html)된 경우에는 해당 자격 증명이 자동으로 갱신되지 않고 사용 시도가 실패합니다. 그러나 강제로 AWS CLI에서 새 자격 증명을 검색하도록 하는 캐시를 삭제할 수 있습니다.

**Linux 또는 macOS**

```
$ rm -r ~/.aws/cli/cache
```

**Windows**

```
C:\> del /s /q %UserProfile%\.aws\cli\cache
```

# IAM 사용자 자격 증명을 사용한 인증
<a name="cli-authentication-user"></a>

**주의**  
보안 위험을 방지하려면 목적별 소프트웨어를 개발하거나 실제 데이터로 작업할 때 IAM 사용자를 인증에 사용하지 마세요. 대신 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)과 같은 보안 인증 공급자를 통한 페더레이션을 사용하세요.

이 섹션에서는 IAM 사용자를 사용하여 기본 설정을 구성하는 방법을 설명합니다. 여기에는 `config` 및 `credentials` 파일을 사용한 보안 보안 인증이 포함됩니다. 대신 AWS IAM Identity Center에 대한 구성 지침을 보려면 [AWS CLI를 사용하여 IAM Identity Center 인증 구성](cli-configure-sso.md) 섹션을 참조하세요.

**Contents**
+ [

## 1단계: IAM 사용자 생성
](#cli-authentication-user-create)
+ [

## 2단계: 액세스 키 가져오기
](#cli-authentication-user-get)
+ [

## 3단계: AWS CLI 구성
](#cli-authentication-user-configure.title)
  + [

### 사용`aws configure`
](#cli-authentication-user-configure-wizard)
  + [

### .CSV 파일을 통해 액세스 키 가져오기
](#cli-authentication-user-configure-csv)
  + [

### `config` 및 `credentials` 파일 직접 편집
](#cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file)
+ [

## (선택 사항) IAM 사용자 자격 증명과 함께 다중 인증 사용
](#cli-authentication-user-configure-csv.titlecli-authentication-user-mfa)

## 1단계: IAM 사용자 생성
<a name="cli-authentication-user-create"></a>

*IAM 사용 설명서*의 [IAM 사용자 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) 절차에 따라 IAM 사용자를 생성합니다.
+ **권한 옵션**에서 이 사용자에게 권한을 할당하려는 방법에 대한 **정책 직접 연결**을 선택합니다.
+ 대부분의 “시작하기” SDK 자습서에서는 Amazon S3 서비스를 예로 사용합니다. 애플리케이션에 Amazon S3에 대한 전체 액세스 권한을 제공하려면 이 사용자에게 연결할 `AmazonS3FullAccess` 정책을 선택하세요.

## 2단계: 액세스 키 가져오기
<a name="cli-authentication-user-get"></a>

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. IAM 콘솔의 탐색 창에서 **사용자**를 선택한 다음 이전에 생성한 사용자의 **`User name`**를 선택합니다.

1. 사용자 페이지에서 **보안 보안 인증** 페이지를 선택합니다. 그런 다음 **액세스 키**에서 **액세스 키 생성**을 선택합니다.

1.  **액세스 키 생성 1단계**에서 **명령줄 인터페이스(CLI)**를 선택합니다.

1. **액세스 키 만들기 2단계**에서 선택적 태그를 입력하고 **다음**을 선택합니다.

1. **액세스 키 생성 3단계**에서 **.csv 파일 다운로드**를 선택하여 IAM 사용자의 액세스 키 및 보안 액세스 키와 함께 `.csv` 파일을 저장합니다. 나중에 이 정보가 필요합니다.

1. 완료(Done)를 선택합니다.

## 3단계: AWS CLI 구성
<a name="cli-authentication-user-configure.title"></a>

일반적인 용도로는 AWS CLI에서 다음과 같은 정보가 필요합니다.
+ 액세스 키 ID
+ 비밀 액세스 키
+ AWS 리전
+ 출력 형식

AWS CLI는 이 정보를 `default` 파일에서 `credentials`라는 *프로파일*(설정 모음)에 저장합니다. 기본적으로 이 프로파일의 정보는 사용할 프로파일을 명시적으로 지정하지 않는 AWS CLI 명령이 실행될 때 사용됩니다. `credentials` 파일에 대한 자세한 내용은 [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md) 섹션을 참조하세요.

AWS CLI을 구성하려면 다음 절차 중 하나를 사용합니다.

**Topics**
+ [

### 사용`aws configure`
](#cli-authentication-user-configure-wizard)
+ [

### .CSV 파일을 통해 액세스 키 가져오기
](#cli-authentication-user-configure-csv)
+ [

### `config` 및 `credentials` 파일 직접 편집
](#cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file)

### 사용`aws configure`
<a name="cli-authentication-user-configure-wizard"></a>

일반적인 용도에서 `aws configure` 명령은 AWS CLI 설치를 설정할 수 있는 가장 빠른 방법입니다. 이 구성 마법사는 시작하는 데 필요한 각 정보를 입력하라는 메시지를 표시합니다. `--profile` 옵션을 사용하여 별도로 지정하지 않는 한 AWS CLI은 이 정보를 `default` 프로파일에 저장합니다.

다음 예에서는 샘플 값을 사용하여 `default` 프로필을 구성합니다. 다음 섹션에 설명된 대로 해당 값을 사용자 고유의 값으로 바꿉니다.

```
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

다음 예에서는 샘플 값을 사용하여 `userprod`로 이름이 지정된 프로필을 구성합니다. 다음 섹션에 설명된 대로 해당 값을 사용자 고유의 값으로 바꿉니다.

```
$ aws configure --profile userprod
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
```

### .CSV 파일을 통해 액세스 키 가져오기
<a name="cli-authentication-user-configure-csv"></a>

`aws configure`를 사용하여 액세스 키를 입력하는 대신 액세스 키를 생성한 후 다운로드한 일반 텍스트 `.csv` 파일을 가져올 수 있습니다.

`.csv` 파일에는 다음 헤더가 포함되어야 합니다.
+ 사용자 이름 - 이 열을 `.csv`에 추가해야 합니다. 가져올 때 `config` 및 `credentials`에 사용되는 프로필 이름을 만드는 데 사용됩니다.
+ 액세스 키 ID
+ 비밀 액세스 키

**참고**  
초기 액세스 키 생성 중에 **.csv 파일 다운로드** 대화 상자를 닫으면 대화 상자를 닫은 후 비밀 액세스 키에 액세스할 수 없습니다. `.csv` 파일이 있어야 하는 경우 필요한 헤더와 저장된 액세스 키 정보를 사용하여 파일을 직접 만들어야 합니다. 액세스 키 정보에 액세스할 수 없는 경우 새 액세스 키를 생성해야 합니다.

`.csv` 파일을 가져오려면 다음과 같이 `aws configure import` 명령을 `--csv` 옵션과 함께 사용합니다.

```
$ aws configure import --csv file://credentials.csv
```

자세한 내용은 `aws\$1configure\$1import` 섹션을 참조하세요.

### `config` 및 `credentials` 파일 직접 편집
<a name="cli-authentication-user-configure-csv.titlecli-authentication-user-configure-file"></a>

`config` 및 `credentials` 파일을 직접 편집하려면 다음을 수행하세요.

1. 공유 AWS `credentials` 보안 인증 파일을 생성하거나 엽니다. 이 파일은 Linux 및 macOS 시스템의 경우 `~/.aws/credentials`이며, Windows의 경우 `%USERPROFILE%\.aws\credentials`입니다. 자세한 내용은 [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md) 섹션을 참조하세요.

1. 다음 텍스트를 공유 `credentials` 파일에 추가합니다. 이전에 다운로드한 `.csv` 파일의 샘플 값을 바꾸고 파일을 저장합니다.

   ```
   [default] 
   aws_access_key_id = AKIAIOSFODNN7EXAMPLE 
   aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   ```

## (선택 사항) IAM 사용자 자격 증명과 함께 다중 인증 사용
<a name="cli-authentication-user-configure-csv.titlecli-authentication-user-mfa"></a>

보안을 강화하기 위해, 사용자가 직접 호출을 수행하려고 할 때 다중 인증(MFA) 디바이스, U2F 디바이스 또는 모바일 앱에서 생성된 일회용 키를 사용할 수 있습니다.

MFA가 활성화된 IAM 사용자를 사용하여 [https://docs.aws.amazon.com/cli/latest/reference/configure/mfa-login.html](https://docs.aws.amazon.com/cli/latest/reference/configure/mfa-login.html) 명령을 실행하여 지정된 프로필에 대해 다중 인증(MFA)과 함께 사용할 새 프로필을 구성합니다. 프로필이 지정되지 않은 경우 MFA는 `default` 프로필을 기반으로 합니다. 기본 프로필이 구성되지 않은 경우 `mfa-login` 명령은 MFA 정보를 요청하기 전에 AWS 자격 증명을 묻는 메시지를 표시합니다. 다음 명령 예제에서는 기본 구성을 사용하고 MFA 프로필을 생성합니다.

```
$ aws configure mfa-login
MFA serial number or ARN: arn:aws:iam::123456789012:mfa/MFADeviceName
MFA token code: 123456
Profile to update [session-MFADeviceName]:
Temporary credentials written to profile 'session-MFADeviceName'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile session-MFADeviceName when running AWS CLI commands
```

기존 프로필을 업데이트하려면 `--update-profile` 파라미터를 사용합니다.

```
$ aws configure mfa-login --profile myprofile --update-profile mfaprofile
MFA token code: 123456
Temporary credentials written to profile 'mfaprofile'
Credentials will expire at 2023-05-19 18:06:10 UTC
To use these credentials, specify --profile mfaprofile when running AWS CLI commands
```

이 명령은 현재 하드웨어 또는 소프트웨어 기반 일회용 암호(OTP) 인증자만 지원합니다. 패스키 및 U2F 디바이스는 현재 이 명령에서 지원되지 않습니다.

MFA 프로필을 사용하려면 명령과 함께 `--profile` 옵션을 사용합니다.

```
$ aws s3 ls --profile mfaprofile
```

IAM 사용자에게 MFA를 할당하는 방법을 포함하여 IAM에서 MFA를 사용하는 방법에 대한 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [AWS IAM의 멀티 팩터 인증](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)을 참조하세요.

# AWS CLI에서 Amazon EC2 인스턴스 메타데이터의 자격 증명 사용
<a name="cli-configure-metadata"></a>

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 안에서 AWS CLI를 실행하는 경우 명령에 제공하는 자격 증명을 간편하게 제공할 수 있습니다. 각 Amazon EC2 인스턴스에는 AWS CLI가 임시 자격 증명을 직접 쿼리할 수 있는 메타데이터가 포함되어 있습니다. IAM 역할이 인스턴스에 연결되면 AWS CLI가 임시 자격 증명을 직접 쿼리할 수 있는 메타데이터가 포함되어 있습니다.

이 서비스를 비활성화하려면 [AWS\$1EC2\$1METADATA\$1DISABLED](cli-configure-envvars.md#envvars-list-AWS_EC2_METADATA_DISABLED) 환경 변수를 사용합니다.

**Topics**
+ [

## 사전 조건
](#cli-configure-metadata-prereqs)
+ [

## Amazon EC2 메타데이터에 대한 프로파일 구성
](#cli-configure-metadata-configure)

## 사전 조건
<a name="cli-configure-metadata-prereqs"></a>

AWS CLI에서 Amazon EC2 자격 증명을 사용하려면 다음을 완료해야 합니다.
+ AWS CLI를 설치하고 구성합니다. 자세한 내용은 [최신 버전의 AWS CLI 설치 또는 업데이트](getting-started-install.md) 및 [AWS CLI에 대한 인증 및 액세스 보안 인증](cli-chap-authentication.md) 섹션을 참조하세요.
+ 구성 파일과 명명된 프로파일을 파악합니다. 자세한 내용은 [AWS CLI의 구성 및 보안 인증 파일 설정](cli-configure-files.md) 섹션을 참조하세요.
+ 필요한 리소스에 대한 액세스 권한이 있는 AWS Identity and Access Management(IAM) 역할을 생성하고 해당 역할을 시작할 때 Amazon EC2 인스턴스에 연결했습니다. 자세한 내용은 **Amazon EC2 사용 설명서의 [Amazon EC2에 대한 IAM 정책](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html)과 **IAM 사용 설명서의 [Amazon EC2 인스턴스에서 실행되는 애플리케이션에 AWS 리소스에 대한 액세스 권한 부여](https://docs.aws.amazon.com/IAM/latest/UserGuide/role-usecase-ec2app.html)를 참조하세요.

## Amazon EC2 메타데이터에 대한 프로파일 구성
<a name="cli-configure-metadata-configure"></a>

호스팅 Amazon EC2 인스턴스 프로파일에서 제공되는 자격 증명을 사용할지 여부를 지정하려면 구성 파일의 명명된 프로파일에서 다음 구문을 사용합니다. 자세한 지침은 다음 단계를 참조하세요.

```
[profile profilename]
role_arn = arn:aws:iam::123456789012:role/rolename
credential_source = Ec2InstanceMetadata
region = region
```

1. 구성 파일에 프로파일을 생성합니다.

   ```
   [profile profilename]
   ```

1. 필요한 리소스에 대한 액세스 권한이 있는 IAM arn 역할을 추가합니다.

   ```
   role_arn = arn:aws:iam::123456789012:role/rolename
   ```

1. 자격 증명 소스로 `Ec2InstanceMetadata`를 지정합니다.

   ```
   credential_source = Ec2InstanceMetadata
   ```

1. 리전을 설정합니다.

   ```
   region = region
   ```

**예제**

다음 예제에서는 *`marketingadminrole`* 역할을 가정하고 `marketingadmin`이라는 Amazon EC2 인스턴스 프로파일에서 `us-west-2` 리전을 사용합니다.

```
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
credential_source = Ec2InstanceMetadata
region = us-west-2
```

# AWS CLI에서 외부 프로세스를 통해 자격 증명 소싱
<a name="cli-configure-sourcing-external"></a>

**주의**  
이 주제에서는 외부 프로세스에서 자격 증명을 소싱하는 방법을 알아봅니다. 자격 증명을 생성하는 명령이 승인되지 않은 프로세스나 사용자가 액세스할 수 있게 된 경우에는 이것이 보안 위험이 될 수 있습니다. 자격 증명의 손상 위험을 줄이려면 AWS CLI 및 AWS에서 제공되고 지원되는 보안 자격 증명을 대신 사용하는 것이 좋습니다. `config` 파일과 유출 방지를 도와주는 모든 파일 및 도구를 보호하고 있는지 확인합니다.  
사용자 지정 자격 증명 도구가 `StdErr`에 어떤 암호 정보도 기록하지 않아야 합니다. SDK 및 AWS CLI가 그러한 정보를 캡처 및 기록할 수 있으므로 승인되지 않은 사용자에게 노출될 위험이 있기 때문입니다.

AWS CLI에서 직접 지원되지 않는 자격 증명을 생성 또는 조회할 수 있는 방법이 있는 경우에는 `config` 파일에서 AWS CLI 설정을 구성하여 이를 사용하도록 `credential_process`를 구성할 수 있습니다.

예를 들어 `config` 파일에 다음과 유사한 항목을 포함시킬 수 있습니다.

```
[profile developer]
credential_process = /opt/bin/awscreds-custom --username helen
```

**구문**  
기존 운영 체제와 호환되는 방식으로 이 문자열을 생성하려면 다음 규칙을 따르세요.
+ 경로 또는 파일 이름에 공백이 있으면 전체 경로와 파일 이름을 큰 따옴표(" ")로 묶습니다. 경로 및 파일 이름은 다음 문자만 포함할 수 있습니다. A-Z a-z 0-9 - \$1 . 공백
+ 파라미터 이름이나 파라미터 값에 공백이 있으면 해당 요소를 큰 따옴표(" ")로 묶습니다. 전체 페어가 아니라 이름 또는 값만 묶으세요.
+ 문자열 안에 환경 변수를 포함하지 마세요. 예를 들어 `$HOME` 또는 `%USERPROFILE%`를 포함할 수 없습니다.
+ 홈 폴더를 `~`로 지정하지 마세요. 전체 경로를 지정해야 합니다.

**Windows용 예**

```
credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"
```

**Linux 또는 macOS용 예**

```
credential_process = "/Users/Dave/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"
```

**자격 증명 프로그램에서 예상되는 출력**

AWS CLI는 프로파일에 지정된 대로 명령을 실행한 다음, `STDOUT`에서 데이터를 읽습니다. 지정한 명령이 다음 구문과 일치하는 `STDOUT`에서 JSON 출력을 생성해야 합니다.

```
{
  "Version": 1,
  "AccessKeyId": "an AWS access key",
  "SecretAccessKey": "your AWS secret access key",
  "SessionToken": "the AWS session token for temporary credentials", 
  "Expiration": "ISO8601 timestamp when the credentials expire"
}
```

**참고**  
이 문서의 작성일 현재, `Version` 키는 `1`로 설정되어 있습니다. 구조가 발전하면서 시간에 따라 이 값이 증가할 수 있습니다.

`Expiration` 키는 [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) 형식의 타임스탬프입니다. `Expiration` 키가 도구의 출력에 존재하지 않으면 CLI는 자격 증명이 새로 고침이 되지 않는 장기 자격 증명이라고 가정합니다. 그렇지 않은 경우 자격 증명은 임시 자격 증명으로 간주되며, 기간이 만료되기 전에 `credential_process` 명령을 다시 실행하면 자동으로 새로 고침됩니다.

**참고**  
AWS CLI는 역할 자격 증명을 수임하는 방법으로 외부 프로세스 자격 증명을 캐싱하지 ***않습니다***. 캐싱이 필요한 경우에는 외부 프로세스에서 이를 실행해야 합니다.

외부 프로세스는 자격 증명을 검색하는 동안 오류가 발생했음을 나타내기 위해 0이 아닌 반환 코드를 반환할 수 있습니다.