本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与其他人共享自定义模型 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:GenerateDataKey
和kms:Decrypt
操作一起使用。kms: EncryptionContext — 将此条件密钥与
kms:GenerateDataKey
kms: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。
添加基于资源的策略
-
登录 AWS Management Console 并打开 Amazon Comprehend 控制台,网址:https://console.aws.amazon.com/comprehend/
-
在左侧导航菜单中的自定义下,请选择包含您的自定义模型的页面:
-
如果您要共享自定义文档分类器,请选择自定义分类。
-
如果您要共享自定义实体识别器,请选择自定义实体识别。
-
-
在模型列表中,选择模型名称以打开其详细信息页面。
-
在版本下,请选择要共享的模型版本的名称。
-
在版本详情页面上,选择标签、VPC 和策略选项卡。
-
在基于资源的策略部分中,选择编辑。
-
在编辑基于资源的策略页面上,执行以下操作:
-
在策略名称中,输入一个可以帮助您在创建策略后识别该策略的名称。
-
在授权下,指定以下一个或多个实体以授权它们导入您的模型:
字段 定义和示例 服务主体
可以访问此模型版本的服务的服务主体标识符。例如:
comprehend.amazonaws.com
AWS 账户 ID
可以访问此模型版本的 AWS 账户。授权属于该账户的所有用户。例如:
111122223333,123456789012
IAM 实体
可以访问此模型版本的用户或角色的 ARN。例如:
arn: aws: iam:: 111122223333: user/,arn: aws: iam:: 444455556666: role/ ExampleUser ExampleRole
-
-
在共享下,您可以复制模型版本的 ARN,以帮助您与将要导入模型的人员共享。当有人从不同的 AWS 账户 导入自定义模型时,需要模型版本 ARN。
-
选择保存。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 请求中向自定义模型添加策略。为此,请在提交CreateDocumentClassifier或CreateEntityRecognizer请求时提供 ModelPolicy 参数的策略 JSON。
步骤 2:提供其他人需要导入的详细信息
现在,您已将基于资源的策略添加到您的自定义模型中,您已授权其他 Amazon Comprehend 用户将您的模型导入到他们的 AWS 账户 中。但是,在他们可以导入之前,您必须向他们提供以下详细信息:
-
模块版本的 Amazon 资源名称(ARN)。
-
包含模型的 AWS 区域。任何导入您的模型的人都必须使用相同的 AWS 区域。
-
模型是否已加密,如果已加密,则您使用的 AWS KMS 密钥类型:AWS 拥有的密钥 或客户自主管理型密钥。
-
如果您的模型使用客户自主管理型密钥加密,您必须提供 KMS 密钥的 ARN。任何导入您的模型的人都必须在其 AWS 账户 中包含 IAM 服务角色中的 ARN。此角色授权 Amazon Comprehend 在导入期间使用 KMS 密钥来解密模型。
有关其他用户如何导入您的模型的更多信息,请参阅 从另一个 AWS 账户 导入自定义模型。