分配使用 IAM 的 Ground Truth 权限 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

分配使用 IAM 的 Ground Truth 权限

使用此页面上的主题,了解如何使用 AWS Identity and Access Management (IAM) 托管策略和自定义策略来管理对 Ground Truth 和关联资源的访问。

您可以使用此页面上的部分了解以下内容:

  • 如何创建 IAM 策略以授予 IAM 用户或角色创建标记作业的权限。管理员可以使用 IAM 策略来限制对 Amazon SageMaker 和其他特定于 的 AWS 服务的访问Ground Truth。

  • 如何为标记作业创建执行角色。执行角色是您在创建标记作业时指定的角色。该角色用于执行标记作业。

以下是在该页面上找到的主题的概述:

授予常规权限以开始使用 Ground Truth

如果您开始使用 Ground Truth 并且不需要使用案例的精细权限,您可以将 托管策略附加到 AmazonSageMakerFullAccess IAM 用户或角色,以授予该实体创建标记作业的权限。这是一个广泛的策略,它通过 控制台和 API 授予IAM实体使用 SageMaker 功能以及相关 AWS 服务功能的权限。此策略向IAM实体授予权限以创建标记作业以及使用 创建和管理人力Amazon Cognito。要了解更多信息,请参阅AmazonSageMakerFullAccess Policy

要创建执行角色,您可以将策略 AmazonSageMakerGroundTruthExecution 附加到 IAM 角色。执行角色是您在创建标记作业时指定的角色,用于执行标记作业。AmazonSageMakerGroundTruthExecution 授予所有必需的权限,但 S3 存储桶和不满足策略所指定条件的Lambda函数以外的数据和存储卷加密权限除外。您应该了解此策略中包含的以下 Amazon S3 和 AWS Lambda 权限:

  • AWS Lambda 权限:当您创建自定义标记工作流时,此执行角色仅限于使用以下字符串之一作为AWS Lambda函数名称的一部分调用 函数GtRecipe:、SageMakerSagemakersagemakerLabelingFunction。这适用于注释前和注释后Lambda函数。如果您选择使用不含这些字符串的名称,则必须向用于创建标记作业的执行角色显式提供lambda:InvokeFunction权限。

  • Amazon S3 权限:此策略授予执行角色访问名称中包含以下字符串的Amazon S3存储桶的权限GroundTruth:、GroundtruthgroundtruthSageMakerSagemakersagemaker。确保您的输入和输出存储桶名称包含这些字符串,或向执行角色添加其他权限,以向其授予访问 S3 存储桶的权限。您必须向此角色授予对 S3 存储桶执行以下操作的权限AbortMultipartUpload:、 GetObjectPutObject

使用 Amazon SageMaker Ground Truth 控制台和 API 所需的权限

要使用 Ground Truth 控制台的 SageMaker 区域,您需要向 IAM 实体授予访问 SageMaker 和 使用的其他 AWS 服务的权限Ground Truth。例如,您必须添加Amazon S3操作以授予对包含输入和输出数据的 Amazon S3 存储桶的访问权限。访问其他 AWS 服务的权限取决于您的使用案例:

  • AWS Marketplace 使用供应商人力需要 权限。

  • Amazon Cognito 私有工作团队设置需要 权限。

  • AWS KMS 需要 权限才能查看可用于输出数据加密的可用AWS KMS密钥。

  • IAM 列出预先存在的执行角色或创建新的执行角色时,需要 权限。此外,您必须使用添加PassRole权限SageMaker以允许 使用选择用于执行标记作业的执行角色。

以下部分列出了您可能希望向 IAM 角色授予的使用 的一个或多个功能的策略Ground Truth。

授予使用所有Ground Truth控制台功能的权限

