AWS SDK for Java 2.x를 사용한 외부 프로세스에서 자격 증명 로드
주의
다음은 외부 프로세스에서 자격 증명을 소싱하는 방법을 설명합니다. 이는 잠재적으로 위험할 수 있으므로 주의해서 진행하세요. 가능하면 다른 자격 증명 공급자를 사용하는 것이 좋습니다. 이 옵션을 사용하는 경우 운영 체제의 보안 모범 사례를 사용하여 가능하면 config 파일을 잠그도록 해야 합니다.
사용자 지정 자격 증명 도구가 StdErr에 비밀 정보를 기록하지 않도록 하세요. SDK 및 AWS CLI가 그러한 정보를 캡처 및 기록할 수 있으므로 승인되지 않은 사용자에게 노출될 위험이 있습니다.
Java 2.x용 SDK를 사용하면 외부 프로세스로부터 사용자 지정 사용 사례에 대한 임시 자격 증명을 얻을 수 있습니다. 이 기능을 구성하는 방법에는 두 가지가 있습니다.
credential_process 설정 사용
임시 자격 증명을 제공하는 방법이 있는 경우 credential_process 설정을 프로필 정의의 일부로 config 파일에 추가하여 통합할 수 있습니다. 지정하는 값은 명령 파일의 전체 경로를 사용해야 합니다. 파일 경로에 공백이 있는 경우 따옴표로 감싸야 합니다.
SDK가 명령을 그대로 정확하게 호출한 후 stdout에서 JSON 데이터를 읽어옵니다.
다음 예에서는 공백이 없는 파일 경로와 공백이 있는 파일 경로에 이 설정을 사용하는 방법을 보여줍니다.
다음 코드 조각은 이름이 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를 사용하여 외부 프로세스를 지정하고 임시 자격 증명을 사용하는 서비스 클라이언트를 구성하는 다양한 버전의 방법을 보여줍니다.
인증 시 IAM Roles Anywhere 사용
IAM Roles Anywhere는 AWS 서비스로, AWS 이외에서 실행되는 워크로드에 대한 임시 AWS 자격 증명을 얻을 수 있습니다. 온프레미스 또는 기타 클라우드 환경에서 AWS 리소스에 안전하게 액세스할 수 있습니다.
IAM Roles Anywhere로 요청을 인증하려면 먼저 필요한 정보를 수집하고 자격 증명 도우미 도구를 다운로드해야 합니다. IAM Roles Anywhere 사용 설명서의 시작하기 설명에 따라 필요한 아티팩트를 만들 수 있습니다.
SDK for Java에는 IAM Roles Anywhere에서 임시 자격 증명을 검색할 수 있는 전용 자격 증명 공급자가 없지만, 자격 증명 도우미 도구를 옵션 중 하나와 함께 사용하여 외부 프로세스에서 자격 증명을 검색할 수 있습니다.
프로파일에서 credential_process 설정 사용
공유 AWS 구성 파일의 다음 코드 조각은 credential_process 설정을 사용하는 roles_anywhere라는 프로파일을 보여줍니다.
[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 구성
다음 그림과 같이 프로파일 설정을 사용하는 대신 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();
모든 아티팩트를 수집한 후 빨간색으로 표시된 텍스트를 값으로 대체합니다.