Amazon Augmented AI 中的权限和安全性 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Augmented AI 中的权限和安全性

使用 Amazon Agumented AI (Amazon A2I) 为您的 ML/AI 应用程序创建人工审核工作流程时,您可以在亚马逊创建和配置资源, SageMaker 例如人力和员工任务模板。要配置和启动人工循环,你可以将亚马逊 A2I 与其他 Amazon 服务(例如亚马逊 Textract 或 Amazon Rekognition)集成,要么使用亚马逊增强人工智能运行时 API。要创建人工审核工作流程并启动人工循环,您必须将某些策略附加到您的 Amazon Identity and Access Management (IAM) 角色或用户。具体来说:

  • 自 2020 年 1 月 12 日当天开始,当您使用图像输入数据启动人工循环时,您必须向包含输入数据的 Amazon S3 存储桶添加 CORS 标头策略。请参阅CORS 权限要求,了解更多信息。

  • 创建流定义时,您需要提供一个角色,向 Amazon A2I 授予权限以访问 Amazon S3,这包括读取在人工任务 UI 中呈现的对象,以及写入人工审核的结果。

    此角色还必须附加信任策略才能授予代入该角色的 SageMaker 权限。这使得 Amazon A2I 可以根据您附加到角色的权限执行操作。

    有关您可修改并附加到用于创建流定义的角色的示例策略,请参阅向用于创建流定义的 IAM 角色添加权限。这些策略附加到在控制台 Amazon A2I 区域的人工审核工作流程部分中创建的 IAM 角色。 SageMaker

  • 要创建和启动人工循环,您可以从内置任务类型(如 DetectModerationLabelAnalyzeDocument)中使用 API 操作,也可以在自定义 ML 应用程序中使用 Amazon A2I 运行时系统 API 操作 StartHumanLoop。您需要将 AmazonAugmentedAIFullAccess 托管策略附加到调用这些 API 操作的用户,以便授予对这些服务的权限来使用 Amazon A2I 操作。要了解如何操作,请参阅 创建可调用 Amazon A2I API 操作的用户

    此策略授予调用与内置任务类型关联的 Amazon 服务的 API 操作的权限。例如,AmazonAugmentedAIFullAccess 不会授予调用 Amazon Rekognition DetectModerationLabel API 操作或 Amazon Textract AnalyzeDocument API 操作的权限。您可以使用更一般的策略 AmazonAugmentedAIIntegratedAPIAccess 以授予这些权限。有关更多信息,请参阅 创建有权调用 Amazon A2I、Amazon Textract 和 Amazon Rekognition API 操作的用户。当您想要向用户授予使用 Amazon A2I 和集成 Amazon 服务的 API 操作的广泛权限时,这是一个不错的选择。

    如果要配置更精细的权限,请参阅 Amazon Rekognition 基于身份的策略示例Amazon Textract 基于身份的策略示例,以了解可用于授权使用这些单独服务的基于身份的策略。

  • 要预览自定义工作人员任务 UI 模板,您需要有权读取在用户界面上呈现的 Amazon S3 对象的 IAM 角色。请参阅启用工作人员任务模板预览 中的策略示例。

CORS 权限要求

2020 年初,Chrome 和 Firefox 等广泛使用的浏览器改变了基于图像元数据旋转图像的默认行为,此数据称为 EXIF 数据。以前,浏览器将始终完全按照存储在磁盘上的方式显示图像,通常不进行旋转。更改之后,图像现在会根据名为方向值的图像元数据进行旋转。这对整个机器学习 (ML) 社区具有重要的影响。例如,如果未考虑 EXIF 方向,用于标注图像的应用程序可能会以意想不到的方向显示图像,并导致标签不正确。

从Chrome 89开始, Amazon 无法再自动阻止图像的旋转,因为网络标准组织W3C已认定,控制图像旋转的功能违反了网络的同源政策。因此,在您提交请求以创建人工循环时,为了确保工作人员以可预测的方向来标注输入图像,您必须向包含输入图像的 S3 存储桶添加 CORS 标头策略。

重要

如果您没有向包含输入数据的 S3 存储桶添加 CORS 配置,那么这些输入数据对象的人工审核任务将失败。

您可以在 Amazon S3 控制台中,将 CORS 策略添加到包含输入数据的 S3 存储桶。在 S3 控制台中,要在包含输入图像的 S3 存储桶上设置所需的 CORS 标头,请按照如何通过 CORS 添加跨域资源共享?中的详细说明进行操作。对托管您的图像的存储桶使用以下 CORS 配置代码。如果您使用 Amazon S3 控制台将策略添加到存储桶,则必须使用 JSON 格式。

JSON

[{ "AllowedHeaders": [], "AllowedMethods": ["GET"], "AllowedOrigins": ["*"], "ExposeHeaders": [] }]

XML

<CORSConfiguration> <CORSRule> <AllowedOrigin>*</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> </CORSRule> </CORSConfiguration>

以下 GIF 演示了 Amazon S3 文档中提供的说明,介绍如何使用 Amazon S3 控制台添加 CORS 标头策略。

向用于创建流定义的 IAM 角色添加权限