要为 IAM 用户或角色授予权限以使用 Ground Truth 控制台的 SageMaker 区域创建标记作业,请将以下策略附加到该用户或角色。以下策略将授予 IAM 角色使用内置任务类型任务类型创建标记作业的权限。有关创建自定义标记工作流时必须包含的策略,请参阅以下部分。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SageMakerApis", "Effect": "Allow", "Action": [ "sagemaker:*" ], "Resource": "*" }, { "Sid": "KmsKeysForCreateForms", "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:ListAliases" ], "Resource": "*" }, { "Sid": "AccessAwsMarketplaceSubscriptions", "Effect": "Allow", "Action": [ "aws-marketplace:ViewSubscriptions", "aws-marketplace:DescribeListings" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:DescribeSecret", "secretsmanager:ListSecrets" ], "Resource": "*" }, { "Sid": "ListAndCreateExecutionRoles", "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy" ], "Resource": "*" }, { "Sid": "PassRoleForExecutionRoles", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "sagemaker.amazonaws.com" } } }, { "Sid": "GroundTruthConsole", "Effect": "Allow", "Action": [ "groundtruthlabeling:*", "lambda:InvokeFunction", "lambda:ListFunctions", "s3:GetObject", "s3:PutObject", "s3:ListBucket", "s3:GetBucketCors", "s3:PutBucketCors", "s3:SelectObjectContent", "s3:ListAllMyBuckets", "cognito-idp:AdminAddUserToGroup", "cognito-idp:AdminCreateUser", "cognito-idp:AdminDeleteUser", "cognito-idp:AdminDisableUser", "cognito-idp:AdminEnableUser", "cognito-idp:AdminRemoveUserFromGroup", "cognito-idp:CreateGroup", "cognito-idp:CreateUserPool", "cognito-idp:CreateUserPoolClient", "cognito-idp:CreateUserPoolDomain", "cognito-idp:DescribeUserPool", "cognito-idp:DescribeUserPoolClient", "cognito-idp:ListGroups", "cognito-idp:ListIdentityProviders", "cognito-idp:ListUsers", "cognito-idp:ListUsersInGroup", "cognito-idp:ListUserPoolClients", "cognito-idp:ListUserPools", "cognito-idp:UpdateUserPool", "cognito-idp:UpdateUserPoolClient" ], "Resource": "*" } ] }

在 控制台中创建自定义标记工作流

如果要使用 控制台创建自定义标记作业,则必须将以下操作添加到上述策略中。

{ "Sid": "GroundTruthConsoleCustomWorkflow", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:ListFunctions" ], "Resource": "*" }

授予创建私有人力的权限

在添加到权限策略时,以下权限授予访问权限以创建和管理私有人力和工作团队。要了解私有人力的更多信息,请参阅使用私有人力

{ "Effect": "Allow", "Action": [ "cognito-idp:AdminAddUserToGroup", "cognito-idp:AdminCreateUser", "cognito-idp:AdminDeleteUser", "cognito-idp:AdminDisableUser", "cognito-idp:AdminEnableUser", "cognito-idp:AdminRemoveUserFromGroup", "cognito-idp:CreateGroup", "cognito-idp:CreateUserPool", "cognito-idp:CreateUserPoolClient", "cognito-idp:CreateUserPoolDomain", "cognito-idp:DescribeUserPool", "cognito-idp:DescribeUserPoolClient", "cognito-idp:List", "cognito-idp:UpdateUserPool", "cognito-idp:UpdateUserPoolClient" ], "Resource": "" },

授予权限以订阅供应商人力

您可以将以下 JSON 添加到 中的策略,以使用 Amazon SageMaker Ground Truth 控制台和 API 所需的权限向IAM实体授予订阅供应商人力的权限。

{ "Sid": "AccessAwsMarketplaceSubscriptions", "Effect": "Allow", "Action": [ "aws-marketplace:Subscribe", "aws-marketplace:Unsubscribe", "aws-marketplace:ViewSubscriptions", "aws-marketplace:DescribeListings" ], "Resource": "*" }

如果您的 需要比 中所述的权限更精细的 SageMaker API 操作访问权限使用 Amazon SageMaker Ground Truth 控制台和 API 所需的权限,您可以将以下 JSON 添加到您的策略,以授予列出和描述您订阅的供应商工作团队的权限。

{ "Sid": "SageMakerVendorWorkteamApis", "Effect": "Allow", "Action": [ "sagemaker:ListSubscribedWorkteams", "sagemaker:DescribeSubscribedWorkteam" ], "Resource": "*" }

要了解使用 SageMaker 控制台所需的权限的更多信息,请参阅使用 SageMaker 控制台

创建执行角色以启动标记作业

在配置标记作业时,您需要提供一个执行角色,该角色是 SageMaker 有权代入以启动和运行标记作业的角色。

该角色必须为 SageMaker 授予权限以访问以下内容:

  • 访问 Amazon S3 以检索输入数据并将输出数据写入到 Amazon S3 存储桶中。您可以提供存储桶 ARN,以便为 IAM 角色授予权限以访问整个存储桶,也可以为该角色授予访问权限以访问存储桶中的特定资源。例如,存储桶的 ARN 可能类似于 arn:aws:s3:::awsexamplebucket1,Amazon S3 存储桶中的资源的 ARN 可能类似于 arn:aws:s3:::awsexamplebucket1/resource-key。有关更多信息,请参阅 中的 Amazon S3 资源Amazon Simple Storage Service 开发人员指南。

  • CloudWatch访问 以记录工作人员指标和标记作业状态。

  • AWS KMS 用于数据加密。(可选)

  • AWS Lambda ,用于在创建自定义工作流程时处理输入和输出数据。

如果您的 S3 存储桶、对象和AmazonSageMakerGroundTruthExecution函数不满足策略中指定的条件,则可使用 托管策略授予所有这些权限,但数据和存储卷加密除外Lambda。

可以使用以下策略示例创建适合您的特定使用案例的执行角色。

内置任务类型的执行角色要求

以下策略授予为内置任务类型创建标记作业的权限。该执行策略不包括 AWS KMS 数据加密或解密的权限。将每个红色的斜体 ARN 替换为您自己的 Amazon S3 ARNs。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<input-bucket-name>", "arn:aws:s3:::<output-bucket-name>" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::<input-bucket-name>/*", "arn:aws:s3:::<output-bucket-name>/*" ] } ] }

