使用由客户托管的密钥进行加密 - 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 MWAA 代表您附加由客户托管的 KMS 密钥的授权,以加密和解密数据。

工作方式

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

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

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

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

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.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 日志。有关更多信息,请参阅 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:*:*" } } }