

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

# 为 Ground Truth 标签作业创建 SageMaker AI 执行角色
<a name="sms-security-permission-execution-role"></a>

配置标签作业时，您需要提供一个*执行角色*，即 SageMaker AI 有权代入的角色来启动和运行您的标签作业。

该角色必须授予 Ground Truth 访问以下内容的权限：
+ 用于检索输入数据并将输出数据写入 Amazon S3 存储桶的 Amazon S3。您可以通过提供存储桶 ARN 授予 IAM 角色访问整个存储桶的权限，也可以授予角色访问存储桶中特定资源的权限。例如，存储桶的 ARN 可能类似于 `arn:aws:s3:::amzn-s3-demo-bucket1`，而 Amazon S3 存储桶中资源的 ARN 可能类似于 `arn:aws:s3:::amzn-s3-demo-bucket1/prefix/file-name.png`。要对 Amazon S3 存储桶中的所有资源应用操作，您可以使用通配符：`*`。例如 `arn:aws:s3:::amzn-s3-demo-bucket1/prefix/*`。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》中的 [Amazon S3 资源](https://docs.amazonaws.cn/AmazonS3/latest/dev/s3-arn-format.html)。
+ CloudWatch 记录工作人员指标和标签作业状态。
+ Amazon KMS 用于数据加密。（可选）
+ Amazon Lambda 用于在创建自定义工作流程时处理输入和输出数据。

此外，如果创建[流式标注作业](https://docs.amazonaws.cn/sagemaker/latest/dg/sms-streaming-labeling-job.html)，此角色必须有权访问以下内容：
+ Amazon SQS，可创建与用于[管理标注请求](https://docs.amazonaws.cn/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-sqs)的 SQS 队列的交互。
+ Amazon SNS，可从 Amazon SNS 输入主题订阅和检索消息，并向 Amazon SNS 输出主题发送消息。

所有这些权限都可以通过 `[AmazonSageMakerGroundTruthExecution](https://console.amazonaws.cn/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerGroundTruthExecution)` 托管策略授予，*除了*：
+ Amazon S3 存储桶的数据和存储卷加密。要了解如何配置这些权限，请参阅[使用加密输出数据和存储卷 Amazon KMS](sms-security-kms-permissions.md)。
+ 选择和调用函数名中不包含 `GtRecipe`、`SageMaker`、`Sagemaker`、`sagemaker` 或 `LabelingFunction` 的 Lambda 函数的权限。
+ 前缀或存储桶名称中不包括 `GroundTruth`、`Groundtruth`、`groundtruth`、`SageMaker`、`Sagemaker` 和 `sagemaker` 的 Amazon S3 存储桶，或名称中包括 `SageMaker` 的[对象标签](https://docs.amazonaws.cn/AmazonS3/latest/userguide/object-tagging.html)（不区分大小写）。

如果您需要比 `AmazonSageMakerGroundTruthExecution` 中提供的权限更精细的权限，请使用以下策略示例创建适合您的特定使用案例的执行角色。

**Topics**
+ [内置任务类型（非流式）执行角色要求](#sms-security-permission-execution-role-built-in-tt)
+ [内置任务类型（流式）执行角色要求](#sms-security-permission-execution-role-built-in-tt-streaming)
+ [自定义任务类型的执行角色要求](#sms-security-permission-execution-role-custom-tt)
+ [自动数据标注权限要求](#sms-security-permission-execution-role-custom-auto-labeling)

## 内置任务类型（非流式）执行角色要求
<a name="sms-security-permission-execution-role-built-in-tt"></a>

以下策略授予为[内置任务类型](https://docs.amazonaws.cn/sagemaker/latest/dg/sms-task-types.html)创建标注作业的权限。此执行策略不包括 Amazon KMS 数据加密或解密权限。用您自己的 Amazon S3 替换每个红色斜体的 ARN。 ARNs

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3ViewBuckets",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::<input-bucket-name>",
                "arn:aws:s3:::<output-bucket-name>"
            ]
        },
        {
            "Sid": "S3GetPutObjects",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::<input-bucket-name>/*",
                "arn:aws:s3:::<output-bucket-name>/*"
            ]
        },
        {
            "Sid": "CloudWatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 内置任务类型（流式）执行角色要求
<a name="sms-security-permission-execution-role-built-in-tt-streaming"></a>

如果您创建流式标注作业，则必须向用于创建标注作业的执行角色添加类似以下内容的策略。要缩小策略的范围，请将`*`中的`Resource`替换为要授予 IAM 角色访问和使用的权限的特定 Amazon 资源。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/*",
                "arn:aws:s3:::amzn-s3-demo-bucket2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": "*",
            "Condition": {
                "StringEqualsIgnoreCase": {
                    "s3:ExistingObjectTag/SageMaker": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket2"
            ]
        },
        {
            "Sid": "CloudWatch",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData",
                "logs:CreateLogStream",
                "logs:CreateLogGroup",
                "logs:DescribeLogStreams",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        },
        {
            "Sid": "StreamingQueue",
            "Effect": "Allow",
            "Action": [
                "sqs:CreateQueue",
                "sqs:DeleteMessage",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sqs:ReceiveMessage",
                "sqs:SendMessage",
                "sqs:SetQueueAttributes"
            ],
            "Resource": "arn:aws:sqs:*:*:*GroundTruth*"
        },
        {
            "Sid": "StreamingTopicSubscribe",
            "Effect": "Allow",
            "Action": "sns:Subscribe",
            "Resource": [
                "arn:aws:sns:us-east-1:111122223333:input-topic-name",
                "arn:aws:sns:us-east-1:111122223333:output-topic-name"
            ],
            "Condition": {
                "StringEquals": {
                    "sns:Protocol": "sqs"
                },
                "StringLike": {
                    "sns:Endpoint": "arn:aws:sns:us-east-1:111122223333:*GroundTruth*"
                }
            }
        },
        {
            "Sid": "StreamingTopic",
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:111122223333:input-topic-name",
                "arn:aws:sns:us-east-1:111122223333:output-topic-name"
            ]
        },
        {
            "Sid": "StreamingTopicUnsubscribe",
            "Effect": "Allow",
            "Action": [
                "sns:Unsubscribe"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:111122223333:input-topic-name",
                "arn:aws:sns:us-east-1:111122223333:output-topic-name"
            ]
        }
    ]
}
```

------

## 自定义任务类型的执行角色要求
<a name="sms-security-permission-execution-role-custom-tt"></a>

如果要创建[自定义标注工作流](https://docs.amazonaws.cn/sagemaker/latest/dg/sms-custom-templates.html)，请将以下语句添加到执行角色策略中，如 [内置任务类型（非流式）执行角色要求](#sms-security-permission-execution-role-built-in-tt) 或 [内置任务类型（流式）执行角色要求](#sms-security-permission-execution-role-built-in-tt-streaming) 中的策略。

此策略向执行角色授予 `Invoke` 注释前和注释后 Lambda 函数的权限。

```
{
    "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>"
    ]
}
```

## 自动数据标注权限要求
<a name="sms-security-permission-execution-role-custom-auto-labeling"></a>

如果要创建启用了[自动数据标注](https://docs.amazonaws.cn/sagemaker/latest/dg/sms-automated-labeling.html)的标注作业，则必须 1) 向附加到执行角色的 IAM 策略添加一个策略，2) 更新执行角色的信任策略。

以下语句允许将 IAM 执行角色传递给 A SageMaker I，以便其可用于运行分别用于主动学习和自动数据标签的训练和推理作业。将此语句添加到执行角色策略中，如 [内置任务类型（非流式）执行角色要求](#sms-security-permission-execution-role-built-in-tt) 或 [内置任务类型（流式）执行角色要求](#sms-security-permission-execution-role-built-in-tt-streaming) 中的策略。将 `arn:aws:iam::<account-number>:role/<role-name>` 替换为执行角色 ARN。您可以在 IAM 控制台的**角色**下找到自己的 IAM 角色 ARN。

```
{
    "Effect": "Allow",
    "Action": [
        "iam:PassRole"
    ],
    "Resource": "arn:aws:iam::<account-number>:role/<execution-role-name>",
    "Condition": {
        "StringEquals": {
            "iam:PassedToService": [
                "sagemaker.amazonaws.com"
            ]
        }
    }
}
```

以下语句允许 SageMaker AI 担任执行角色来创建和管理 SageMaker 训练和推理作业。必须将此策略添加到执行角色的信任关系中。要了解如何添加或修改 IAM 角色信任策略，请参阅《IAM 用户指南》中的[修改角色](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_manage_modify.html)。

------
#### [ JSON ]

****  

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

------