如果要创建已启用自动数据标记的标记作业,则需要将以下附加策略添加到执行角色。请将 arn:aws:iam::<account-number>:role/<role-name> 替换为您的角色 ARN。您可以在 IAM 控制台中的 IAMRoles 角色) 下找到您的角色 ARN。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::<account-number>:role/<role-name>", "Condition": { "StringEquals": { "iam:PassedToService": [ "sagemaker.amazonaws.com" ] } } }, { "Effect": "Allow", "Principal": {"Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

自定义任务类型的执行角色要求

以下策略示例可以进行修改,用于向自定义标记作业中使用的执行角色授予访问和写入该标记作业中使用的 Amazon S3 存储桶的权限。将每个红色的斜体 ARN 替换为您自己的 Amazon S3 ARNs。

当您使用自定义工作流程(自定义任务类型)创建标记作业时,除了需要 Amazon S3 权限AWS Lambda以外,您还需要为 添加处理输入和输出数据的权限。请在 Lambda 下面的列表中添加注释前和注释后 Lambda 函数的 Resource 函数 ARN 以修改以下策略。

将策略附加到用于创建自定义标记工作流的执行角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<input-bucket-name>", "arn:aws:s3:::<output-bucket-name>" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::<input-bucket-name>/*", "arn:aws:s3:::<output-bucket-name>/*" ] }, { "Sid": "LambdaFunctions", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:<region>:<account-id>:function:<pre-annotation-lambda-name>", "arn:aws:lambda:<region>:<account-id>:function:<post-annotation-lambda-name>" ] } ] }

使用 加密输出数据和存储卷 AWS KMS

在创建标记作业时,您可以通过指定 AWS Key Management ServiceAWS KMS 客户托管的客户主密钥 (CMK) 来使用 AWS KMS () 加密标记作业的输出数据。如果您使用 API 操作CreateLabelingJob创建使用自动数据标记的标记作业,则还可以使用客户托管 CMK 来加密附加到 ML 计算实例的存储卷,以运行训练和推理作业。

本节介绍必须附加到客户托管 CMK 的IAM策略(要启用输出数据加密)以及必须附加到 CMK 和执行角色的策略(要使用存储卷加密)。要了解有关这些选项的更多信息,请参阅 输出数据和存储卷加密

使用 KMS 加密输出数据

如果您指定 AWS KMS 客户托管 CMK 来加密输出数据,则必须向该密钥添加类似于以下内容的 IAM 策略。此策略为执行IAM角色提供使用 来创建标记作业的权限,以便使用此键执行中列出的所有操作"Action"。要了解有关这些操作的更多信息,请参阅 中的 AWS KMS 权限AWS Key Management Service Developer Guide。

要使用此策略,请将 中的 IAM 服务角色 ARN "Principal" 替换为用于创建标记作业的执行角色的 ARN。在 控制台中创建标记作业时,这是您在 Job overview (作业概述) 部分为 IAM Role (IAM 角色) 指定的角色。当您使用 创建标记作业时CreateLabelingJob,这是您为 指定的 RoleArnARN。

{ "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": "*" }

加密自动数据标记 ML 计算实例存储卷

如果您指定 VolumeKmsKeyId 来加密附加到用于自动数据标记训练和推理的 ML 计算实例的存储卷,则必须执行以下操作:

  • 将中所述的权限使用 KMS 加密输出数据附加到客户托管 CMK。

  • 将类似以下内容的策略附加到您用于创建标记作业的IAM执行角色。这是您在 IAMRoleArn 中为 指定的角色CreateLabelingJob。要了解有关此策略允许"kms:CreateGrant"的操作的更多信息,请参阅 CreateGrant 中的 AWS Key Management Service API Reference。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant" ], "Resource": "*" } ] }

要了解有关Ground Truth存储卷加密的更多信息,请参阅使用您的 KMS 密钥加密自动数据标记存储卷 (仅限 API)