与其他人共享自定义模型 AWS 账户 - Amazon Comprehend

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

与其他人共享自定义模型 AWS 账户

借助 Amazon Comprehend,您可以与其他人共享您的自定义模型,这样他们就可以将您的模型导入他们的 AWS 账户。当用户导入您的一个自定义模型时,他们会在自己的账户中创建一个新的自定义模型。他们的新模型与您共享的模型相同。

要共享自定义模型,您需要为其附加一个授权他人导入该模型的策略。然后,您可以向这些用户提供他们需要的详细信息。

注意

当其他用户导入您共享的自定义模型时,他们必须使用包含您的模型的相同 AWS 区域,例如。美国东部(弗吉尼亚州北部)。

开始之前

在共享模型之前,您必须在 AWS 账户 中的 Amazon Comprehend 中拥有经过训练的自定义分类器或自定义实体识别器。有关训练自定义模型的更多信息,请参阅自定义分类自定义实体识别

所需的权限

在向自定义模型添加基于资源的策略之前,您需要在 AWS Identity and Access Management (IAM) 中获得权限。您的用户、组或角色必须附加策略,这样您才能创建、获取和删除模型策略,如以下示例所示。

例 用于管理自定义模型的基于资源的策略的 IAM policy
{ "Effect": "Allow", "Action": [ "comprehend:PutResourcePolicy", "comprehend:DeleteResourcePolicy", "comprehend:DescribeResourcePolicy" ], "Resource": "arn:aws:comprehend:us-west-2:111122223333:document-classifier/foo/version/*" }

有关创建 IAM policy 的更多信息,请参阅《IAM 用户指南》中的创建 IAM policy。有关附加 IAM policy 的信息,请参阅《IAM 用户指南》中的添加和删除 IAM 身份权限

如果您要共享加密模型,则可能需要为 AWS KMS 添加权限。此要求取决于您在 Amazon Comprehend 中用于加密模型的 KMS 密钥的类型。

AWS 拥有的密钥 由 AWS 服务拥有和管理。如果您使用 AWS 拥有的密钥,则无需为 AWS KMS 添加权限,并且可以跳过本节。

客户自主管理型密钥是在您的 AWS 账户 中创建、拥有和管理的密钥。若要使用客户自主管理型密钥,您必须向 KMS 密钥策略添加一条语句。

该策略语句授权一个或多个实体(例如用户或账户)执行解密模型所需的 AWS KMS 操作。

您可以使用条件键来帮助防止混淆代理问题。有关更多信息,请参阅 防止跨服务混淆座席

在策略中使用以下条件密钥来验证访问您的 KMS 密钥的实体。当用户导入模型时,AWS KMS 会检查源模型版本的 ARN 是否符合条件。如果您未在策略中包含条件,则指定的委托人可以使用您的 KMS 密钥解密任何模型版本:

  • a@@ ws: SourceArn — 将此条件键与kms:GenerateDataKeykms:Decrypt操作一起使用。

  • kms: EncryptionContext — 将此条件密钥与kms:GenerateDataKeykms:Decrypt、和kms:CreateGrant操作配合使用。

在以下示例中,策略授权 AWS 账户 444455556666 使用 AWS 账户 111122223333 所拥有的指定分类器模型的版本 1。

例 用于访问特定分类器模型版本的 KMS 密钥策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:comprehend:us-west-2:111122223333:document-classifier/classifierName/version/1" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:comprehend:arn": "arn:aws:comprehend:us-west-2:111122223333:document-classifier/classifierName/version/1" } } } ] }

以下示例策略授权用户ExampleUser 通过 Amazon C AWS 账户 444455556666 om ExampleRolep AWS 账户 123456789012 rehend 服务访问此 KMS 密钥。

例 允许访问 Amazon Comprehend 服务的 KMS 密钥策略(替代方案 1)。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:user/ExampleUser", "arn:aws:iam::123456789012:role/ExampleRole" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:comprehend:*" } } }, { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:user/ExampleUser", "arn:aws:iam::123456789012:role/ExampleRole" ] }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:comprehend:arn": "arn:aws:comprehend:*" } } } ] }

以下示例策略授权 AWS 账户 444455556666 通过 Amazon Comprehend 服务访问此 KMS 密钥,使用前一个示例的替代语法。

例 允许访问 Amazon Comprehend 服务的 KMS 密钥策略(替代方案 2)。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:comprehend:arn": "arn:aws:comprehend:*" } } } ] }

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

自定义模型的基于资源的策略

在其他 AWS 账户 的 Amazon Comprehend 用户可以从您的 AWS 账户导入自定义模型之前,您必须授权他们这样做。要对它们进行授权,请将基于资源的策略添加到您要共享的模型版本中。在基于资源的策略是附加到 AWS 中的资源的 IAM policy。

当您将资源策略附加到自定义模型版本时,该策略会授权用户、组或角色对模型版本执行 comprehend:ImportModel 操作。

例 自定义模型版本的基于资源的策略

此示例在 Principal 属性中指定了授权实体。资源“*”是指您附加策略的特定模型版本。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "comprehend:ImportModel", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:user/ExampleUser", "arn:aws:iam::123456789012:role/ExampleRole" ] } } ] }

对于您附加到自定义模型的策略,comprehend:ImportModel 是 Amazon Comprehend 支持的唯一操作。

