외부 프로세스에서 임시 자격 증명 로드 - AWS SDK for Java 2.x

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

외부 프로세스에서 임시 자격 증명 로드

주의

다음은 외부 프로세스에서 자격 증명을 소싱하는 방법을 설명합니다. 이는 잠재적으로 위험할 수 있으므로 주의해서 진행하세요. 가능하면 다른 보안 인증 공급자를 이용하는 것이 좋습니다. 이 옵션을 사용하는 경우 운영 체제의 보안 모범 사례를 사용하여 가능하면 config 파일을 잠그도록 해야 합니다.

사용자 지정 자격 증명 도구가 StdErr에 비밀 정보를 기록하지 않도록 하세요. SDK는 이러한 정보를 캡처하고 AWS CLI 기록할 수 있으며, 이로 인해 권한이 없는 사용자에게 정보가 노출될 수 있습니다.

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

credential_process 설정 사용

임시 자격 증명을 제공하는 방법이 있는 경우 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();

외부 프로세스를 임시 자격 증명 소스로 사용하는 방법에 대한 자세한 내용은 AWS SDK 및 도구 참조 가이드의 프로세스 자격 증명 섹션을 참조하십시오.

ProcessCredentialsProvider 사용

config 파일의 설정을 사용하는 대신 SDK의 ProcessCredentialsProvider를 사용하여 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();