使用由客户托管的密钥进行加密 - Amazon Managed Workflows for Apache Airflow
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用由客户托管的密钥进行加密

您可以选择为环境中的数据加密提供由客户托管的密钥。您必须在与您的 Amazon MWAA 环境实例和存储工作流程资源的 Amazon S3 存储桶相同的区域中创建客户托管KMS密钥。如果您指定的客户托管KMS密钥与您用于配置环境的账户不同,则必须使用该密钥来指定ARN用于跨账户访问的密钥。有关创建密钥的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的创建密钥

支持什么?

Amazon KMS 特征 支持

Amazon KMS 钥 ID 或ARN

Amazon KMS 密钥别名

Amazon KMS 多区域密钥

使用授权进行加密。

本主题介绍了 Amazon 代表您向客户托管KMS密钥MWAA附加的授权,用于加密和解密您的数据。

工作方式

客户托管KMS密钥支持两种基于资源的访问控制机制:密钥策略授权。 Amazon KMS

当权限主要是静态且在同步服务模式下使用时,使用密钥政策。当需要更动态和更精细的权限时,例如当某服务需要为自己或其他账户定义不同的访问权限时,就会使用授权。

Amazon 对您的客户托管KMS密钥MWAA使用并附加了四项授予政策。这是因为环境需要精细权限才能加密来自 CloudWatch 日志、亚马逊SQS队列、Aurora Postgre SQL 数据库数据库、Secrets Manager 密钥、Amazon S3 存储桶和 DynamoDB 表的静态数据。

当您创建亚马逊MWAA环境并指定客户托管KMS密钥时,亚马逊会将授予政策MWAA附加到您的客户托管KMS密钥。这些政策允许亚马逊MWAA使用您的客户托管KMS密钥代表您加密亚马逊拥有的资源MWAA。airflow.region}.amazonaws.com

Amazon 代表您MWAA创建并附加对指定KMS密钥的额外授权。这包括在删除环境后取消授权、使用客户托管KMS密钥进行客户端加密 (CSE) 以及 Amazon Fargate 执行角色需要在 Secrets Manager 中访问受客户托管密钥保护的机密的政策。

授权策略

Amazon 代表您向客户托管KMS密钥MWAA添加以下基于资源的政策授权。这些政策允许被授权人和委托人 (AmazonMWAA) 执行政策中定义的操作。

授权 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" ] }

将密钥政策附加到由客户托管的密钥

如果您选择在亚马逊上使用自己的客户托管KMS密钥MWAA,则必须将以下策略附加到密钥上,以允许亚马逊MWAA使用它来加密您的数据。

如果您在 Amazon MWAA 环境中使用的客户托管KMS密钥尚未配置为可用 CloudWatch,则必须更新密钥策略以允许使用加密 CloudWatch 日志。有关更多信息,请参阅 CloudWatch 使用 Amazon Key Management Service 服务加密日志数据

以下示例代表了 Lo CloudWatch gs 的密钥策略。替换为该区域提供的样本值。

{ "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:*:*" } } }