有关基于资源的策略的更多信息,请参见《IAM 用户指南》中的基于身份的策略和基于资源的策略

步骤 1:向自定义模型添加基于资源的策略

您可以使用 AWS Management Console、AWS CLI 或 Amazon Comprehend API 添加基于资源的策略。

您可以在 AWS Management Console 中使用 Amazon Comprehend。

添加基于资源的策略
  1. 登录 AWS Management Console 并打开 Amazon Comprehend 控制台,网址:https://console.aws.amazon.com/comprehend/

  2. 在左侧导航菜单中的自定义下,请选择包含您的自定义模型的页面:

    1. 如果您要共享自定义文档分类器,请选择自定义分类

    2. 如果您要共享自定义实体识别器,请选择自定义实体识别

  3. 在模型列表中,选择模型名称以打开其详细信息页面。

  4. 版本下,请选择要共享的模型版本的名称。

  5. 在版本详情页面上,选择标签、VPC 和策略选项卡。

  6. 基于资源的策略部分中,选择编辑

  7. 编辑基于资源的策略页面上,执行以下操作:

    1. 策略名称中,输入一个可以帮助您在创建策略后识别该策略的名称。

    2. 授权下,指定以下一个或多个实体以授权它们导入您的模型:

      字段 定义和示例

      服务主体

      可以访问此模型版本的服务的服务主体标识符。例如:

      comprehend.amazonaws.com

      AWS 账户 ID

      可以访问此模型版本的 AWS 账户。授权属于该账户的所有用户。例如:

      111122223333,123456789012

      IAM 实体

      可以访问此模型版本的用户或角色的 ARN。例如:

      arn: aws: iam:: 111122223333: user/,arn: aws: iam:: 444455556666: role/ ExampleUser ExampleRole

  8. 共享下,您可以复制模型版本的 ARN,以帮助您与将要导入模型的人员共享。当有人从不同的 AWS 账户 导入自定义模型时,需要模型版本 ARN。

  9. 选择保存。Amazon Comprehend 创建基于资源的策略并将其附加到您的模型。

要使用向自定义模型添加基于资源的策略AWS CLI,请使用PutResourcePolicy命令。 命令使用以下参数:

  • resource-arn:自定义模型的 ARN,包括模型版本。

  • resource-policy:一个 JSON 文件,用于定义要附加到您的自定义模型的基于资源的策略。

    您也可以将策略作为内联 JSON 字符串提供。要为您的策略提供有效的 JSON,请用双引号将属性名和值括起来。如果 JSON 正文也用双引号括起来,则可以转义策略内的双引号。

  • policy-revision-id:Amazon Comprehend 分配给您正在更新的策略的修订 ID。如果您正在创建没有先前版本的新策略,请不要使用此参数。Amazon Comprehend 会为您创建修订版 ID。

例 使用 put-resource-policy 命令向自定义模型添加基于资源的策略

此示例在名为 policyFile.json 的 JSON 文件中定义了一个策略,并将该策略与模型关联起来。该模型是名为 mycf1 的分类器的 v2 版本。

$ aws comprehend put-resource-policy \ > --resource-arn arn:aws:comprehend:us-west-2:111122223333:document-classifier/mycf1/version/v2 \ > --resource-policy file://policyFile.json \ > --policy-revision-id revision-id

资源策略的 JSON 文件包含以下内容:

  • 操作:策略授权指定委托人使用 comprehend:ImportModel

  • 资源:自定义模型的 ARN。资源“*”是指您在 put-resource-policy 命令中指定的模型版本。

  • 委托人:该策略授权来自 AWS 账户 444455556666 的用户 jane 和来自 AWS 账户 123456789012 的所有用户。

{ "Version":"2012-10-17", "Statement":[ {"Sid":"ResourcePolicyForImportModel", "Effect":"Allow", "Action":["comprehend:ImportModel"], "Resource":"*", "Principal": {"AWS": ["arn:aws:iam::444455556666:user/jane", "123456789012"] } } ] }

要使用 Amazon Comprehend API 向自定义模型添加基于资源的策略,请使用 API 操作。PutResourcePolicy

您还可以在创建模型的 API 请求中向自定义模型添加策略。为此,请在提交CreateDocumentClassifierCreateEntityRecognizer请求时提供 ModelPolicy 参数的策略 JSON。

步骤 2:提供其他人需要导入的详细信息

现在,您已将基于资源的策略添加到您的自定义模型中,您已授权其他 Amazon Comprehend 用户将您的模型导入到他们的 AWS 账户 中。但是,在他们可以导入之前,您必须向他们提供以下详细信息:

  • 模块版本的 Amazon 资源名称(ARN)。

  • 包含模型的 AWS 区域。任何导入您的模型的人都必须使用相同的 AWS 区域。

  • 模型是否已加密,如果已加密,则您使用的 AWS KMS 密钥类型:AWS 拥有的密钥 或客户自主管理型密钥。

  • 如果您的模型使用客户自主管理型密钥加密,您必须提供 KMS 密钥的 ARN。任何导入您的模型的人都必须在其 AWS 账户 中包含 IAM 服务角色中的 ARN。此角色授权 Amazon Comprehend 在导入期间使用 KMS 密钥来解密模型。

有关其他用户如何导入您的模型的更多信息,请参阅 从另一个 AWS 账户 导入自定义模型