亚马逊 OpenSearch 服务定制包裹 Amazon KMS 集成 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

亚马逊 OpenSearch 服务定制包裹 Amazon KMS 集成

默认情况下,Amazon S OpenSearch ervice 定制包裹提供加密,以保护您的ZIP-PLUGIN包裹处于静态状态 Amazon 托管式密钥。

  • Amazon 拥有的密钥— Amazon S OpenSearch ervice 定制包裹默认使用这些密钥来自动加密您的ZIP-PLUGIN包裹。您无法查看、管理、使用 Amazon 拥有的密钥 或审核其使用情况。但是,无需执行任何操作或更改任何计划即可保护用于加密数据的密钥。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的 Amazon 拥有的密钥

  • 客户托管密钥 — 您可以在创建ZIP-PLUGIN自定义软件包时选择客户托管密钥,在现有 Amazon 拥有的密钥 密钥的基础上添加第二层加密。

    Amazon S OpenSearch ervice 定制套餐支持使用由您创建、拥有并管理的对称客户托管密钥,在现有 Amazon 自有加密的基础上添加第二层加密。由于您可以完全控制此加密层,因此可以执行以下任务:

    • 建立和维护密钥政策

    • 制定和维护 Amazon Identity and Access Management (IAM) 策略和拨款

    • 启用和禁用密钥政策

    • 轮换密钥加密材料

    • 添加标签

    • 创建密钥别名

    • 计划密钥删除

有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的客户托管密钥

注意

Amazon S OpenSearch ervice 定制套餐可自动启用静态加密 Amazon 拥有的密钥 ,不收取任何费用。但是,当您使用客户托管密钥时,需要 Amazon KMS 付费。有关定价的更多信息,请参阅 Amazon Key Management Service 定价

Amazon S OpenSearch ervice 定制包裹服务如何使用补助金 Amazon KMS

OpenSearch 服务自定义包需要获得授权才能使用您的客户托管密钥。

当您创建使用客户托管密钥加密的ZIP-PLUGIN包裹时,Amazon S OpenSearch ervice 定制包裹服务会通过向发送CreateGrant请求来代表您创建授权 Amazon KMS。授 Amazon KMS 予 OpenSearch 服务访问您账户中 Amazon KMS 密钥的权限。S OpenSearch ervice 自定义软件包创建的授权有一个约束,即只有当请求包含带有您的自定义软件包 ID 的加密上下文时,才允许进行操作。

Amazon S OpenSearch ervice 定制包需要获得授权,才能使用您的客户托管密钥进行以下内部操作:

操作 描述
DescribeKey 向发送DescribeKey请求, Amazon KMS 以验证创建插件包时输入的对称客户托管密钥 ID 是否有效。
GenerateDataKeyWithoutPlaintext 向发送GenerateDataKeyWithoutPlaintext请求 Amazon KMS 以生成由您的客户托管密钥加密的数据密钥。
GenerateDataKey 向发送GenerateDataKey请求 Amazon KMS 以生成数据密钥,以便在内部复制软件包时对其进行加密。
Decrypt 向发送解密加密数据密钥的Decrypt请求,以便这些密钥可用于解密您的数据。 Amazon KMS

您可以随时撤消对授予的访问权限或删除该服务对客户托管密钥的访问权限。否则,S OpenSearch ervice 将无法访问由客户托管密钥加密的任何数据,这会影响依赖该数据的操作。例如,如果您尝试关联一个 S OpenSearch ervice 无法访问的插件包,则该操作会返回AccessDeniedException错误。

创建客户托管密钥

您可以使用 Amazon Web Services Management Console 或创建对称的客户托管密钥。 Amazon KMS APIs

创建对称的客户托管密钥
  • 按照Amazon Key Management Service 开发人员指南创建 KMS 密钥中的步骤进行操作。

密钥策略

密钥策略控制对客户自主管理型密钥的访问。每个客户托管式密钥必须只有一个密钥策略,其中包含确定谁可以使用密钥以及如何使用密钥的声明。创建客户托管式密钥时,可以指定密钥策略。有关更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的在 Amazon KMS中使用密钥策略

