암호화를 위한 고객 관리형 키 사용 - Amazon Managed Workflows for Apache Airflow

암호화를 위한 고객 관리형 키 사용

사용자 환경의 데이터 암호화를 위해 고객 관리형 키를 옵션으로 제공할 수 있습니다. 고객 관리형 KMS 키는 Amazon MWAA 환경 인스턴스 및 워크플로용 리소스를 저장하는 Amazon S3 버킷과 동일한 리전에 생성해야 합니다. 지정하는 고객 관리형 키가 환경을 구성하는 데 사용하는 계정이 아닌 다른 계정에 있는 경우, 크로스 계정 액세스를 위해 ARN을 이용하여 해당 키를 지정해 주어야 합니다. 키 생성에 대한 자세한 내용은 AWS Key Management Service 개발자 가이드키 생성을 참조하십시오.

지원되는 항목

AWS KMS 기능 지원

AWS KMS 키 ID 또는 ARN

AWS KMS 키 별칭

아니요

AWS KMS 다중 리전 키

아니요

암호화를 위한 권한 사용

이 단원에서는 데이터를 암호화하고 복호화하기 위해 Amazon MWAA에서 고객 관리형 KMS 키에 연결하는 권한을 설명합니다.

작동 방식

고객 관리형 KMS 키에 대해 AWS KMS로 지원하는 리소스 기반 액세스 제어 메커니즘은 키 정책권한 부여의 두 가지가 있습니다.

키 정책은 권한이 대부분 정적이고 동기 서비스 모드에 이용되는 경우에 사용합니다. 권한 부여는 서비스에서 자체 또는 다른 계정에 대해 서로 다른 액세스 권한을 정의해야 하는 경우와 같이 보다 동적이고 세분화된 권한이 필요한 경우에 사용됩니다.

Amazon MWAA는 네 가지 권한 부여 정책을 사용하여 고객 관리형 KMS 키에 연결합니다. 이는 CloudWatch Log, Amazon SQS 대기열, Aurora PostgreSQL 데이터베이스, Secrets Manager 암호, Amazon S3 버킷 및 DynamoDB 테이블에 저장된 데이터를 암호화하는 환경에 요구되는 세분화된 권한 때문입니다.

Amazon MWAA 환경을 생성하고 고객 관리형 KMS 키를 지정하면, Amazon MWAA는 사용자의 고객 관리형 KMS 키에 권한 부여 정책을 연결합니다. 이러한 정책을 통해 airflow.region}.amazonaws.com의 Amazon MWAA는 고객 관리형 KMS 키를 사용하여 Amazon MWAA 소유 리소스를 사용자를 대신하여 암호화할 수 있습니다.

Amazon MWAA는 사용자를 대신해서 추가 권한을 생성하여 지정된 KMS 키에 연결합니다. 여기에는 환경을 삭제할 경우 권한 부여를 중지하고, 고객 관리형 KMS 키를 클라이언트 측 암호화(CSE)에 사용하고, Secrets Manager의 고객 관리형 키로 보호되는 암호에 액세스하는 데 필요한 AWS Fargate 실행 역할에도 이 키를 사용하는 정책이 포함됩니다.

권한 부여 정책

Amazon MWAA는 사용자를 대신하여 고객 관리형 KMS 키에 다음과 같은 리소스 기반 정책 권한을 추가합니다. 이러한 정책을 통해 권한 피부여자와 주체(Amazon MWAA)가 정책에 정의된 작업을 수행할 수 있습니다.

권한 1: 데이터 플레인 리소스를 생성하는 데 사용

{ "Name": "mwaa-grant-for-env-mgmt-role-environment name", "GranteePrincipal": "airflow.region.amazonaws.com", "RetiringPrincipal": "airflow.region.amazonaws.com", "Operations": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey", "kms:RetireGrant" ] }

권한 2: ControllerLambdaExecutionRole 액세스에 사용

{ "Name": "mwaa-grant-for-lambda-exec-environment name", "GranteePrincipal": "airflow.region.amazonaws.com", "RetiringPrincipal": "airflow.region.amazonaws.com", "Operations": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:RetireGrant" ] }

권한 3: CfnManagementLambdaExecutionRole 액세스에 사용

{ "Name": " mwaa-grant-for-cfn-mgmt-environment name", "GranteePrincipal": "airflow.region.amazonaws.com", "RetiringPrincipal": "airflow.region.amazonaws.com", "Operations": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ] }

권한 4: 백엔드 암호에 액세스하기 위한 Fargate 실행 역할에 사용

{ "Name": "mwaa-fargate-access-for-environment name", "GranteePrincipal": "airflow.region.amazonaws.com", "RetiringPrincipal": "airflow.region.amazonaws.com", "Operations": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:RetireGrant" ] }

고객 관리형 키에 대한 키 정책 연결

Amazon MWAA에서 자체 고객 관리형 KMS 키를 사용하기로 선택한 경우, Amazon MWAA에서 데이터를 암호화하는 데 사용할 수 있도록 다음 정책을 그 키에 연결해 주어야 합니다.

Amazon MWAA 환경에 사용한 고객 관리형 KMS 키가 아직 CloudWatch와 함께 작동하도록 구성되어 있지 않다면, 암호화된 CloudWatch Log를 허용하도록 키 정책을 업데이트해야 합니다. 자세한 내용은 AWS Key Management Service 서비스를 이용한 CloudWatch의 Log 로그 데이터 암호화를 참조하십시오.

다음 예에서는 CloudWatch Log에 관한 주요 정책을 나타냅니다. 리전에 대해 제공된 샘플 값을 대체합니다.

{ "Effect": "Allow", "Principal": { "Service": "logs.us-west-2.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnLike": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-west-2:*:*" } } }