기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
에서 IAM 역할 자격 증명 읽기 Amazon EC2
IAM 역할을 사용하여 EC2 인스턴스에서 실행되고 AWS CLI 또는 AWS API 요청을 수행하는 애플리케이션의 임시 자격 증명을 관리할 수 있습니다. 이는 EC2 인스턴스 내에 액세스 키를 저장할 때 권장되는 방법입니다. EC2 인스턴스에 AWS 역할을 할당하고 모든 애플리케이션에서 사용할 수 있도록 하려면 인스턴스에 연결된 인스턴스 프로파일을 생성합니다. 인스턴스 프로필에는 역할이 포함되어 있으며 EC2 인스턴스에서 실행되는 프로그램이 임시 보안 인증을 얻을 수 있습니다. 자세한 정보는 IAM 사용 설명서의 IAM 역할을 사용하여 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한 부여를 참조하세요.
이 주제에서는 EC2 인스턴스에서 실행되도록 Java 애플리케이션을 설정하고 SDK for Java가 IAM 역할 자격 증명을 획득하도록 설정하는 방법에 대한 정보를 제공합니다.
환경에서 IAM 역할 자격 증명 획득
애플리케이션이 create
메서드(또는 builder().build()
메서드)를 사용하여 AWS 서비스 클라이언트를 생성하는 경우 Java용 SDK는 기본 자격 증명 공급자 체인을 사용합니다. 기본 자격 증명 공급자 체인은 실행 환경에서 SDK가 임시 자격 증명을 위해 거래할 수 있는 구성 요소를 검색합니다. 이 기본 자격 증명 공급자 체인 사용 섹션에서는 전체 검색 프로세스를 설명합니다.
기본 공급자 체인의 마지막 단계는 애플리케이션이 Amazon EC2 인스턴스에서 실행되는 경우에만 사용할 수 있습니다. 이 단계에서는 SDK가 InstanceProfileCredentialsProvider
를 사용하여 EC2 인스턴스 프로필에 정의된 IAM 역할을 읽습니다. 그런 다음 SDK는 해당 IAM 역할에 대한 임시 보안 인증을 획득합니다.
이러한 자격 증명은 임시용이므로 기간이 경과되면 만료되지만, InstanceProfileCredentialsProvider
는 가져온 자격 증명을 통해 계속 AWS에 액세스할 수 있도록 자격 증명을 정기적으로 새로 고칩니다.
프로그래밍 방식으로 IAM 역할 자격 증명 획득
최종적으로 InstanceProfileCredentialsProvider
EC2에서를 사용하는 기본 자격 증명 공급자 체인의 대안으로를 사용하여 서비스 클라이언트를 명시적으로 구성할 수 있습니다InstanceProfileCredentialsProvider
. 이 접근 방법은 다음 코드 조각에 나와 있습니다.
S3Client s3 = S3Client.builder() .credentialsProvider(InstanceProfileCredentialsProvider.create()) .build();
IAM 역할 자격 증명을 안전하게 획득
기본적으로 EC2 인스턴스는 구성된 IAM 역할과 같은 정보에 SDK가 InstanceProfileCredentialsProvider
액세스할 수 있도록 IMDS(인스턴스 메타데이터 서비스)를 실행합니다. EC2 인스턴스는 기본적으로 두 가지 버전의 IMDS를 실행합니다.
-
인스턴스 메타데이터 서비스 버전 1(IMDSv1) – 요청/응답 방법
-
인스턴스 메타데이터 서비스 버전 2(IMDSv2) – 세션 지향 방법
IMDSv2는 IMDSv1보다 더 안전한 접근 방식
기본적으로 Java SDK는 먼저 IMDSv2를 시도하여 IAM 역할을 가져오지만, 실패하면 IMDSv1을 시도합니다. 그러나 IMDSv1은 덜 안전하므로 에서는 IMDSv2만 사용하고 SDK가 IMDSv1을 시도하지 못하도록 비활성화하는 것이 AWS 좋습니다.
보다 안전한 접근 방식을 사용하려면 다음 설정 중 하나에 값을 제공하여 SDK가 IMDSv1을 사용하지 않도록 비활성화합니다true
.
-
환경 변수:
AWS_EC2_METADATA_V1_DISABLED
-
JVM 시스템 속성: aws.
disableEc2MetadataV1
-
공유 구성 파일 설정:
ec2_metadata_v1_disabled
이러한 설정 중 하나를 로 설정하면 초기 IMDSv2 호출true
이 실패할 경우 SDK는 IMDSv1을 사용하여 IMDS 역할 자격 증명을 로드하지 않습니다. IMDSv1 IMDSv2