本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
借助 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
所拥有的指定分类器模型的版本 1。 AWS 账户
111122223333
例 用于访问特定分类器模型版本的 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中使用密钥策略。
自定义模型的基于资源的策略
在其他用户的 Amazon Comprehend 用户 AWS 账户 可以 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、或 Amazon Comprehend AWS CLI API 添加基于资源的策略。
您可以在 AWS Management Console中使用 Amazon Comprehend。
添加基于资源的策略
-
登录 AWS Management Console 并打开亚马逊 Comprehend 控制台,网址为 https://console.aws.amazon.com/comprehend/
-
在左侧导航菜单中的自定义下,请选择包含您的自定义模型的页面:
-
如果您要共享自定义文档分类器,请选择自定义分类。
-
如果您要共享自定义实体识别器,请选择自定义实体识别。
-
-
在模型列表中,选择模型名称以打开其详细信息页面。
-
在版本下,请选择要共享的模型版本的名称。
-
在版本详情页面上,选择标签、VPC 和策略选项卡。
-
在基于资源的策略部分中,选择编辑。
-
在编辑基于资源的策略页面上,执行以下操作:
-
在策略名称中,输入一个可以帮助您在创建策略后识别该策略的名称。
-
在授权下,指定以下一个或多个实体以授权它们导入您的模型:
字段 定义和示例 服务主体
可以访问此模型版本的服务的服务主体标识符。例如:
comprehend.amazonaws.com
AWS 账户 IDs
AWS 账户 可以访问此模型版本的。授权属于该账户的所有用户。例如:
111122223333,123456789012
IAM 实体
ARNs 适用于可以访问此模型版本的用户或角色。例如:
arn: aws: iam:: 111122223333: user/ExampleUser, arn:aws:iam::444455556666:role/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
命令中指定的模型版本。 -
委托人 — 该政策授权
jane
来自 AWS 账户 444455556666的用户和来自123456789012的所有用户。 AWS 账户
{
"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 账户。