

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

# 使用客户托管密钥加密 OpenSearch UI 应用程序元数据
<a name="application-encryption-cmk"></a>

视觉资产和配置以元数据形式存储在 OpenSearch UI 应用程序中。这包括保存的查询、可视化和仪表板。来自关联数据源的数据不存储在元数据中。有关加密数据源中的数据的信息，请参阅 [Amazon OpenSearch 服务中的 OpenSearch 域名数据保护和针对 OpenSearch 无服务器集合的 Amaz](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/data-protection.html) [on Serverless 中的加密](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-encryption.html)。

您的 OpenSearch 界面元数据受静态加密保护。这样可以防止未经授权的访问。加密使用 AWS Key Management Service (AWS KMS) 来存储和管理加密密钥。默认情况下， OpenSearch 用户界面元数据使用 AWS 自有密钥进行加密。

您还可以使用客户管理密钥 (CMK) 功能来管理自己的加密密钥。这可以帮助您满足监管和合规要求。要使用 CMK，您必须创建一个新的 OpenSearch UI 应用程序并在创建过程中启用 CMK。目前不支持将现有 OpenSearch UI 应用程序从 AWS 自有密钥更新为 CMK。

何时使用客户托管密钥：
+ 您的组织对密钥管理有监管合规要求
+ 您需要对加密密钥的使用情况进行审计跟踪
+ 你想控制密钥轮换计划
+ 您需要与现有的密钥管理工作流程集成

使用客户管理的密钥时，您可以完全控制该密钥。这包括以下能力：
+ 建立和维护密钥策略
+ 创建和维护 IAM 策略和授权
+ 启用和禁用密钥
+ 轮换密钥的加密材料
+ 为密钥添加标签
+ 创建密钥别名
+ 安排删除密钥

**注意**  
客户管理的密钥必须与 OpenSearch 用户界面应用程序 AWS 区域 相同。您不能使用来自其他地区的密钥。

