

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

# 使用由客户托管的密钥进行加密
<a name="custom-keys-certs"></a>

您可以选择为环境中的数据加密提供[客户管理的密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。您必须在与您的 Amazon MWAA 环境实例和存储工作流程资源的 Amazon S3 存储桶相同的区域中创建客户托管的 KMS 密钥。如果您指定的由客户托管的 KMS 密钥所在的账户与您用于配置环境的账户不同，则必须使用其 ARN 指定该密钥以进行跨账户访问。有关创建密钥的更多信息，请参阅《*AWS Key Management Service 开发者指南》*中的[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

## 支持什么？
<a name="custom-keys-grants-support"></a>


| AWS KMS 特征 | 支持 | 
| --- | --- | 
|  [AWS KMS 密钥 ID 或 ARN](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html)。  |  是  | 
|  [AWS KMS 密钥别名](https://docs.aws.amazon.com/kms/latest/developerguide/kms-alias.html)。  |  否  | 
|  [AWS KMS 多区域密钥](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)。  |  否  | 

## 使用授权进行加密。
<a name="custom-keys-grants-provide"></a>

本主题介绍 Amazon MWAA 代表您附加到由客户托管的 KMS 密钥的授权，以加密和解密数据。

### 工作原理
<a name="custom-keys-certs-grants"></a>

[客户管理的 KMS 密钥支持两种基于资源的访问控制机制：密[钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)和授权。 AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)

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

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

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

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

## 授权策略
<a name="custom-keys-certs-grant-policies"></a>

Amazon MWAA 代表您向由客户托管的 KMS 密钥添加以下[基于资源的策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)授权。这些策略允许被授予者和主体 (Amazon MWAA) 执行策略中定义的操作。

### 授权 1：用于创建数据面板资源
<a name="custom-keys-certs-grant-policies-1"></a>

```
{
  "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` 访问权限
<a name="custom-keys-certs-grant-policies-2"></a>

```
{
  "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` 访问权限
<a name="custom-keys-certs-grant-policies-3"></a>

```
{
  "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 执行角色访问后端机密
<a name="custom-keys-certs-grant-policies-4"></a>

```
{
  "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"
  ]
}
```

## 将密钥策略附加到由客户托管的密钥
<a name="custom-keys-certs-grant-policies-attach"></a>

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

如果您在 Amazon MWAA 环境中使用的客户管理的 KMS 密钥尚未配置为可使用 CloudWatch，则必须更新[密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)以允许使用加密日志。 CloudWatch 有关更多信息，请参阅[ CloudWatch 使用 AWS Key Management Service 服务中的加密日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)。

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

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