要将客户托管密钥与插件资源一起使用,您必须在密钥策略中允许以下 API 操作:

  • kms:CreateGrant – 向客户托管密钥添加授权。授予对指定 Amazon KMS 密钥的控制访问权限,允许授予 OpenSearch 服务自定义包所需的操作的访问权限。有关使用授权的更多信息,请参阅《Amazon KMS 开发者指南》

    这允许 OpenSearch 服务执行以下操作:

    • GenerateDataKeyWithoutPlainText用生成加密的数据密钥并将其存储以供进一步验证。

    • GenerateDataKey用在内部复制插件包。

    • 调用Decrypt以在内部访问插件包。

    • 设置停用主体,以允许服务 RetireGrant

  • kms:DescribeKey— 提供客户管理的密钥详细信息,以允许 OpenSearch 服务部门验证密钥。

  • kms:GenerateDataKey,kms:GenerateDataKeyWithoutPlaintext, kms:Decrypt — 授予 OpenSearch 服务自定义包访问权限,以便在授权中使用这些操作。

以下是您可以为 OpenSearch 服务自定义包添加的策略声明示例:

"Statement" : [ { "Sid" : "Allow access to principals authorized to use OpenSearch Service custom packages", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "custom-packages.region.amazonaws.com" }, "StringEquals" : { "kms:EncryptionContext:packageId": "Id of the package" } } }, { "Sid" : "Allow access to principals authorized to use Amazon OpenSearch Service custom packages", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "custom-packages.region.amazonaws.com" } } } ]

有关在策略中指定权限的更多信息,请参阅《Amazon Key Management Service 开发人员指南》 Amazon KMS中的密钥策略

有关密钥访问疑难解答的更多信息,请参阅《Amazon Key Management Service 开发人员指南》中的Amazon KMS 权限疑难解答

为亚马逊 OpenSearch 服务定制包指定客户托管密钥

您可以将客户托管密钥指定为ZIP-PLUGIN包裹的第二层加密。

创建插件包时,您可以通过输入密钥 ID 来指定数据密钥,S OpenSearch ervice 自定义包使用 Amazon KMS 密钥 ID 来加密插件包。

Amazon KMS 密钥 ID — Amazon KMS 客户托管密钥的密钥标识符。输入密钥 ID、密钥 ARN、别名名称或别名 ARN。

Amazon OpenSearch 服务自定义包裹加密上下文

加密上下文是一组可选的键值对,包含有关数据的其他上下文信息。

Amazon KMS 使用加密上下文作为其他经过身份验证的数据来支持经过身份验证的加密。当您在加密数据的请求中包含加密上下文时,会将加密上下文 Amazon KMS 绑定到加密数据。要解密数据,您必须在请求中包含相同的加密上下文。

Amazon OpenSearch 服务自定义包裹加密上下文

Amazon S OpenSearch ervice 自定义软件包在所有 Amazon KMS 加密操作中使用相同的加密上下文,其中密钥是packageId,值是插件包package-id的值。

使用加密上下文进行监控

当您使用对称客户托管密钥加密插件包时,您可以使用审计记录和日志中的加密上下文来识别客户托管密钥的使用情况。加密上下文还会显示在 Amazon CloudTrail 或 Amazon Logs 生成的 CloudWatch 日志中。

使用加密上下文控制对客户托管密钥的访问

您可以使用密钥政策和 IAM 策略中的加密上下文作为条件来控制对您的对称客户托管密钥的访问。您也可以在授予中使用加密上下文约束。

OpenSearch 服务自定义包在授权中使用加密上下文约束来控制对您的账户或区域中客户托管密钥的访问权限。授权约束要求授权允许的操作使用指定的加密上下文。

以下是密钥政策声明示例,用于授予对特定加密上下文的客户托管密钥的访问权限。此策略语句中的条件要求授权具有指定加密上下文的加密上下文约束。

{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Enable OpenSearch Service custom packages to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action" : [ "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals" : { "kms:EncryptionContext:packageId": "ID of the package" } } }

监控 OpenSearch 自定义包服务的加密密钥

当您在 OpenSearch 服务自定义包服务资源中使用 Amazon KMS 客户托管密钥时,您可以使用 CloudTrail 或 CloudWatch 日志来跟踪 OpenSearch 自定义包发送到的请求 Amazon KMS。

了解更多

以下资源提供有关静态数据加密的更多信息。