

**이 문서는 AWS CLI의 버전 1에만 해당합니다.**

곧 AWS CLI 버전 1에 대한 지원이 종료될 예정임을 알려드립니다. AWS CLI 버전 2로 마이그레이션하는 것이 좋습니다. 마이그레이션 날짜, 추가 세부 정보 및 방법에 대한 자세한 내용은 [공지 사항](https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/)을 참조하세요. AWS CLI의 버전 2와 관련된 문서는 [버전 2 사용 설명서](https://docs.aws.amazon.com/cli/latest/userguide/)를 참조하세요.

# 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이 아닌 반환 코드를 반환할 수 있습니다.