AWS Secrets Manager에 민감한 구성 데이터 저장
Amazon EMR은 사용자 지정 구성 데이터(예: DescribeCluster
및 ListInstanceGroups
)를 생성하는 API 작업을 일반 텍스트로 설명하고 나열합니다. Amazon EMR은 AWS Secrets Manager과 통합되므로 Secrets Manager에 데이터를 저장하고 구성에서 보안 암호 ARN을 사용할 수 있습니다. 이렇게 하면 민감한 구성 데이터를 일반 텍스트로 Amazon EMR에 전달하여 외부 API에 노출하지 않습니다. 키-값 페어에 Secrets Manager에 저장된 보안 암호의 ARN이 포함되어 있다고 지정한 경우 Amazon EMR은 구성 데이터를 클러스터로 전송할 때 이 보안 암호를 검색합니다. Amazon EMR은 외부 API를 사용하여 구성을 표시할 때 주석을 전송하지 않습니다.
보안 암호 생성
보안 암호를 생성하려면 AWS Secrets Manager 사용 설명서에서 AWS Secrets Manager 보안 암호 생성의 단계를 따릅니다. 3단계에서는 일반 텍스트 필드를 선택하여 민감한 값을 입력해야 합니다.
Secrets Manager에서는 보안 암호에 최대 65,536바이트를 포함할 수 있지만 Amazon EMR은 속성 키(주석 제외) 및 검색된 보안 암호 값의 총 길이를 1,024자로 제한합니다.
Amazon EMR에 보안 암호를 검색할 액세스 권한 부여
Amazon EMR은 IAM 서비스 역할을 사용하여 클러스터를 프로비저닝하고 관리합니다. Amazon EMR의 서비스 역할은 리소스를 프로비저닝하고 클러스터 내에서 실행 중인 Amazon EC2 인스턴스 컨텍스트에서 수행되지 않는 서비스 수준 작업을 수행하는 경우 허용되는 작업을 정의합니다. 서비스 역할에 대한 자세한 내용은 Amazon EMR의 서비스 역할(EMR 역할) 및 IAM 역할 사용자 지정을 참조하세요.
Amazon EMR이 Secrets Manager로부터 보안 암호 값을 검색할 수 있도록 하려면 클러스터를 시작할 때 Amazon EMR 역할에 다음 정책 명령문을 추가합니다.
{ "Sid":"AllowSecretsRetrieval", "Effect":"Allow", "Action":"secretsmanager:GetSecretValue", "Resource":[ "arn:aws:secretsmanager:
<region>
:<aws-account-id>
:secret:<secret-name>
" ] }
고객 관리형 AWS KMS key로 보안 암호를 생성하는 경우 사용하는 키의 Amazon EMR 역할에 kms:Decrypt
권한도 추가해야 합니다. 자세한 내용은 AWS Secrets Manager User Guide의 Authentication and access control for AWS Secrets Manager를 참조하세요.
구성 분류에서 보안 암호 사용
구성 속성에 EMR.secret@
주석을 추가하여 해당 키-값 페어에 Secrets Manager에 저장된 보안 암호의 ARN이 포함되어 있음을 나타낼 수 있습니다.
다음 예제에서는 구성 분류에서 보안 암호 ARN을 제공하는 방법을 보여줍니다.
{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"
<sensitive-access-key>
", "EMR.secret@presto.s3.secret-key":"arn:aws:secretsmanager:<region>
:<aws-account-id>
:secret:<secret-name>
" } }
클러스터를 생성하고 주석이 달린 구성을 제출하면 Amazon EMR이 구성 속성을 검증합니다. 구성이 유효하면 Amazon EMR은 구성에서 주석을 제거하고 Secrets Manager에서 보안 암호를 검색하여 클러스터에 적용하기 전에 실제 구성을 생성합니다.
{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"
<sensitive-access-key>
", "presto.s3.secret-key":"<my-secret-key-retrieved-from-Secrets-Manager>
" } }
DescribeCluster
와 같은 작업을 직접 호출하면 Amazon EMR은 클러스터에서 현재 애플리케이션 구성을 반환합니다. 애플리케이션 구성 속성이 보안 암호 ARN을 포함하는 것으로 표시된 경우 DescribeCluster
직접 호출에서 반환된 애플리케이션 구성에는 보안 암호 값이 아닌 ARN이 포함됩니다. 이렇게 하면 클러스터에서만 보안 암호 값을 볼 수 있습니다.
{ "Classification":"core-site", "Properties":{ "presto.s3.access-key":"
<sensitive-access-key>
", "presto.s3.secret-key":"arn:aws:secretsmanager:<region>
:<aws-account-id>
:secret:<secret-name>
" } }
보안 암호 값 업데이트
Amazon EMR은 연결된 인스턴스 그룹이 시작 중, 재구성 중 또는 조정 중일 때마다 주석이 달린 구성에서 보안 암호 값을 검색합니다. Secrets Manager를 사용하여 실행 중인 클러스터의 구성에 사용되는 보안 암호 값을 수정할 수 있습니다. 이렇게 하면 업데이트된 값을 수신할 각 인스턴스 그룹에 재구성 요청을 제출할 수 있습니다. 인스턴스 그룹을 재구성하는 방법 및 재구성 시 고려할 사항에 대한 자세한 내용은 실행 중인 클러스터에서 인스턴스 그룹 재구성 섹션을 참조하세요.