使用由客户托管的密钥进行加密
您可以选择为环境中的数据加密提供由客户托管的密钥。您必须在与 Amazon MWAA 环境实例和存储工作流程资源的 Amazon S3 存储桶相同的区域中创建由客户托管的 KMS 密钥。如果您指定的由客户托管的 KMS 密钥所在的账户与您用于配置环境的账户不同,则必须使用其 ARN 指定该密钥以进行跨账户访问。有关创建密钥的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥。
支持什么?
| Amazon KMS 功能 | 支持 |
|---|---|
|
是 |
|
|
否 |
|
|
否 |
使用授权进行加密。
本主题介绍 Amazon MWAA 代表您附加到由客户托管的 KMS 密钥的授权,以加密和解密数据。
工作方式
由客户托管的 KMS 密钥的 Amazon KMS 支持两种基于资源的访问控制机制:密钥策略和授权。
当权限主要是静态且在同步服务模式下使用时,使用密钥政策。当需要更动态和更精细的权限时,例如当某服务需要为自己或其他账户定义不同的访问权限时,就会使用授权。
Amazon MWAA 使用四项授权策略并将其附加到由客户托管的 KMS 密钥。这是因为环境需要精细权限才能加密来自 CloudWatch Logs、Amazon SQS 队列、Aurora PostgreSQL 数据库数据库、Secrets Manager 密钥、Amazon S3 存储桶和 DynamoDB 表的静态数据。
当您创建 Amazon MWAA 环境并指定由客户托管的 KMS 密钥时,Amazon MWAA 会将授权策略附加到由客户托管的 KMS 密钥。这些策略允许 airflow. 中的 Amazon MWAA 使用由客户托管的 KMS 密钥代表您加密 Amazon MWAA 拥有的资源。us-east-1.amazonaws.com
Amazon MWAA 代表您为指定的 KMS 密钥创建并附加额外授权。这包括各种策略,例如在删除环境后停用授权,使用由客户托管的 KMS 密钥进行客户端加密 (CSE) 以及 Amazon Fargate 执行角色需要在 Secrets Manager 中访问由客户托管密钥保护的密钥。
授权策略
Amazon MWAA 代表您向由客户托管的 KMS 密钥添加以下基于资源的策略授权。这些策略允许被授予者和主体 (Amazon MWAA) 执行策略中定义的操作。
授权 1:用于创建数据面板资源
{ "Name": "mwaa-grant-for-env-mgmt-role-environment name", "GranteePrincipal": "airflow.us-east-1.amazonaws.com", "RetiringPrincipal": "airflow.us-east-1.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.us-east-1.amazonaws.com", "RetiringPrincipal": "airflow.us-east-1.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.us-east-1.amazonaws.com", "RetiringPrincipal": "airflow.us-east-1.amazonaws.com", "Operations": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ] }
授权 4:用于 Fargate 执行角色访问后端机密
{ "Name": "mwaa-fargate-access-for-environment name", "GranteePrincipal": "airflow.us-east-1.amazonaws.com", "RetiringPrincipal": "airflow.us-east-1.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 Logs。有关更多信息,请参阅使用 Amazon Key Management Service 服务加密 CloudWatch Logs 中的日志数据。
以下示例代表 CloudWatch Logs 的密钥策略。替换为该区域提供的样本值。
{ "Effect": "Allow", "Principal": { "Service": "logs.us-east-1.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-east-1:*:*" } } }