

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 를 사용하여 외부 프로세스에서 자격 증명 로드 AWS SDK for Java 2.x
<a name="credentials-process"></a>

**주의**  
다음은 외부 프로세스에서 자격 증명을 소싱하는 방법을 설명합니다. 이는 잠재적으로 위험할 수 있으므로 주의해서 진행하세요. 가능하면 다른 자격 증명 공급자를 사용하는 것이 좋습니다. 이 옵션을 사용하는 경우 운영 체제의 보안 모범 사례를 사용하여 가능하면 `config` 파일을 잠그도록 해야 합니다.  
사용자 지정 자격 증명 도구가 `StdErr`에 비밀 정보를 기록하지 않도록 하세요. SDKs 이러한 정보를 AWS CLI 캡처하고 로깅하여 권한이 없는 사용자에게 노출될 수 있습니다.

Java 2.x용 SDK를 사용하면 외부 프로세스로부터 사용자 지정 사용 사례에 대한 임시 자격 증명을 얻을 수 있습니다. 이 기능을 구성하는 방법에는 두 가지가 있습니다.

## `credential_process` 설정 사용
<a name="credentials-credential_process"></a>

임시 자격 증명을 제공하는 방법이 있는 경우 `credential_process` 설정을 프로필 정의의 일부로 `config` 파일에 추가하여 통합할 수 있습니다. 지정하는 값은 명령 파일의 전체 경로를 사용해야 합니다. 파일 경로에 공백이 있는 경우 따옴표로 감싸야 합니다.

SDK가 명령을 그대로 정확하게 호출한 후 `stdout`에서 JSON 데이터를 읽어옵니다.

다음 예에서는 공백이 없는 파일 경로와 공백이 있는 파일 경로에 이 설정을 사용하는 방법을 보여줍니다.

------
#### [ Linux/macOS ]

**파일 경로에 공백이 없음**  

```
[profile process-credential-profile]
credential_process = /path/to/credential/file/credential_file.sh --custom-command custom_parameter
```

**파일 경로에 공백**  

```
[profile process-credential-profile]
credential_process = "/path/with/space to/credential/file/credential_file.sh" --custom-command custom_parameter
```

------
#### [ Windows ]

**파일 경로에 공백이 없음**  

```
[profile process-credential-profile]
credential_process = C:\Path\To\credentials.cmd --custom_command custom_parameter
```

**파일 경로에 공백**  

```
[profile process-credential-profile]
credential_process = "C:\Path\With Space To\credentials.cmd" --custom_command custom_parameter
```

------

다음 코드 조각은 이름이 `process-credential-profile`로 지정된 프로필의 일부로 정의된 임시 자격 증명을 사용하는 서비스 클라이언트를 빌드하는 방법을 보여줍니다.

```
Region region = Region.US_WEST_2;
S3Client s3Client = S3Client.builder()
      .region(region)
      .credentialsProvider(ProfileCredentialsProvider.create("process-credential-profile"))
      .build();
```