要创建流程定义,请将本节中的策略附加到您在 SageMaker 控制台中创建人工审核工作流程或使用 CreateFlowDefinition API 操作时使用的角色。

  • 如果您使用控制台创建人工审核工作流,在使用在控制台中创建人工审核工作流时,对于 IAM 角色字段,请输入角色的 Amazon 资源名称 (ARN)。

  • 使用 API 创建流定义时,请将这些策略附加到传递给 CreateFlowDefinition 操作的 RoleArn 参数的角色。

当您创建人工审核工作流(流定义)时,Amazon A2I 调用 Amazon S3 来完成您的任务。要授予 Amazon A2I 权限以在 Amazon S3 存储桶中检索和存储您的文件,请创建以下策略并将其附加到您的角色。例如,如果您发送用于进行人工审核的图像、文档和其他文件存储在名为 my_input_bucket 的 S3 存储桶中,并且如果您希望将人工审核存储在名为 my_output_bucket 的存储桶中,则创建以下策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my_input_bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my_output_bucket/*" ] } ] }

此外,IAM 角色必须具有以下信任策略才能授予代入该角色的 SageMaker 权限。要详细了解 IAM 信任策略,请参阅 Amazon Identity and Access Management 文档中策略和权限基于资源策略部分。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSageMakerToAssumeRole", "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

有关创建和管理 IAM 角色的更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的以下主题:

创建可调用 Amazon A2I API 操作的用户

要使用 Amazon A2I 为 Amazon Rekognition、Amazon Textract 或 Amazon A2I 运行时系统 API 创建和启动人工循环,您必须使用有权调用 Amazon A2I 操作的用户。为此,请使用 IAM 控制台将 AmazonAugmentedAIFullAccess 托管策略附加到新的或现有的用户

该策略允许用户从 API 中调用 API 操作以创建和管理流程定义,并允许用户从 Amazon Agumented AI Runtime API 调用 API 来创建和管理人工循环。 SageMaker 要了解这些 API 操作的更多信息,请参阅在 Amazon Augmented AI 中使用 API

AmazonAugmentedAIFullAccess 不会授予使用 Amazon Rekognition 或 Amazon Textract API 操作的权限。

注意

您也可以将 AmazonAugmentedAIFullAccess 附加到用于创建和启动人工循环的 IAM 角色。

要提供访问权限,请为您的用户、组或角色添加权限:

有关更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的添加和删除 IAM 身份权限

创建有权调用 Amazon A2I、Amazon Textract 和 Amazon Rekognition API 操作的用户

要创建具有权限的用户,以便调用内置任务类型使用的 API 操作(即,对于 Amazon Rekognition 为 DetectModerationLables,对于 Amazon Textract 为 AnalyzeDocument)并有权使用所有 Amazon A2I API 操作,请附加 IAM 托管策略 AmazonAugmentedAIIntegratedAPIAccess。如果要为使用 Amazon A2I 且具有多种任务类型的用户授予广泛的权限,您可能需要使用该策略。要了解这些 API 操作的更多信息,请参阅在 Amazon Augmented AI 中使用 API

注意

您也可以将 AmazonAugmentedAIIntegratedAPIAccess 附加到用于创建和启动人工循环的 IAM 角色。

要提供访问权限,请为您的用户、组或角色添加权限:

有关更多信息,请参阅《Amazon Identity and Access Management 用户指南》中的添加和删除 IAM 身份权限

启用工作人员任务模板预览

要自定义工作人员在处理任务时看到的界面和说明,您可以创建工作人员任务模板。您可以使用CreateHumanTaskUi操作或 SageMaker 控制台创建模板。

要预览模板,您需要具有以下权限的 IAM 角色,以读取在用户界面上呈现的 Amazon S3 对象。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my_input_bucket/*" ] } ] }

对于 Amazon Rekognition 和 Amazon Textract 任务类型,您可以使用控制台的 “亚马逊增强人工智能” 部分预览您的模板。 SageMaker 对于自定义任务类型,您可以通过调用 RenderUiTemplate 操作预览模板。要预览模板,请按照任务类型的说明操作:

  • Amazon Rekognition 和 Amazon Textract 任务 SageMaker 类型 — 在控制台中,按照中记录的步骤使用角色的亚马逊资源名称 (ARN)。创建工作人员任务模板

  • 自定义任务类型 – 在 RenderUiTemplate 操作中,在 RoleArn 参数中使用角色的 ARN。

使用带有加密存储桶的 Amazon A2I Amazon KMS

如果您指定 Amazon Key Management Service (Amazon KMS) 客户托管密钥来加密OutputConfig的输出数据 CreateFlowDefinition,则必须为该密钥添加类似于以下内容的 IAM 策略。此策略向您用于创建人工循环的 IAM 执行角色授予权限,以便使用此密钥执行 "Action" 中列出的所有操作。要了解有关这些操作的更多信息,请参阅《 Amazon Key Management Service 开发者指南》中的Amazon KMS 权限

要使用此策略,请将 "Principal" 中的 IAM 服务角色 ARN,替换为您在创建人工审核工作流(流定义)时使用的执行角色的 ARN。当您使用 CreateFlowDefinition 创建标注作业时,这是您为 RoleArn 指定的 ARN。请注意,在控制台中创建流定义时,您不能提供 KmsKeyId

{ "Sid": "AllowUseOfKmsKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/example-role" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

其他权限和安全资源