View a markdown version of this page

使用由客户托管的密钥进行加密 - Amazon Managed Workflows for Apache Airflow

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

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

您可以选择为环境中的数据加密提供密Customer-managed 钥。您必须在与 Amazon MWAA 环境实例和存储工作流程资源的 Amazon S3 存储桶相同的区域中创建客户管理的 KMS 密钥。如果您指定的由客户托管的 KMS 密钥所在的账户与您用于配置环境的账户不同,则必须使用其 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 日志、亚马逊 SQS 队列、Aurora PostgreSQL 数据库数据库、密钥管理器密钥、亚马逊 S3 存储桶和 DynamoDB 表的静态数据。

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

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

授权策略

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 有关更多信息,请参阅 CloudWatch 使用 AWS Key Management Service 服务中的加密日志数据

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

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