**Topics**
+ [使用客户托管密钥的先决条件](#application-encryption-cmk-prerequisites)
+ [使用控制台创建采用客户托管密钥加密的应用程序](#application-encryption-cmk-create-console)
+ [使用客户托管密钥加密创建应用程序 AWS CLI](#application-encryption-cmk-create-cli)
+ [监控客户托管密钥的使用情况](#application-encryption-cmk-monitoring)
+ [更新加密设置](#application-encryption-cmk-update)

## 使用客户托管密钥的先决条件
<a name="application-encryption-cmk-prerequisites"></a>

在使用客户托管密钥加密 OpenSearch 用户界面应用程序元数据之前，必须先在中 AWS KMS创建对称加密密钥。有关创建密钥的说明，请参阅《*AWS KMS 开发者指南*》中的[创建密钥](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)。

您的客户托管密钥的密钥策略必须授予 OpenSearch 用户界面使用该密钥的权限。使用以下密钥策略，将*placeholder values*替换为您自己的信息：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowOpenSearchUIToUseKey",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "application.opensearchservice.amazonaws.com"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministration",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::account-id:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
```

该策略包含两条语句：
+ 第一条语句允许 OpenSearch UI 使用密钥进行加密操作。
+ 第二条语句 AWS 账户 允许您的用户管理密钥。这包括更新密钥策略、启用或禁用密钥以及计划删除密钥的权限。您可以通过将根委托人替换为特定的 IAM 用户或角色来进一步限制这些权限。

有关密钥策略的更多信息，请参阅《*AWS KMS 开发人员指南》 AWS KMS*[中的使用密钥策略](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 使用控制台创建采用客户托管密钥加密的应用程序
<a name="application-encryption-cmk-create-console"></a>

在控制台中创建 OpenSearch UI 应用程序时，您可以指定用于加密应用程序元数据的客户托管密钥。

**使用控制台创建采用客户托管密钥加密的 OpenSearch UI 应用程序**

1. 在[https://console.aws.amazon.com/aos/家](https://console.aws.amazon.com/aos/home)中登录亚马逊 OpenSearch 服务控制台。

1. 在左侧导航窗格中，选择 **OpenSearch UI（控制面板）**。

1. 选择**创建应用程序**。

1. 在**应用程序名称**中，输入应用程序的名称。

1. 根据需要配置身份验证和管理员设置。有关更多信息，请参阅 [开始使用 Amazon OpenSearch 服务中的 OpenSearch 用户界面](application-getting-started.md)。

1. 在**加密**部分中，对于静**态加密**，选择**使用客户托管密钥**。

1. 从列表中选择现有的客户托管密钥，或者选择**创建密钥**以在中创建新密钥 AWS KMS。
**注意**  
密钥必须与您正在创建的应用程序 AWS 区域 相同。

1. （可选）向应用程序添加标签。

1. 选择**创建**。

## 使用客户托管密钥加密创建应用程序 AWS CLI
<a name="application-encryption-cmk-create-cli"></a>

要使用创建使用客户托管密钥加密的 OpenSearch UI 应用程序 AWS CLI，请使用带参数的 [create-applic](https://docs.aws.amazon.com/cli/latest/reference/opensearch/create-application.html) ation 命令。`--kms-key-arn`

将 *placeholder values* 替换为您自己的信息。

```
aws opensearch create-application \
    --name my-application \
    --kms-key-arn arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012
```

如果您未指定`--kms-key-arn`参数，则 OpenSearch 使用 AWS托管密钥加密应用程序的元数据。

## 监控客户托管密钥的使用情况
<a name="application-encryption-cmk-monitoring"></a>

当您在 OpenSearch 用户界面应用程序中使用客户托管密钥时，会在 AWS CloudTrail 日志中 AWS KMS 记录该密钥的每一次使用情况。您可以使用这些日志来监控密钥的使用方式和时间。日志显示哪个用户或服务访问了密钥。

AWS AWS KMS 每年自动轮换客户管理的密钥。您也可以根据需要手动轮换密钥。有关密钥轮换的更多信息，请参阅*AWS KMS 开发人员指南*中的[轮换 KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

有关监控密钥使用情况的更多信息，请参阅*AWS KMS 开发者指南 AWS CloudTrail*中的[使用记录 AWS KMS API 调用](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)。

**注意**  
使用客户托管的密钥会产生 AWS KMS 费用。费用基于存储的 API 请求和密钥的数量。有关定价的详细信息，请参阅[AWS 密钥管理服务定价](https://aws.amazon.com/kms/pricing/)。

## 更新加密设置
<a name="application-encryption-cmk-update"></a>

创建 OpenSearch UI 应用程序后，您无法更改其加密设置。如果您需要使用其他客户托管密钥，则必须创建新的应用程序。如果您需要在 AWS托管密钥和客户托管密钥之间切换，则还必须使用所需的加密设置创建一个新的应用程序。

**重要**  
在禁用或删除客户托管密钥之前，请考虑以下事项：  
如果您禁用密钥，应用程序将无法访问其加密的元数据。您必须重新启用相同的密钥才能恢复访问权限。
如果删除密钥，则应用程序的已保存对象将永久无法访问。这包括查询、可视化和仪表板。已删除的密钥无法恢复。
我们建议您在对密钥状态进行任何更改之前记录您的密钥 ARN。

**后续步骤**  
为应用程序配置 CMK 加密后，您可以：
+ 将数据源与您的应用程序关联。有关更多信息，请参阅 [管理数据来源关联和虚拟私有云访问权限](application-data-sources-and-vpc.md)。
+ 为您的团队创建工作空间。有关更多信息，请参阅 [使用亚马逊 OpenSearch 服务工作空间](application-workspaces.md)。
+ 设置密钥使用情况 AWS CloudTrail 监控。有关更多信息，请参阅 [监控客户托管密钥的使用情况](#application-encryption-cmk-monitoring)。