亚马逊 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 密钥的控制权限,从而允许访问 S OpenSearch ervice 自定义软件包所需的授权操作。有关授权的更多信息,请参阅Amazon KMS 开发人员指南

    这允许 S OpenSearch ervice 能够执行以下操作:

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

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

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

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

  • kms:DescribeKey— 提供客户托管式密钥详细信息以允许 Serv OpenSearch ice 验证密钥。

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

以下是您可以为 S OpenSearch ervice 创建程序包添加的策略声明示例:

"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 权限疑难解答

指定 Amazon Service 创建程序包的 OpenSearch 客户自主管理型密钥

您可以指定客户自主管理型密钥用于软件ZIP-PLUGIN包的第二层加密。

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

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

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

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

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

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

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

使用加密上下文进行监控

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

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

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

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

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

{ "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。

了解更多

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