외부 프로세스를 임시 자격 증명의 소스로 사용하는 방법에 대한 자세한 내용은 SDK 및 도구 참조 안내서의 [프로세스 자격 증명 섹션을](https://docs.aws.amazon.com/sdkref/latest/guide/feature-process-credentials.html) 참조하세요. AWS SDKs 

## `ProcessCredentialsProvider` 사용
<a name="credentials-procredprovider"></a>

`config` 파일의 설정을 사용하는 대신 SDK의 `[ProcessCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ProcessCredentialsProvider.html)`를 사용하여 Java로 임시 자격 증명을 로드할 수 있습니다.

다음 예제는 `ProcessCredentialsProvider`를 사용하여 외부 프로세스를 지정하고 임시 자격 증명을 사용하는 서비스 클라이언트를 구성하는 다양한 버전의 방법을 보여줍니다.

------
#### [ Linux/macOS ]

**파일 경로에 공백이 없음**  

```
ProcessCredentialsProvider credentials = 
    ProcessCredentialsProvider
        .builder()
        .command("/path/to/credentials.sh optional_param1 optional_param2")
        .build();

S3Client s3 = S3Client.builder()
                      .region(Region.US_WEST_2)
                      .credentialsProvider(credentials)
                      .build();
```

**파일 경로에 공백**  

```
ProcessCredentialsProvider credentials = 
    ProcessCredentialsProvider
        .builder()
        .command("/path\\ with\\ spaces\\ to/credentials.sh optional_param1 optional_param2")
        .build();

S3Client s3 = S3Client.builder()
                      .region(Region.US_WEST_2)
                      .credentialsProvider(credentials)
                      .build();
```

------
#### [ Windows ]

**파일 경로에 공백이 없음**  

```
ProcessCredentialsProvider credentials = 
    ProcessCredentialsProvider
        .builder()
        .command("C:\\Path\\To\\credentials.exe optional_param1 optional_param2")
        .build();

S3Client s3 = S3Client.builder()
                      .region(Region.US_WEST_2)
                      .credentialsProvider(credentials)
                      .build();
```

**파일 경로에 공백**  

```
ProcessCredentialsProvider credentials = 
    ProcessCredentialsProvider
        .builder()
        .command("\"C:\\Path\\With Spaces To\\credentials.exe\" optional_param1 optional_param2")
        .build();

S3Client s3 = S3Client.builder()
                      .region(Region.US_WEST_2)
                      .credentialsProvider(credentials)
                      .build();
```

------

## 인증 시 IAM Roles Anywhere 사용
<a name="credentials-iam-roles-anywhere"></a>

[IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html)는 외부에서 실행되는 워크로드에 대한 임시 AWS 자격 증명을 얻을 수 AWS 서비스 있는 입니다 AWS. 온프레미스 또는 기타 클라우드 환경에서 AWS 리소스에 안전하게 액세스할 수 있습니다.

IAM Roles Anywhere로 요청을 인증하려면 먼저 필요한 정보를 수집하고 [자격 증명 도우미 도구](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/credential-helper.html)를 다운로드해야 합니다. IAM Roles Anywhere 사용 설명서의 [시작하기](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/getting-started.html) 설명에 따라 필요한 아티팩트를 만들 수 있습니다.

SDK for Java에는 IAM Roles Anywhere에서 임시 자격 증명을 검색할 수 있는 전용 자격 증명 공급자가 없지만, 자격 증명 도우미 도구를 옵션 중 하나와 함께 사용하여 [외부 프로세스에서 자격 증명을 검색](#credentials-process)할 수 있습니다.

### 프로파일에서 `credential_process` 설정 사용
<a name="credentials-iam-roles-anywhere-config"></a>

공유 구성 파일의 다음 코드 조각은 `credential_process` 설정을 `roles_anywhere` 사용하는 AWS 라는 프로필을 보여줍니다.

```
[profile roles_anywhere]
credential_process = ./aws_signing_helper credential-process \
  --certificate /path/to/certificate \
  --private-key /path/to/private-key \
  --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID \
  --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID \
  --role-arn arn:aws:iam::account:role/role-name-with-path
```

모든 아티팩트를 조합한 후 빨간색으로 표시된 텍스트를 값으로 대체해야 합니다. 설정의 첫 번째 요소인 `aws_signing_helper`는 자격 증명 도우미 도구의 실행 파일이고 `credential-process`는 명령입니다.

다음 코드와 같이 `roles_anywhere` 프로파일을 사용하도록 서비스 클라이언트를 구성하면 SDK는 임시 자격 증명을 캐시하고 만료되기 전에 새로 고침합니다.

```
S3Client s3Client = S3Client.builder()
    .credentialsProvider(ProfileCredentialsProvider.builder()
        .profileName("roles_anywhere").build())
    .build();
```

### `ProcessCredentialsProvider` 구성
<a name="credentials-iam-roles-anywhere-process"></a>

다음 그림과 같이 프로파일 설정을 사용하는 대신 `ProcessCredentialsProvider`에서 코드 전용 접근 방식을 사용할 수 있습니다.

```
ProcessCredentialsProvider processCredentialsProvider = ProcessCredentialsProvider.builder()
    .command("""
            ./aws_signing_helper credential-process \
            --certificate /path/to/certificate \
            --private-key /path/to/private-key \
            --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID \
            --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID \
            --role-arn arn:aws:iam::account:role/role-name-with-path
        """).build();

S3Client s3Client = S3Client.builder()
    .credentialsProvider(processCredentialsProvider)
    .build();
```

모든 아티팩트를 수집한 후 빨간색으로 표시된 텍스트를 값으로 대체합니다.