

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Ground Truth 보안 및 권한
<a name="sms-security-general"></a>

이 페이지의 주제를 사용하여 Ground Truth 보안 기능 및 AWS Identity and Access Management (IAM) 권한을 구성하여 사용자 또는 역할에 레이블 지정 작업을 생성을 할당하는 방법에 대해 알아봅니다. 또한 *실행 역할*을 생성하는 방법도 알아보세요. 실행 역할은 레이블 지정 작업을 생성할 때 지정하는 역할입니다. 이 역할은 레이블 지정 작업을 시작하는 데 사용됩니다.

신규 사용자로서 빠르게 시작하고 싶거나 세분화된 권한이 필요하지 않은 경우 [Ground Truth와 함께 IAM 관리형 정책 사용](sms-security-permissions-get-started.md)을(를) 참조하세요.

IAM 사용자 및 역할에 대한 자세한 내용은 IAM 사용 설명서의 [자격 증명(사용자, 그룹 및 역할)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)을 참조하세요.

SageMaker AI에서 IAM을 사용하는 방법에 대해 자세히 알아보려면 [AWS Identity and Access Management Amazon SageMaker AI용](security-iam.md) 섹션을 참조하세요.

**Topics**
+ [

# 입력 이미지 데이터에 대한 CORS 요구 사항
](sms-cors-update.md)
+ [

# Ground Truth 사용을 위한 IAM 권한 할당
](sms-security-permission.md)
+ [

# Amazon 가상 사설 클라우드에 Amazon SageMaker Ground Truth 사용
](sms-vpc.md)
+ [

# 출력 데이터 및 스토리지 볼륨 암호화
](sms-security.md)
+ [

# 인력 인증 및 제한 사항
](sms-security-workforce-authentication.md)

# 입력 이미지 데이터에 대한 CORS 요구 사항
<a name="sms-cors-update"></a>

2020년 초에 Chrome 및 Firefox와 같이 널리 사용되는 브라우저에서 [EXIF 데이터](https://en.wikipedia.org/wiki/Exif)라고 하는 이미지 메타데이터를 기반으로 이미지를 회전하는 기본 동작을 변경했습니다. 이전에는 브라우저가 항상 디스크에 저장된 것과 똑같은 방식으로 이미지를 표시했으며 일반적으로 회전되지 않은 상태였습니다. 변경 후에는 이제 *방향 값*이라는 이미지 메타데이터에 따라 이미지가 회전합니다. 이는 전체 기계 학습(ML) 커뮤니티에 중요한 영향을 미칩니다. 예를 들어 이미지에 주석을 다는 애플리케이션에서 EXIF 방향을 고려하지 않는 경우 이미지가 예상치 못한 방향으로 표시되어 레이블이 잘못 표시될 수 있습니다.

Chrome 89부터 웹 표준 그룹 W3C가 이미지 교체를 제어하는 기능이 웹의 동일 오리진 정책을 위반한다고 결정했기 때문에는 더 이상 이미지 교체를 자동으로 방지할 수 AWS 없습니다. 따라서 레이블 지정 작업 생성 요청을 제출할 때 인간 작업자가 예측 가능한 방향으로 입력 이미지에 주석을 달 수 있도록 하려면 입력 이미지가 포함된 Amazon S3 버킷에 CORS 헤더 정책을 추가해야 합니다.

**중요**  
입력 데이터가 포함된 Amazon S3 버킷에 CORS 구성을 추가하지 않으면 해당 입력 데이터 객체에 대한 레이블 지정 작업이 실패합니다.

Ground Truth 콘솔을 통해 작업을 생성할 경우 CORS가 기본적으로 활성화됩니다. 모든 입력 데이터가 입력 매니페스트 파일과 동일한 Amazon S3 버킷에 *있지 않은* 경우, 다음 지침에 따라 입력 데이터가 포함된 모든 Amazon S3 버킷에 CORS 구성을 추가해야 합니다.

`CreateLabelingJob` API를 사용하여 Ground Truth 레이블 지정 작업을 생성하는 경우, S3 콘솔의 입력 데이터가 포함된 Amazon S3 버킷에 CORS 정책을 추가할 수 있습니다. Amazon S3 콘솔의 입력 이미지가 포함된 Amazon S3 버킷에 필수 CORS 헤더를 설정하려면 [CORS에 도메인 간 리소스 공유를 추가하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html)에 설명된 지침을 따르세요. 이미지를 호스팅하는 버킷에는 다음 CORS 구성 코드를 사용하세요. Amazon S3 콘솔을 사용하여 정책을 버킷에 추가하는 경우 JSON 형식을 사용해야 합니다.

**중요**  
3D 포인트 클라우드 또는 동영상 프레임 레이블 지정 작업을 생성하는 경우 CORS 구성에 규칙을 추가해야 합니다. 자세한 내용은 [3D 포인트 클라우드 레이블 지정 작업 권한 요구 사항](sms-security-permission-3d-point-cloud.md) 및 [비디오 프레임 작업 권한 요건](sms-video-overview.md#sms-security-permission-video-frame)을(를) 각각 참조하세요.

**JSON**

```
[{
   "AllowedHeaders": [],
   "AllowedMethods": ["GET"],
   "AllowedOrigins": ["*"],
   "ExposeHeaders": ["Access-Control-Allow-Origin"]
}]
```

**XML**

```
<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
   <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>
 </CORSRule>
</CORSConfiguration>
```

다음 GIF는 Amazon S3 콘솔을 사용하여 CORS 헤더 정책을 추가하는 방법에 대한 Amazon S3 설명서의 지침을 보여줍니다. 글로 된 설명은 Amazon Simple Storage Service 콘솔 사용 설명서의 문서 페이지 [CORS에 도메인 간 리소스 공유를 추가하려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-cors-configuration.html)에서 **Amazon S3 콘솔 사용**을 참조하세요.

![\[Amazon S3 콘솔을 사용하여 CORS 헤더 정책을 추가하는 방법에 대한 Gif입니다.\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/sms/gifs/cors-config.gif)


# Ground Truth 사용을 위한 IAM 권한 할당
<a name="sms-security-permission"></a>

이 섹션의 주제를 사용하여 AWS Identity and Access Management (IAM) 관리형 및 사용자 지정 정책을 사용하여 Ground Truth 및 관련 리소스에 대한 액세스를 관리하는 방법을 알아봅니다.

이 페이지의 섹션을 사용하여 다음 내용을 알아볼 수 있습니다.
+ 사용자 또는 역할에게 레이블 지정 작업을 생성할 권한을 부여하는 IAM 정책 생성 방법. 관리자는 IAM 정책을 사용하여 Amazon SageMaker AI 및 Ground Truth와 관련된 기타 AWS 서비스에 대한 액세스를 제한할 수 있습니다.
+ SageMaker AI *실행 역할* 생성 방법. 실행 역할은 레이블 지정 작업을 생성할 때 지정하는 역할입니다. 이 역할은 레이블 지정 작업을 시작하고 관리하는 데 사용됩니다.

다음은 이 페이지에서 찾을 수 있는 항목에 대한 개요입니다.
+ Ground Truth를 막 사용하기 시작했거나 사용 사례에 대한 세분화된 권한이 필요하지 않은 경우에는 [Ground Truth와 함께 IAM 관리형 정책 사용](sms-security-permissions-get-started.md)에 설명된 IAM 관리형 정책을 사용하는 것이 좋습니다.
+ [Amazon SageMaker Ground Truth 콘솔을 사용하는 IAM 권한 부여](sms-security-permission-console-access.md)에서 Ground Truth 콘솔을 사용하는 데 필요한 권한에 대해 알아보세요. 이 섹션에는 IAM 엔터티에 비공개 작업 팀을 생성 및 수정하고, 공급업체 작업 팀을 구독하고, 사용자 지정 레이블 지정 작업 워크플로를 생성할 권한을 부여하는 정책 예제가 포함되어 있습니다.
+ 레이블 지정 작업을 생성할 때는 실행 역할을 제공해야 합니다. 이 역할에 필요한 사용 권한에 대해 알아보려면 [Ground Truth 레이블링 작업을 위한 SageMaker AI 실행 역할 생성](sms-security-permission-execution-role.md)을 사용합니다.

# Ground Truth와 함께 IAM 관리형 정책 사용
<a name="sms-security-permissions-get-started"></a>

SageMaker AI 및 Ground Truth는 레이블 지정 작업을 생성하는 데 사용할 수 있는 AWS 관리형 정책을 제공합니다. Ground Truth를 막 사용하기 시작했고 사용 사례에 대한 세분화된 권한이 필요하지 않은 경우에는 다음 정책을 사용하는 것이 좋습니다.
+ `[AmazonSageMakerFullAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerFullAccess)` – 이 정책을 사용하여 사용자 또는 역할에게 레이블 지정 작업을 생성할 수 있는 권한을 부여하세요. 이는 콘솔 및 API를 통해 SageMaker AI 기능과 필요한 AWS 서비스의 기능을 사용할 수 있는 권한을 엔터티에 부여하는 광범위한 정책입니다. 이 정책은 Amazon Cognito를 사용하여 레이블 지정 작업을 생성하고 인력을 생성 및 관리할 권한을 엔터티에 부여합니다. 자세한 내용은 [AmazonSageMakerFullAccess 정책](https://docs.aws.amazon.com/sagemaker/latest/dg/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonSageMakerFullAccess)을 참조하세요.
+ `[AmazonSageMakerGroundTruthExecution](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerGroundTruthExecution)` – `[AmazonSageMakerGroundTruthExecution](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerGroundTruthExecution)` 정책을 역할에 연결하면 *실행 역할*을 생성할 수 있습니다. 실행 역할은 레이블 지정 작업을 생성할 때 지정하는 역할이며, 레이블 지정 작업을 시작할 때 사용됩니다. 이 정책을 통해 스트리밍 및 비스트리밍 레이블 지정 작업을 모두 만들고 원하는 작업 유형을 사용하여 레이블 지정 작업을 만들 수 있습니다. 이 관리형 정책의 다음 제한에 유의하세요.
  + **Amazon S3 권한**: 이 정책은 이름에 `GroundTruth`, `Groundtruth`, `groundtruth`, `SageMaker`, `Sagemaker`, `sagemaker` 문자열이 포함된 Amazon S3 버킷 또는 이름에 `SageMaker`이(가) 포함된(대/소문자 구분 안 함) [객체 태그](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html)가 있는 버킷에 액세스할 권한을 실행 역할에 부여합니다. 입력 및 출력 버킷 이름에 이러한 문자열이 포함되어 있는지 확인하거나 실행 역할에 권한을 추가하여 [Amazon S3 버킷에 액세스할 수 있는 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html)을 부여하세요. Amazon S3 버킷에서 `AbortMultipartUpload`, `GetObject`, `PutObject` 작업을 수행하려면 이 역할에 권한을 부여해야 합니다.
  + **사용자 지정 워크플로**: [사용자 지정 레이블 지정 워크플로](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates.html)를 생성할 때이 실행 역할은 AWS Lambda 함수 이름의 일부로 다음 문자열 중 하나를 사용하여 함수를 호출하는 것으로 제한됩니다`LabelingFunction`. `GtRecipe`, `SageMaker`, `Sagemaker``sagemaker`, 또는 . 이는 주석 전 및 주석 후 Lambda 함수에 모두 적용됩니다. 이러한 문자열이 포함되지 않은 이름을 사용하기로 선택한 경우 레이블 지정 작업을 생성하는 데 사용되는 실행 역할에 `lambda:InvokeFunction` 권한을 명시적으로 제공해야 합니다.

사용자 또는 역할에 AWS 관리형 정책을 연결하는 방법을 알아보려면 [IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)를 참조하세요.

# Amazon SageMaker Ground Truth 콘솔을 사용하는 IAM 권한 부여
<a name="sms-security-permission-console-access"></a>

SageMaker AI 콘솔의 Ground Truth 영역을 사용하려면 개체에 Ground Truth가 상호 작용하는 SageMaker AI 및 기타 AWS 서비스에 액세스할 수 있는 권한을 부여해야 합니다. 다른 AWS 서비스에 액세스하는 데 필요한 권한은 사용 사례에 따라 다릅니다.
+ 모든 사용 사례에 Amazon S3 권한이 필요합니다. 이러한 권한은 입력 및 출력 데이터를 포함하는 Amazon S3 버킷에 대한 액세스를 부여해야 합니다.
+ AWS Marketplace 공급업체 인력을 사용하려면 권한이 필요합니다.
+ 비공개 작업 팀을 설정하려면 Amazon Cognito 권한이 필요합니다.
+ AWS KMS 출력 데이터 암호화에 사용할 수 있는 AWS KMS 키를 보려면 권한이 필요합니다.
+ 기존 실행 역할을 나열하거나 새 실행 역할을 생성하려면 IAM 권한이 필요합니다. 또한 먼저 `PassRole` 권한 추가를 사용하여 SageMaker AI가 레이블링 작업을 시작하기 위해 선택한 실행 역할을 사용할 수 있도록 허용해야 합니다.

다음 섹션에는 Ground Truth의 기능을 하나 이상 사용하기 위해 역할에 부여할 수 있는 정책이 나열되어 있습니다.

**Topics**
+ [

## Ground Truth 콘솔 권한
](#sms-security-permissions-console-all)
+ [

## 사용자 지정 레이블 워크플로 권한
](#sms-security-permissions-custom-workflow)
+ [

## 프라이빗 작업 인력 권한
](#sms-security-permission-workforce-creation)
+ [

## 공급업체 작업 인력 권한
](#sms-security-permissions-workforce-creation-vendor)

## Ground Truth 콘솔 권한
<a name="sms-security-permissions-console-all"></a>

SageMaker AI 콘솔의 Ground Truth 영역을 사용하여 사용자 또는 역할에 레이블링 작업을 만들 수 있는 권한을 부여하려면 사용자 또는 역할에 다음 정책을 연결합니다. 다음 정책은 [기본 제공 태스크 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) 작업 유형을 사용한 대한 레이블 지정 작업을 생성할 IAM 역할 권한을 부여합니다. 사용자 지정 레이블 워크플로를 만들려면 [사용자 지정 레이블 워크플로 권한](#sms-security-permissions-custom-workflow)의 정책을 다음 정책에 추가하세요. 다음 정책에 포함된 각 `Statement`은(는) 이 코드 블록 아래에 설명되어 있습니다.

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

****  

```
{
    "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"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SecretsManager",
            "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: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": "*"
        }
    ]
}
```

------

이 정책에 포함되는 문은 다음과 같습니다. 해당 명령문의 `Resource` 목록에 특정 리소스를 추가하여 이러한 명령문의 범위를 좁힐 수 있습니다.

`SageMakerApis`

이 명령문에는 사용자가 모든 [SageMaker AI API 작업](sagemaker/latest/APIReference/API_Operations.html)을 수행할 수 있도록 허용하는 `sagemaker:*`가 포함되어 있습니다. 레이블 지정 작업을 생성하고 모니터링하는 데 사용되지 않는 작업을 사용자가 수행하지 못하도록 제한하여 이 정책의 범위를 좁힐 수 있습니다.

**`KmsKeysForCreateForms`**

Ground Truth 콘솔에서 출력 데이터 암호화에 사용할 AWS KMS 키를 나열하고 선택할 수 있는 권한을 사용자에게 부여하려면이 문만 포함하면 됩니다. 위의 정책은 사용자에게 AWS KMS계정의 모든 키를 나열하고 선택할 수 있는 권한을 부여합니다. 사용자가 나열하고 선택할 수 있는 키를 제한하려면 `Resource`에 해당 키 ARN을 지정하세요.

**`SecretsManager`**

이 문은 사용자에게 레이블 지정 작업을 생성하는 데 AWS Secrets Manager 필요한의 리소스를 설명, 나열 및 생성할 수 있는 권한을 부여합니다.

`ListAndCreateExecutionRoles`

이 명령문은 사용자에게 계정의 IAM 역할을 나열하고(`ListRoles`) 생성할(`CreateRole`) 수 있는 권한을 부여합니다. 또한 사용자에게 정책을 생성하고(`CreatePolicy`) 정책을 엔터티에 연결할(`AttachRolePolicy`) 수 있는 권한을 부여합니다. 콘솔에서 실행 역할을 나열하고, 선택하고, 필요한 경우 실행 역할을 생성하는 데 필요합니다.

실행 역할을 이미 만들었고 사용자가 콘솔에서 해당 역할만 선택할 수 있도록 이 명령문의 범위를 좁히려면 사용자에게 보기 권한을 부여할 역할의 ARN을 `Resource`에서 지정하고, 작업 `CreateRole`, `CreatePolicy`, `AttachRolePolicy`을(를) 제거하세요.

`AccessAwsMarketplaceSubscriptions`

레이블 지정 작업을 생성할 때 이미 구독한 공급업체 작업 팀을 보고 선택하려면 이러한 권한이 필요합니다. 사용자에게 공급업체 작업 팀에 *구독*할 수 있는 권한을 부여하려면 위의 정책에 [공급업체 작업 인력 권한](#sms-security-permissions-workforce-creation-vendor)의 명령문을 추가하세요.

`PassRoleForExecutionRoles`

이는 레이블 지정 작업 생성자에게 작업자 UI를 미리 보고 입력 데이터, 레이블 및 지침이 올바르게 표시되는지 확인할 수 있는 권한을 부여하는 데 필요합니다. 이 명령문은 레이블링 작업을 생성하는 데 사용된 IAM 실행 역할을 SageMaker AI에 전달하여 작업자 UI를 렌더링하고 미리 볼 수 있는 권한을 엔터티에 부여합니다. 이 정책의 범위를 좁히려면 레이블 지정 작업을 생성하는 데 사용되는 실행 역할의 역할 ARN을 `Resource` 아래에 추가하세요.

**`GroundTruthConsole`**
+ `groundtruthlabeling` – 이를 통해 사용자는 Ground Truth 콘솔의 특정 기능을 사용하는 데 필요한 작업을 수행할 수 있습니다. 여기에는 레이블 지정 작업 상태를 설명하고(`DescribeConsoleJob`), 입력 매니페스트 파일의 모든 데이터세트 객체를 나열하고(`ListDatasetObjects`), 데이터세트 샘플링을 선택한 경우 데이터세트를 필터링하고(`RunFilterOrSampleDatasetJob`), 자동 데이터 레이블링을 사용하는 경우 입력 매니페스트 파일을 생성할 수 있는 권한(`RunGenerateManifestByCrawlingJob`)이 포함됩니다. 이러한 작업은 Ground Truth 콘솔을 사용할 때만 사용할 수 있으며 API를 사용하여 직접 호출할 수는 없습니다.
+ `lambda:InvokeFunction` 및 `lambda:ListFunctions` – 이러한 작업은 사용자에게 사용자 지정 레이블 워크플로를 실행하는 데 사용되는 Lambda 함수를 나열하고 간접 호출할 권한을 부여합니다.
+ `s3:*` – 이 명령문에 포함된 모든 Amazon S3 권한은 [자동화된 데이터 설정](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-console-create-manifest-file.html)을 위해 Amazon S3 버킷을 보고(`ListAllMyBuckets`), Amazon S3의 입력 데이터에 액세스하고(`ListBucket`, `GetObject`) 필요한 경우 Amazon S3에서 CORS 정책을 확인 및 생성하고(`GetBucketCors`, `PutBucketCors`), S3에 레이블 지정 작업 출력 파일을 쓰는 데(`PutObject`) 사용됩니다.
+ `cognito-idp` – 이러한 권한은 Amazon Cognito를 사용하여 프라이빗 작업 인력을 만들고, 보고, 관리하는 데 사용됩니다. 이러한 작업에 대해 자세히 알아보려면 [Amazon Cognito API 참조](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-reference.html)를 참조하세요.

## 사용자 지정 레이블 워크플로 권한
<a name="sms-security-permissions-custom-workflow"></a>

[사용자 지정 레이블 워크플로를 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates.html)하는 동안 기존 사전 주석 및 사후 주석 Lambda 함수를 선택할 수 있는 권한을 사용자에게 부여하는 정책과 유사한 [Ground Truth 콘솔 권한](#sms-security-permissions-console-all)의 정책에 다음 명령문을 추가합니다.

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

엔터티에 사전 주석 및 사후 주석 Lambda 함수를 생성하고 테스트할 수 있는 권한을 부여하는 방법을 알아보려면 [Lambda With Ground Truth를 사용하는 데 필요한 권한](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates-step3-lambda-permissions.html)을 참조하세요.

## 프라이빗 작업 인력 권한
<a name="sms-security-permission-workforce-creation"></a>

다음 권한을 권한 정책에 추가하면 Amazon Cognito를 사용하여 프라이빗 작업 인력 및 작업 팀을 생성하고 관리할 수 있는 액세스 권한이 부여됩니다. 이러한 권한은 [OIDC IdP 인력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-create-private-oidc.html#sms-workforce-create-private-oidc-next-steps)을 사용하는 데 필요하지 않습니다.

```
{
    "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:ListGroups",
        "cognito-idp:ListIdentityProviders",
        "cognito-idp:ListUsers",
        "cognito-idp:ListUsersInGroup",
        "cognito-idp:ListUserPoolClients",
        "cognito-idp:ListUserPools",
        "cognito-idp:UpdateUserPool",
        "cognito-idp:UpdateUserPoolClient"
        ],
    "Resource": "*"
}
```

Amazon Cognito를 사용하여 프라이빗 작업 인력을 생성하는 방법에 대한 자세한 내용은 [Amazon Cognito 작업 인력](sms-workforce-private-use-cognito.md)을(를) 참조하세요.

## 공급업체 작업 인력 권한
<a name="sms-security-permissions-workforce-creation-vendor"></a>

[Amazon SageMaker Ground Truth 콘솔을 사용하는 IAM 권한 부여](#sms-security-permission-console-access)의 정책에 다음 명령문을 추가하여 엔터티에 [공급업체 작업 인력](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management-vendor.html)을 구독할 권한을 부여할 수 있습니다.

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

# 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.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html)를 참조하세요.
+ 작업자 지표 및 레이블 지정 작업 상태 로깅을 위한 CloudWatch
+ AWS KMS 데이터 암호화를 위한 입니다. (선택 사항)
+ AWS Lambda 사용자 지정 워크플로를 생성할 때 입력 및 출력 데이터를 처리하기 위한 입니다.

또한 [스트리밍 레이블 지정 작업](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html)을 생성하는 경우 이 역할에 다음에 대한 액세스 권한이 있어야 합니다.
+ Amazon SQS는 [레이블 지정 요청을 관리](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-streaming-labeling-job.html#sms-streaming-how-it-works-sqs)하는 데 사용되는 SQS 대기열과의 상호 작용을 생성합니다.
+ Amazon SNS를 사용하여 Amazon SNS 입력 주제를 구독하고 메시지를 검색하며, Amazon SNS 출력 주제로 메시지를 전송할 수 있습니다.

`[AmazonSageMakerGroundTruthExecution](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AmazonSageMakerGroundTruthExecution)` 관리형 정책을 통해 이러한 권한을 모두 부여할 수 있습니다. 단, 다음과 같은 권한은 *예외*입니다.
+ Amazon S3 버킷의 데이터 및 스토리지 볼륨 암호화 이러한 권한을 구성하는 방법에 대해 알아보려면 [를 사용하여 출력 데이터 및 스토리지 볼륨 암호화 AWS KMS](sms-security-kms-permissions.md)을(를) 참조하세요.
+ 함수 이름에 `GtRecipe`, `SageMaker`, `Sagemaker`, `sagemaker`, 또는 `LabelingFunction`을(를) 포함하지 않는 Lambda 함수를 선택하고 간접 호출할 수 있는 권한입니다.
+ 접두사 또는 버킷 이름에 `GroundTruth`, `Groundtruth`, `groundtruth`, `SageMaker`, `Sagemaker`, 또는 `sagemaker`을(를) 포함하지 않는 Amazon S3 버킷 또는 이름에 `SageMaker`을(를) 포함한(대/소문자 구분 안 함) [객체 태그](https://docs.aws.amazon.com/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.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html)에 대한 레이블 지정 작업을 만들 수 있는 권한을 부여합니다. 이 실행 정책에는 AWS KMS 데이터 암호화 또는 복호화에 대한 권한이 포함되지 않습니다. 빨간색, 기울임꼴로 표시된 각 ARN을 사용자의 Amazon S3 ARN으로 교체하세요.

------
#### [ 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>

스트리밍 레이블 지정 작업을 생성하는 경우 레이블 지정 작업을 만들 때 사용할 실행 역할에 다음과 유사한 정책을 추가해야 합니다. 정책의 범위를 좁히려면의를 IAM 역할에 액세스 및 사용 권한을 부여하려는 특정 AWS 리소스`*``Resource`로 바꿉니다.

------
#### [ 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.aws.amazon.com/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.aws.amazon.com/sagemaker/latest/dg/sms-automated-labeling.html)을 활성화하여 레이블 지정 작업을 생성하려면 1) 실행 역할에 연결된 IAM 정책에 정책 하나를 추가하고 2) 실행 역할의 신뢰 정책을 업데이트해야 합니다.

다음 명령문을 사용하면 IAM 실행 역할을 SageMaker AI에 전달하여 능동적 학습과 자동화된 데이터 레이블링에 사용되는 훈련 및 추론 작업을 각각 실행하는 데 사용할 수 있습니다. [기본 제공 태스크 유형(비스트리밍) 실행 역할 요구 사항](#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 역할 ARN은 **역할**의 IAM 콘솔에서 찾을 수 있습니다.

```
{
    "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.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)을 참조하세요.

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

****  

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

------



# 를 사용하여 출력 데이터 및 스토리지 볼륨 암호화 AWS KMS
<a name="sms-security-kms-permissions"></a>

레이블 지정 작업을 생성할 때 [고객 관리형 키를](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys) 지정하여 AWS Key Management Service (AWS KMS)를 사용하여 레이블 지정 작업의 출력 데이터를 암호화할 수 있습니다. API 작업 `CreateLabelingJob`을(를) 사용하여 자동 데이터 레이블링을 사용하는 레이블 지정 작업을 생성하는 경우 고객 관리형 키를 사용하여 ML 컴퓨팅 인스턴스에 연결된 스토리지 볼륨을 암호화하여 훈련 및 추론 작업을 실행할 수도 있습니다.

이 섹션에서는 출력 데이터 암호화를 활성화하기 위해 고객 관리형 키에 연결해야 하는 IAM 정책과 스토리지 볼륨 암호화를 사용하기 위해 고객 관리형 키 및 실행 역할에 연결해야 하는 정책을 설명합니다. 이러한 옵션에 대해 자세히 알아보려면 [출력 데이터 및 스토리지 볼륨 암호화](sms-security.md) 섹션을 참조하세요.

## KMS를 사용한 출력 데이터 암호화
<a name="sms-security-kms-permissions-output-data"></a>

출력 데이터를 암호화하기 위해 AWS KMS 고객 관리형 키를 지정하는 경우 해당 키와 유사한 IAM 정책을 추가해야 합니다. 이 정책은 레이블 지정 작업을 생성하는 데 사용하는 IAM 실행 역할에 이 키를 사용하여 `"Action"`에 나열된 모든 작업을 수행할 수 있는 권한을 부여합니다. 이러한 작업에 대한 자세한 내용은 AWS Key Management Service 개발자 안내서의 [AWS KMS 권한을](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) 참조하세요.

이 정책을 사용하려면 `"Principal"`의 IAM 서비스 역할 ARN을 레이블 지정 작업을 생성하는 데 사용하는 실행 역할의 ARN으로 교체하세요. 콘솔에서 레이블 지정 작업을 생성할 때 이 역할은 **작업 개요** 섹션에서 **IAM 역할**에 지정하는 역할입니다. `CreateLabelingJob`을(를) 사용하여 레이블 지정 작업을 생성할 때 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-RoleArn)에 지정한 ARN입니다.

```
{
    "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 컴퓨팅 인스턴스 스토리지 볼륨 암호화
<a name="sms-security-kms-permissions-storage-volume"></a>

자동 데이터 레이블링 훈련 및 추론에 사용되는 ML 컴퓨팅 인스턴스에 연결된 스토리지 볼륨을 암호화하도록 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_LabelingJobResourceConfig.html#sagemaker-Type-LabelingJobResourceConfig-VolumeKmsKeyId](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_LabelingJobResourceConfig.html#sagemaker-Type-LabelingJobResourceConfig-VolumeKmsKeyId)을(를) 지정하는 경우 다음을 수행해야 합니다.
+ [KMS를 사용한 출력 데이터 암호화](#sms-security-kms-permissions-output-data)에 설명된 권한을 고객 관리형 키에 연결합니다.
+ 레이블 지정 작업을 생성할 때 사용하는 IAM 실행 역할에 다음과 유사한 정책을 연결합니다. `CreateLabelingJob`에서 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html#sagemaker-CreateLabelingJob-request-RoleArn)에 지정한 IAM 역할입니다. 이 정책에서 허용하는 `"kms:CreateGrant"` 작업에 대한 자세한 내용은 AWS Key Management Service API 참조의 섹션을 참조[https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)하세요.

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

****  

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

------

Ground Truth 스토리지 볼륨 암호화에 대한 자세한 내용은 [KMS 키를 사용한 자동 데이터 레이블링 스토리지 볼륨 암호화(API 전용)](sms-security.md#sms-security-kms-storage-volume)을(를) 참조하세요.

# Amazon 가상 사설 클라우드에 Amazon SageMaker Ground Truth 사용
<a name="sms-vpc"></a>

 [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html)(VPC)를 사용하면 사용자가 정의한 논리적으로 격리된 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. Ground Truth는 인터넷을 통해 연결하지 않고 Amazon VPC 내에서 레이블 지정 작업 생성을 지원합니다. Amazon VPC에서 레이블 지정 작업을 시작하면 VPC와 Ground Truth 간의 통신이 AWS 네트워크 내에서 완전하고 안전하게 수행됩니다.

이 안내서는 다음과 같은 방법으로 Amazon VPC에서 Ground Truth를 사용하는 방법을 보여줍니다.

1. [Amazon 가상 사설 클라우드에서 Amazon SageMaker Ground Truth 레이블 지정 작업 실행](samurai-vpc-labeling-job.md)

1. [프라이빗 작업자 포털에서 Amazon VPC 모드 사용](samurai-vpc-worker-portal.md)

# Amazon 가상 사설 클라우드에서 Amazon SageMaker Ground Truth 레이블 지정 작업 실행
<a name="samurai-vpc-labeling-job"></a>

Ground Truth는 Amazon VPC의 다음 기능을 지원합니다.
+ Amazon S3 버킷 정책을 사용하여 특정 VPC 엔드포인트 또는 특정 VPC의 버킷에 대한 액세스를 제어할 수 있습니다. 레이블 지정 작업을 시작하고 입력 데이터가 VPC의 사용자만 액세스할 수 있는 Amazon S3 버킷에 있는 경우, 버킷 정책을 추가하여 Ground Truth 엔드포인트에도 버킷에 액세스할 수 있는 권한을 부여할 수 있습니다. 자세한 내용은 [Ground Truth가 VPC 제한 Amazon S3 버킷에 액세스하도록 허용](#sms-vpc-permissions-s3)을 참조하세요.
+ VPC에서 [자동화된 데이터 레이블 지정 작업](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-automated-labeling.html)을 시작할 수 있습니다. VPC 구성을 사용하여 VPC 서브넷 및 보안 그룹을 지정합니다. SageMaker AI는 이 구성을 사용하여 VPC에서 자동 데이터 레이블링에 사용되는 훈련 및 추론 작업을 시작합니다. 자세한 내용은 [VPC에서 자동 데이터 레이블 지정 작업 생성](#sms-vpc-permissions-automated-labeling)를 참조하세요.

다음 방법 중 하나를 사용하여 이러한 옵션을 사용할 수 있습니다.
+ 이 두 가지 방법을 모두 사용하여 자동 데이터 레이블 지정을 활성화한 VPC 보호 Amazon S3 버킷을 사용하여 레이블 지정 작업을 시작할 수 있습니다.
+ VPC 보호 버킷을 사용하여 [기본 제공 태스크 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html)을 이용한 레이블 지정 작업을 시작할 수 있습니다.
+ VPC 보호 버킷을 사용하여 [사용자 지정 레이블 지정 워크플로](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-custom-templates.html)를 시작할 수 있습니다. Ground Truth는 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/endpoint-services-overview.html) 엔드포인트를 사용하여 사전 주석 및 사후 주석 Lambda 함수와 상호 작용합니다.

Amazon VPC에서 레이블 지정 작업을 생성하기 전에 [VPC에서 Ground Truth 레이블 지정 작업을 실행하기 위한 사전 조건](#sms-vpc-gt-prereq) 섹션을 검토하는 것이 좋습니다.

## VPC에서 Ground Truth 레이블 지정 작업을 실행하기 위한 사전 조건
<a name="sms-vpc-gt-prereq"></a>

Amazon VPC에서 Ground Truth 레이블 지정 작업을 생성하기 전에 다음 사전 조건을 검토하세요.
+ Ground Truth를 처음 사용하는 경우 [시작하기](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-getting-started.html)를 검토하여 레이블 지정 작업 생성 방법을 알아보세요.
+ 입력 데이터가 VPC로 보호되는 Amazon S3 버킷에 있는 경우 작업자는 VPC에서 작업자 포털에 액세스해야 합니다. VPC 기반 레이블 지정 작업은 프라이빗 작업 팀을 사용해야 합니다. 프라이빗 작업팀을 만드는 방법에 대해 자세히 알아보려면 [프라이빗 작업 인력 사용](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-private.html)을 참조하세요.
+ 다음 사전 조건은 VPC에서 레이블 지정 작업을 시작하는 데에만 적용됩니다.
  + [Amazon S3 VPC 엔드포인트 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html#train-vpc-s3)의 지침을 이용하세요. 자동 데이터 레이블 지정 워크플로에 사용되는 훈련 및 추론 컨테이너는 이 엔드포인트를 사용하여 Amazon S3의 버킷과 통신합니다.
  + 이 기능에 대해 자세히 알아보려면 [자동 데이터 레이블 지정](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-automated-labeling.html)을 검토하세요. 참고로 자동 데이터 레이블 지정은 [이미지 분류(단일 레이블)](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-image-classification.html), [이미지 의미 체계 분할](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-semantic-segmentation.html), [경계 상자](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-bounding-box.html) 및 [텍스트 분류(단일 레이블)](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-text-classification.html)와 같은 [기본 제공 태스크 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html)에서 지원됩니다. 스트리밍 레이블 지정 작업은 자동 데이터 레이블 지정을 지원하지 않습니다.
+ [Ground Truth 보안 및 권한](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-general.html) 섹션을 검토하고 다음 조건을 충족하는지 확인하세요.
  + 레이블 지정 작업을 생성하는 사용자에게는 필요한 모든 권한이 있습니다.
  + 필수 권한을 가진 IAM 실행 역할을 생성했습니다. 사용 사례에 맞게 미세 조정된 권한이 필요하지 않은 경우, [Ground Truth 사용을 시작하기 위한 일반 권한 부여](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-security-permission.html#sms-security-permissions-get-started)에 설명된 IAM 관리형 정책을 사용하는 것이 좋습니다.
  + VPC가 `sagemaker-labeling-data-region` 및 `sm-bxcb-region-saved-task-states` S3 버킷에 액세스할 수 있도록 허용합니다. 이는 작업자가 작업을 수행할 때 작업자 포털에서 액세스하는 시스템 소유의 리전 S3 버킷입니다. 이러한 버킷을 사용하여 시스템 관리 데이터와 상호 작용합니다.

## Ground Truth가 VPC 제한 Amazon S3 버킷에 액세스하도록 허용
<a name="sms-vpc-permissions-s3"></a>

다음 섹션에서는 Ground Truth가 VPC 및 VPC 엔드포인트로 액세스가 제한된 Amazon S3 버킷을 사용하여 레이블 지정 작업을 시작하는 데 필요한 권한에 대한 세부 정보를 제공합니다. VPC로 Amazon S3 버킷에 대한 액세스를 제한하는 방법을 알아보려면 Amazon Simple Storage Service 사용 설명서의 [버킷 정책으로 VPC 엔드포인트 액세스 제어](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html) 섹션을 참조하세요. S3 버킷에 정책을 추가하는 방법을 알아보려면 [Amazon S3 콘솔을 사용하여 버킷 정책 추가](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)를 참조하세요.

**참고**  
기존 버킷의 정책을 수정하면 `IN_PROGRESS` Ground Truth 작업이 실패할 수 있습니다. 새 버킷을 사용하여 새 작업을 시작하는 것이 좋습니다. 동일한 버킷을 계속 사용하려는 경우 다음 중 하나를 수행할 수 있습니다.  
`IN_PROGRESS` 작업이 완료될 때까지 기다립니다.
콘솔 또는 AWS CLI를 사용하여 작업을 종료합니다.

[AWS PrivateLink](https://aws.amazon.com/privatelink/) 엔드포인트를 사용하여 VPC의 사용자에 대한 Amazon S3 버킷 액세스를 제한할 수 있습니다. 다음은 엔드포인트 의 특정 버킷인 `<bucket-name>`에 대해 `<vpc-endpoint>` 및 엔드포인트 `<vpc>`에서만 특정 버킷에 액세스를 허용하는 S3 버킷 정책의 예입니다. 이 정책을 수정할 때는 *빨간색 기울임꼴로 표시된 텍스트*를 모두 리소스 및 사양으로 바꿔야 합니다.

**참고**  
다음 정책은 VPC 내 사용자를 *제외한* 모든 엔터티가 `Action`에 나열된 작업을 수행하는 것을 *거부합니다*. 이 목록에 작업을 포함하지 않아도 이 버킷에 대한 액세스 권한과 해당 작업을 수행할 권한이 있는 모든 엔터티가 해당 작업에 계속 액세스할 수 있습니다. 예를 들어, 사용자에게 Amazon S3 버킷에서 `GetBucketLocation`을 수행할 권한이 있는 경우, 아래 정책은 사용자가 VPC 외부에서 이 작업을 수행하는 것을 제한하지 않습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "Policy1415115909152",
    "Statement": [
        {
            "Sid": "AccessToSpecificVPCEOnly",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Effect": "Deny",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": [
                        "vpce-12345678",
                        "vpce-12345678901234567"
                    ]
                }
            }
        }
    ]
}
```

------

Ground Truth는 레이블 지정 작업을 구성하는 데 사용하는 S3 버킷에서 다음과 같은 Amazon S3 작업을 수행할 수 있어야 합니다.

```
"s3:AbortMultipartUpload",
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"s3:GetBucketLocation"
```

앞서 언급한 것과 같이 Ground Truth 엔드포인트를 버킷 정책에 추가하여 이 작업을 수행할 수 있습니다. 다음 표에는 각 AWS 리전에 대한 Ground Truth 서비스 엔드포인트가 포함되어 있습니다. 레이블 지정 작업을 실행하는 데 사용하는 것과 동일한 [AWS 리전](https://docs.aws.amazon.com/general/latest/gr/rande.html)의 엔드포인트를 버킷 정책에 추가합니다.


****  

| AWS 리전 | Ground Truth 엔드포인트 | 
| --- | --- | 
| us-east-2 | vpce-02569ba1c40aad0bc | 
| us-east-1 | vpce-08408e335ebf95b40 | 
| us-west-2 | vpce-0ea07aa498eb78469 | 
| ca-central-1 | vpce-0d46ea4c9ff55e1b7 | 
| eu-central-1 | vpce-0865e7194a099183d | 
| eu-west-2 | vpce-0bccd56798f4c5df0 | 
| eu-west-1 | vpce-0788e7ed8628e595d | 
| ap-south-1 | vpce-0d7fcda14e1783f11 | 
| ap-southeast-2 | vpce-0b7609e6f305a77d4 | 
| ap-southeast-1 | vpce-0e7e67b32e9efed27 | 
| ap-northeast-2 | vpce-007893f89e05f2bbf | 
| ap-northeast-1 | vpce-0247996a1a1807dbd | 

예를 들어, 다음 정책은 다음에 대한 `GetObject` 및 `PutObject` 작업을 제한합니다.
+ VPC의 사용자를 위한 Amazon S3 버킷(`<vpc>`)
+ VPC 엔드포인트(`<vpc-endpoint>`)
+ Ground Truth 서비스 엔드포인트(`<ground-truth-endpoint>`)

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "1",
    "Statement": [
        {
            "Sid": "DenyAccessFromNonGTandCustomerVPC",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name",
                "arn:aws:s3:::bucket-name/*"
            ],
            "Condition": {
              "StringNotEquals": {
                "aws:SourceVpc": "vpc-12345678",
                "aws:sourceVpce": [
                  "vpce-12345678",
                  "vpce-12345678"
                ] 
             }
           }
        }
    ]
}
```

------

Ground Truth 콘솔을 사용하여 레이블 지정 작업을 시작할 권한을 사용자에게 부여하려면 `aws:PrincipalArn` 조건을 사용하여 사용자의 ARN을 버킷 정책에 추가해야 합니다. 또한 이 사용자는 레이블 지정 작업을 시작하는 데 사용하는 버킷에서 다음과 같은 Amazon S3 작업을 수행할 권한이 있어야 합니다.

```
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"s3:GetBucketCors",
"s3:PutBucketCors",
"s3:ListAllMyBuckets",
```

다음 코드는 S3 버킷 `<bucket-name>`에서 `Action`에 나열된 작업을 수행할 권한을 다음 역할로 제한하는 버킷 정책의 예입니다.
+ *<role-name>*
+ `aws:sourceVpce`에 나열된 VPC 엔드포인트
+ *<vpc>*라는 이름의 VPC 내의 사용자

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "1",
    "Statement": [
        {
            "Sid": "DenyAccessFromNonGTandCustomerVPC",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name/*",
                "arn:aws:s3:::bucket-name"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpc": "vpc-12345678",
                    "aws:PrincipalArn": "arn:aws:iam::111122223333:role/role-name"
                },
                "StringNotEquals": {
                    "aws:sourceVpce": [
                        "vpce-12345678",
                        "vpce-12345678"
                    ]
                }
            }
        }
    ]
}
```

------

**참고**  
입력 및 출력 데이터에 사용하는 Amazon VPC 인터페이스 엔드포인트와 보호된 Amazon S3 버킷은 레이블 지정 작업을 생성하는 데 사용하는 리전과 동일한 AWS 리전에 있어야 합니다.

Amazon S3 버킷에 액세스할 수 있는 Ground Truth 권한을 부여한 후에는 [레이블 지정 작업 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-create-labeling-job.html)의 주제 중 하나를 사용하여 레이블 지정 작업을 시작할 수 있습니다. 입력 및 출력 데이터 버킷에 대해 VPC 제한 Amazon S3 버킷을 지정합니다.

## VPC에서 자동 데이터 레이블 지정 작업 생성
<a name="sms-vpc-permissions-automated-labeling"></a>

Amazon VPC를 사용하여 자동 데이터 레이블 지정 작업을 생성하려면 Ground Truth 콘솔 또는 `CreateLabelingJob` API 작업을 사용하여 VPC 구성을 제공해야 합니다. SageMaker AI는 사용자가 제공하는 서브넷 및 보안 그룹을 사용하여 자동 레이블링에 사용되는 훈련 및 추론 작업을 시작합니다.

**중요**  
VPC 구성으로 자동 데이터 레이블 지정 작업을 시작하기 전에 레이블 지정 작업에 사용할 VPC를 사용하여 Amazon S3 VPC 엔드포인트를 생성했는지 확인하세요. 방법을 알아보려면 [Amazon S3 VPC 엔드포인트 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/train-vpc.html#train-vpc-s3)을 참조하세요.  
또한 VPC 제한 Amazon S3 버킷을 사용하여 자동 데이터 레이블 지정 작업을 생성하는 경우, [Ground Truth가 VPC 제한 Amazon S3 버킷에 액세스하도록 허용](#sms-vpc-permissions-s3)의 지침에 따라 Ground Truth에 버킷 액세스 권한을 부여해야 합니다.

다음 절차를 사용하여 레이블 지정 작업 요청에 VPC 구성을 추가하는 방법을 알아보세요.

**자동 데이터 레이블 지정 작업에 VPC 구성 추가(콘솔):**

1. [레이블 지정 작업 생성(콘솔)](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-create-labeling-job-console.html)의 지침에 따라 절차의 각 단계를 15단계까지 완료하세요.

1. **작업자** 섹션에서 **자동 데이터 레이블 지정 활성화** 옆의 확인란을 선택합니다.

1. 화살표를 선택하여 콘솔의 **VPC 구성** 섹션을 최대화합니다.

1. 자동 데이터 레이블 지정 작업에 사용할 **Virtual Private Cloud(VPC)**를 지정합니다.

1. **서브넷**에서 드롭다운 목록을 선택하고 하나 이상의 서브넷을 선택합니다.

1. **보안 그룹**에서 드롭다운 목록을 선택하고 하나 이상의 그룹을 선택합니다.

1. [레이블 지정 작업 생성(콘솔)](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-create-labeling-job-console.html)에서 나머지 절차를 모두 완료하세요.

**자동 데이터 레이블 지정 작업(API)에 VPC 구성 추가:**  
Ground Truth API 작업 `CreateLabelingJob`을 사용하여 레이블 지정 작업을 구성하려면 [자동 데이터 레이블 지정 작업(API) 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-automated-labeling.html#sms-create-automated-labeling-api)의 지침에 따라 요청을 구성하세요. 이 설명서에 설명된 파라미터 외에도 다음 스키마를 사용하여 하나 이상의 서브넷 및 보안 그룹을 지정하려면 `VpcConfig` 파라미터를 `LabelingJobResourceConfig`에 포함해야 합니다.

```
"LabelingJobAlgorithmsConfig": { 
      "InitialActiveLearningModelArn": "string",
      "LabelingJobAlgorithmSpecificationArn": "string",
      "LabelingJobResourceConfig": { 
         "VolumeKmsKeyId": "string",
         "VpcConfig": { 
            "SecurityGroupIds": [ "string" ],
            "Subnets": [ "string" ]
         }
      }
}
```

다음은 프라이빗 작업 인력을 사용하여 미국 동부(버지니아 북부) 리전에 자동 데이터 레이블 지정 작업을 생성하는 [AWS Python SDK(Boto3) 요청](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_labeling_job)의 예시입니다. *빨간색 기울임꼴로 표시된 모든 텍스트*를 레이블 지정 작업 리소스 및 사양으로 바꾸세요. `CreateLabelingJob` 작업에 대한 자세한 내용은 [레이블 지정 작업 생성(API)](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-create-labeling-job-api.html) 튜토리얼 및 [CreateLabelingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateLabelingJob.html) API 설명서를 참조하세요.

```
import boto3
client = boto3.client(service_name='sagemaker')

response = client.create_labeling_job(
    LabelingJobName="example-labeling-job",
    LabelAttributeName="label",
    InputConfig={
        'DataSource': {
            'S3DataSource': {
                'ManifestS3Uri': "s3://bucket/path/manifest-with-input-data.json"
            }
        }
    },
    "LabelingJobAlgorithmsConfig": {
      "LabelingJobAlgorithmSpecificationArn": "arn:aws:sagemaker:us-east-1:027400017018:labeling-job-algorithm-specification/tasktype",
      "LabelingJobResourceConfig": { 
         "VpcConfig": { 
            "SecurityGroupIds": [ "sg-01233456789", "sg-987654321" ],
            "Subnets": [ "subnet-e0123456", "subnet-e7891011" ]
         }
      }
    },
    OutputConfig={
        'S3OutputPath': "s3://bucket/path/file-to-store-output-data",
        'KmsKeyId': "string"
    },
    RoleArn="arn:aws:iam::*:role/*,
    LabelCategoryConfigS3Uri="s3://bucket/path/label-categories.json",
    StoppingConditions={
        'MaxHumanLabeledObjectCount': 123,
        'MaxPercentageOfInputDatasetLabeled': 123
    },
    HumanTaskConfig={
        'WorkteamArn': "arn:aws:sagemaker:region:*:workteam/private-crowd/*",
        'UiConfig': {
            'UiTemplateS3Uri': "s3://bucket/path/custom-worker-task-template.html"
        },
        'PreHumanTaskLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:PRE-tasktype",
        'TaskKeywords': [
            "Images",
            "Classification",
            "Multi-label"
        ],
        'TaskTitle': "Add task title here",
        'TaskDescription': "Add description of task here for workers",
        'NumberOfHumanWorkersPerDataObject': 1,
        'TaskTimeLimitInSeconds': 3600,
        'TaskAvailabilityLifetimeInSeconds': 21600,
        'MaxConcurrentTaskCount': 1000,
        'AnnotationConsolidationConfig': {
            'AnnotationConsolidationLambdaArn': "arn:aws:lambda:us-east-1:432418664414:function:ACS-tasktype"
        },
    Tags=[
        {
            'Key': "string",
            'Value': "string"
        },
    ]
)
```

# 프라이빗 작업자 포털에서 Amazon VPC 모드 사용
<a name="samurai-vpc-worker-portal"></a>

Amazon VPC 내부에서 작업하는 레이블 지정자의 작업자 포털 액세스를 제한해야 할 경우, Ground Truth 프라이빗 작업 인력을 생성할 때 VPC 구성을 추가하면 됩니다. 기존 프라이빗 작업 인력에 VPC 구성을 추가할 수도 있습니다. Ground Truth는 VPC 내부의 VPC 인터페이스 엔드포인트를 자동으로 생성하고, VPC 엔드포인트와 Ground Truth 서비스 사이에 AWS PrivateLink 을(를) 설정합니다. 해당 작업 인력과 연결된 작업자 포털 URL은 VPC로 액세스할 수 있습니다. 공용 인터넷에 대한 제한을 설정하기 전까지는 공용 인터넷으로도 작업자 포털 URL에 액세스할 수 있습니다. 작업 인력을 삭제하거나 작업 인력에서 VPC 구성을 제거하면 Ground Truth가 해당 작업 인력과 연결된 VPC 엔드포인트를 자동으로 삭제합니다.

**참고**  
한 작업 인력에는 하나의 VPC만 지원됩니다.

[포인트 클라우드](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-point-cloud.html) 작업 및 [동영상](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-video.html) 작업은 VPC를 통한 로드를 지원하지 않습니다.

이 안내서는 Amazon VPC 구성을 작업 인력에 추가 및 삭제하는 데 필요한 단계를 완료하고 사전 조건을 충족하는 방법을 보여줍니다.

## 사전 조건
<a name="samurai-vpc-getting-started-prerequisites"></a>

Amazon VPC로 Ground Truth 레이블 지정 작업을 실행하려면 다음 사전 조건을 잘 읽어 보세요.
+ 사용 가능한 Amazon VPC가 구성되어 있어야 합니다. VPC를 아직 구성하지 않았다면 본 [VPC 생성](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#interface-endpoint-shared-subnets) 관련 지침을 따르세요.
+ [작업자 작업 템플릿](https://docs.aws.amazon.com/sagemaker/latest/dg/a2i-instructions-overview.html)의 작성 방식에 따라, 레이블 지정 작업이 진행되는 동안 Amazon S3를 통해 Amazon S3 버킷에 저장된 레이블 지정 데이터에 직접 액세스할 수 있습니다. 이런 경우에는 인간 레이블 지정자가 사용하는 디바이스에서 레이블 지정 데이터가 포함된 S3 버킷으로 트래픽이 전송될 수 있도록 VPC 네트워크를 구성해야 합니다.
+ [VPC용 DNS 속성 보기 및 업데이트](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)에 따라 VPC용 DNS 호스트 이름 및 DNS 확인을 활성화하세요.

**참고**  
작업 인력에 맞게 VPC를 구성하는 방법은 2가지입니다. [콘솔](https://console.aws.amazon.com/sagemaker) 또는 AWS SageMaker AI [CLI](https://aws.amazon.com/cli/)를 통해이 작업을 수행할 수 있습니다.

# SageMaker AI 콘솔을 사용하여 VPC 구성 관리
<a name="samurai-vpc-workforce-console"></a>

[SageMaker AI 콘솔](https://console.aws.amazon.com/sagemaker)을 사용하여 VPC 구성을 추가하거나 제거할 수 있습니다. 기존 작업 인력을 삭제할 수도 있습니다.

## 작업 인력에 VPC 구성 추가
<a name="samurai-add-vpc-workforce"></a>

### 프라이빗 작업 인력 생성
<a name="samurai-vpc-create-workforce"></a>
+ [Amazon Cognito를 이용한 프라이빗 작업 인력 생성](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-private-use-cognito.html)
+ [OIDC(OpenID Connect) 자격 증명 공급자(IdP)를 이용하여 프라이빗 작업 인력을 생성하세요](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-private-use-oidc.html).

프라이빗 작업 인력을 생성하고 나서 해당 작업 인력에 VPC 구성을 추가하세요.

1. 콘솔에서 [Amazon SageMaker Runtime](https://console.aws.amazon.com/sagemaker)으로 이동하세요.

1. 왼쪽 창에서 **레이블 지정 작업 인력**을 선택하세요.

1. **프라이빗**을 선택하여 프라이빗 작업 인력에 액세스하세요. **작업 인력 상태**를 **활성**으로 설정한 후 **VPC** 옆의 **추가**를 선택하세요.

1. VPC를 구성하라는 메시지가 나타나면 다음 항목을 제공하세요.

   1. 사용할 **VPC**

   1. **서브넷**

      1. VPC에 기존 서브넷이 있는지 확인

   1. **보안 그룹**

      1. 
**참고**  
보안 그룹은 5개보다 많이 선택할 수 없습니다.

   1. 이 정보를 입력한 후에 **확인**을 선택하세요.

1. **확인**을 선택하고 나면 **레이블 지정 작업 인력** 하위의 **프라이빗** 페이지로 다시 리디렉션됩니다. **VPC 구성을 이용한 프라이빗 작업 인력 업데이트가 초기화되었습니다**라는 녹색 배너가 상단에 표시되어야 합니다. 작업 인력 상태가 **업데이트 중**입니다. **작업 인력 삭제** 버튼 옆에 **새로 고침** 버튼이 있습니다. 이 버튼을 사용하면 최신 **작업 인력 상태**를 검색할 수 있습니다. 작업 인력 상태가 **활성**으로 변경되고 나면 VPC 엔드포인트 ID도 업데이트됩니다.

## 작업 인력에서 VPC 구성 제거
<a name="samurai-remove-vpc-workforce"></a>

다음 정보에 따라 콘솔을 사용하여 작업 인력에서 VPC 구성을 제거하세요.

1. 콘솔에서 [Amazon SageMaker Runtime](https://console.aws.amazon.com/sagemaker)으로 이동하세요.

1. 왼쪽 창에서 **레이블 지정 작업 인력**을 선택하세요.

1. 원하는 작업 인력을 찾아 선택하세요.

1. **프라이빗 작업 인력 요약**에서 **VPC**를 찾아 그 옆에 있는 **제거**를 선택하세요.

1. **제거**를 선택합니다.

## 콘솔을 이용한 작업 인력 삭제
<a name="samurai-delete-vpc-workforce"></a>

작업 인력을 삭제할 경우, 해당 작업 인력에는 어떤 팀도 연결되어 있지 않아야 합니다. 작업 인력 상태가 **활성** 또는 **실패**인 경우에만 작업 인력을 삭제할 수 있습니다.

다음 정보에 따라 콘솔을 사용하여 작업 인력을 삭제하세요.

1. 콘솔에서 [Amazon SageMaker Runtime](https://console.aws.amazon.com/sagemaker)으로 이동하세요.

1. 왼쪽 창에서 **레이블 지정 작업 인력**을 선택하세요.

1. 원하는 작업 인력을 찾아 선택하세요.

1. **작업 인력 삭제**를 선택하세요.

1. **Delete**(삭제)를 선택합니다.

# SageMaker AI AWS API를 사용하여 VPC 구성 관리
<a name="samurai-vpc-workforce-cli"></a>

다음 섹션을 사용하여 작업 팀에 대한 적절한 수준의 액세스를 유지하면서 VPC 구성을 관리하는 방법에 대해 자세히 알아봅니다.

## VPC 구성을 이용한 작업 인력 생성
<a name="samurai-create-vpc-cli"></a>

이 계정에 이미 작업 인력이 있는 경우, 해당 계정을 먼저 삭제해야 합니다. VPC 구성으로 해당 작업 인력을 업데이트할 수도 있습니다.

```
aws sagemaker create-workforce --cognito-config '{"ClientId": "app-client-id","UserPool": "Pool_ID",}' --workforce-vpc-config \       
" {\"VpcId\": \"vpc-id\", \"SecurityGroupIds\": [\"sg-0123456789abcdef0\"], \"Subnets\": [\"subnet-0123456789abcdef0\"]}" --workforce-name workforce-name
{
    "WorkforceArn": "arn:aws:sagemaker:us-west-2:xxxxxxxxx:workforce/workforce-name"
}
```

작업 인력에 대해 설명하고 그 상태가 `Initializing`인지 확인하세요.

```
aws sagemaker describe-workforce --workforce-name workforce-name
{
    "Workforce": {
        "WorkforceName": "workforce-name",
        "WorkforceArn": "arn:aws:sagemaker:us-west-2:xxxxxxxxx:workforce/workforce-name",
        "LastUpdatedDate": 1622151252.451,
        "SourceIpConfig": {
            "Cidrs": []
        },
        "SubDomain": "subdomain.us-west-2.sagamaker.aws.com",
        "CognitoConfig": {
            "UserPool": "Pool_ID",
            "ClientId": "app-client-id"
        },
        "CreateDate": 1622151252.451,
        "WorkforceVpcConfig": {
            "VpcId": "vpc-id",
            "SecurityGroupIds": [
                "sg-0123456789abcdef0"
            ],
            "Subnets": [
                "subnet-0123456789abcdef0"
            ]
        },
        "Status": "Initializing"
    }
}
```

Amazon VPC 콘솔로 이동하세요. 왼쪽 창에서 **엔드포인트**를 선택하세요. 사용자의 계정에 2개의 VPC 엔드포인트가 생성되어 있어야 합니다.

## 작업 인력에 VPC 구성 추가
<a name="samurai-add-vpc-cli"></a>

다음 명령을 사용하여 VPC 외 프라이빗 작업 인력을 VPC 구성으로 업데이트하세요.

```
aws sagemaker update-workforce --workforce-name workforce-name\
--workforce-vpc-config "{\"VpcId\": \"vpc-id\", \"SecurityGroupIds\": [\"sg-0123456789abcdef0\"], \"Subnets\": [\"subnet-0123456789abcdef0\"]}"
```

작업 인력에 대해 설명하고 그 상태가 `Updating`인지 확인하세요.

```
aws sagemaker describe-workforce --workforce-name workforce-name
{
    "Workforce": {
        "WorkforceName": "workforce-name",
        "WorkforceArn": "arn:aws:sagemaker:us-west-2:xxxxxxxxx:workforce/workforce-name",
        "LastUpdatedDate": 1622151252.451,
        "SourceIpConfig": {
            "Cidrs": []
        },
        "SubDomain": "subdomain.us-west-2.sagamaker.aws.com",
        "CognitoConfig": {
            "UserPool": "Pool_ID",
            "ClientId": "app-client-id"
        },
        "CreateDate": 1622151252.451,
        "WorkforceVpcConfig": {
            "VpcId": "vpc-id",
            "SecurityGroupIds": [
                "sg-0123456789abcdef0"
            ],
            "Subnets": [
                "subnet-0123456789abcdef0"
            ]
        },
        "Status": "Updating"
    }
}
```

Amazon VPC 콘솔로 이동하세요. 왼쪽 창에서 **엔드포인트**를 선택하세요. 사용자의 계정에 2개의 VPC 엔드포인트가 생성되어 있어야 합니다.

## 작업 인력에서 VPC 구성 제거
<a name="samurai-remove-vpc-cli"></a>

VPC 프라이빗 작업 인력을 빈 VPC 구성으로 업데이트하여 VPC 리소스를 제거하세요.

```
aws sagemaker update-workforce --workforce-name workforce-name\ 
--workforce-vpc-config "{}"
```

작업 인력에 대해 설명하고 그 상태가 `Updating`인지 확인하세요.

```
aws sagemaker describe-workforce --workforce-name workforce-name
{
    "Workforce": {
        "WorkforceName": "workforce-name",
        "WorkforceArn": "arn:aws:sagemaker:us-west-2:xxxxxxxxx:workforce/workforce-name",
        "LastUpdatedDate": 1622151252.451,
        "SourceIpConfig": {
            "Cidrs": []
        },
        "SubDomain": "subdomain.us-west-2.sagamaker.aws.com",
        "CognitoConfig": {
            "UserPool": "Pool_ID",
            "ClientId": "app-client-id"
        },
        "CreateDate": 1622151252.451,
        "Status": "Updating"
    }
}
```

Amazon VPC 콘솔로 이동하세요. 왼쪽 창에서 **엔드포인트**를 선택하세요. 이 2개의 VPC 엔드포인트는 삭제해야 합니다.

## VPC로 액세스를 유지하는 동시에 작업자 포털에 대한 공개 액세스 제한
<a name="public-access-vpc"></a>

 VPC 내부 또는 VPC 외 작업자 포털의 작업자는 본인에게 할당된 레이블 지정 작업을 확인할 수 있습니다. 이러한 배정은 OIDC 그룹을 통해 작업팀에 작업자를 배정함으로써 이뤄집니다. 작업 인력에서 `sourceIpConfig`을(를) 설정하여 퍼블릭 작업자 포털에 대한 액세스를 제한하는 것은 고객의 책임입니다.

**참고**  
해당 작업자 포털에 대한 액세스 제한은 SageMaker API를 통해서만 가능합니다. 콘솔에서는 이 작업을 수행할 수 없습니다.

다음 명령을 사용하여 작업자 포털에 대한 퍼블릭 액세스를 제한하세요.

```
aws sagemaker update-workforce --region us-west-2 \
--workforce-name workforce-demo --source-ip-config '{"Cidrs":["10.0.0.0/16"]}'
```

작업 인력에 `sourceIpConfig`을(를) 설정하고 나면 작업자가 VPC로는 작업자 포털에 액세스할 수 있지만, 공용 인터넷으로는 액세스할 수 없습니다.

**참고**  
VPC에서는 작업자 포털에 대한 `sourceIP` 제한을 설정할 수 없습니다.

# 출력 데이터 및 스토리지 볼륨 암호화
<a name="sms-security"></a>

Amazon SageMaker Ground Truth를 사용하면 매우 민감한 데이터에 레이블을 지정하고, 데이터를 제어하고, 보안 모범 사례를 적용할 수 있습니다. 레이블 지정 작업이 실행되는 동안 Ground Truth는 전송 중인 데이터와 유휴 시 데이터를 암호화합니다. 또한 Ground Truth와 함께 AWS Key Management Service (AWS KMS)를 사용하여 다음을 수행할 수 있습니다.
+ [고객 관리형 키](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#master_keys)를 사용하여 출력 데이터를 암호화할 수 있습니다.
+ 자동화된 데이터 레이블 지정 작업과 함께 AWS KMS 고객 관리형 키를 사용하여 모델 훈련 및 추론에 사용되는 컴퓨팅 인스턴스에 연결된 스토리지 볼륨을 암호화합니다.

이 페이지의 주제를 사용하여 Ground Truth의 보안 기능에 대해 알아보세요.

## KMS 키를 사용한 출력 데이터 암호화
<a name="sms-security-kms-output-data"></a>

선택적으로 Ground Truth가 출력 데이터를 암호화하는 데 사용하는 레이블 지정 작업을 생성할 때 AWS KMS 고객 관리형 키를 제공할 수 있습니다.

고객 관리형 키를 제공하지 않으면 Amazon SageMaker AI는 역할 계정의 Amazon S3에 대한 기본 AWS 관리형 키 를 사용하여 출력 데이터를 암호화합니다.

고객 관리형 키를 제공하는 경우 [를 사용하여 출력 데이터 및 스토리지 볼륨 암호화 AWS KMS](sms-security-kms-permissions.md)에서 설명하는 키에 필요한 권한을 추가해야 합니다. API 작업 `CreateLabelingJob`을(를) 사용하면 파라미터 `[KmsKeyId](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_LabelingJobOutputConfig.html#sagemaker-Type-LabelingJobOutputConfig-KmsKeyId)`을(를) 사용하는 고객 관리형 키 ID를 지정할 수 있습니다. 콘솔을 사용하여 레이블 지정 작업을 생성할 때 고객 관리형 키를 추가하는 방법을 알아보려면 다음 절차를 참조하세요.

**키를 추가하여 출력 데이터를 AWS KMS 암호화하려면(콘솔):**

1. [레이블 지정 작업 생성(콘솔)](sms-create-labeling-job-console.md)의 첫 7단계를 수행합니다.

1. 8단계에서 **추가 구성** 옆의 화살표를 선택하여 이 섹션을 확장합니다.

1. **암호화 키**에서 출력 데이터를 암호화하는 데 사용할 AWS KMS 키를 선택합니다.

1. [레이블 지정 작업 생성(콘솔)](sms-create-labeling-job-console.md)의 나머지 단계를 완료하여 레이블 지정 작업을 생성하세요.

## KMS 키를 사용한 자동 데이터 레이블링 스토리지 볼륨 암호화(API 전용)
<a name="sms-security-kms-storage-volume"></a>

`CreateLabelingJob` API 작업을 사용하여 자동화된 데이터 레이블링 작업을 생성할 때, 훈련 및 추론 작업을 실행하는 ML 컴퓨팅 인스턴스에 연결된 스토리지 볼륨을 암호화하는 옵션이 있습니다. 스토리지 볼륨에 암호화를 추가하려면 파라미터를 사용하여 AWS KMS 고객 관리형 키를 `VolumeKmsKeyId` 입력합니다. 이 파라미터에 대한 자세한 내용은 `[LabelingJobResourceConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_LabelingJobResourceConfig.html#sagemaker-Type-LabelingJobResourceConfig-VolumeKmsKeyId)` 섹션을 참조하세요.

`VolumeKmsKeyId`에 키 ID 또는 ARN을 지정하는 경우, SageMaker AI 실행 역할에 `kms:CreateGrant`를 직접 호출할 권한이 포함되어야 합니다. 실행 역할에 이 권한을 추가하는 방법은 [Ground Truth 레이블링 작업을 위한 SageMaker AI 실행 역할 생성](sms-security-permission-execution-role.md) 섹션을 참조하세요.

**참고**  
콘솔에서 레이블 지정 작업을 생성할 때 AWS KMS 고객 관리형 키를 지정하는 경우 해당 키는 출력 데이터를 암호화하는 데*만* 사용됩니다. 자동 데이터 레이블링에 사용되는 ML 컴퓨팅 인스턴스에 연결된 스토리지 볼륨을 암호화하는 데는 사용되지 않습니다.

# 인력 인증 및 제한 사항
<a name="sms-security-workforce-authentication"></a>

Ground Truth를 사용하면 자체 프라이빗 작업 인력을 사용하여 작업 레이블 지정 작업을 수행할 수 있습니다. *프라이빗 작업 인력*은 추상적인 개념이며 사용자를 위해 작업하는 사람들의 집합을 의미합니다. 각 레이블 지정 작업은 인력의 작업자로 구성된 작업 팀을 사용하여 생성됩니다. Ground Truth는 Amazon Cognito를 사용한 프라이빗 작업 인력 생성을 지원합니다.

Ground Truth 작업 인력은 Cognito 사용자 풀에 매핑됩니다. Ground Truth 작업 팀은 Cognito 사용자 그룹에 매핑됩니다. Amazon Cognito는 작업자 인증을 관리합니다. Amazon Cognito는 오픈 ID 연결(OIDC)을 지원하며 고객은 자신의 ID 제공업체(idP)로 Amazon Cognito 페더레이션을 설정할 수 있습니다.

Ground Truth는 AWS 리전별로 계정당 하나의 작업 인력만 허용합니다. 각 작업 인력에는 전용 Ground Truth 작업 포털 로그인 URL이 주어집니다.

클래스 없는 도메인 간 라우팅(CIDR) 블록/IP 주소 범위로 작업자를 제한할 수도 있습니다. 즉, 주석 사이트에 액세스하려면 주석 처리기가 특정 네트워크에 있어야 합니다. 한 작업 인력에 최대 열 개의 CIDR 블록을 추가할 수 있습니다. 자세한 내용은 [Amazon SageMaker API를 사용하여 프라이빗 작업 인력 관리](sms-workforce-management-private-api.md) 섹션을 참조하세요.

프라이빗 작업 인력을 생성하는 방법은 [프라이빗 작업 인력 생성(Amazon Cognito)](sms-workforce-create-private.md) 섹션을 참조하세요.

## 작업 인력 유형에 대한 액세스 제한
<a name="sms-security-permission-condition-keys"></a>

Amazon SageMaker Ground Truth 작업 팀은 퍼블릭(Amazon Mechanical Turk 사용), 프라이빗, 공급 업체의 세 가지 [인력 유형](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-workforce-management.html) 중 하나로 나뉩니다. 이러한 유형 중 하나 또는 작업 팀 ARN을 사용하여 특정 작업 팀에 대한 사용자 액세스를 제한하려면 `sagemaker:WorkteamType` 및/또는 `sagemaker:WorkteamArn` 조건 키를 사용합니다. `sagemaker:WorkteamType` 조건 키의 경우 [문자열 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_String)를 사용합니다. `sagemaker:WorkteamArn` 조건 키의 경우 [Amazon 리소스 이름(ARN) 조건 연산자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN)를 사용합니다. 사용자가 제한된 작업 팀을 사용하여 레이블링 작업을 생성하려고 하면 SageMaker AI에서 액세스 거부 오류가 반환됩니다.

아래 정책은 적절한 조건 연산자 및 유효한 조건 값과 함께 `sagemaker:WorkteamType`및 `sagemaker:WorkteamArn`조건 키를 사용하는 다양한 방법을 보여줍니다.

다음 예제에서는 `sagemaker:WorkteamType`조건 키를 `StringEquals`조건 연산자와 함께 사용하여 퍼블릭 작업 팀에 대한 액세스를 제한합니다. 형식 `workforcetype-crowd`의 조건 값을 수락합니다.여기서 *workforcetype*은 `public`, `private`또는 `vendor`과 같을 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RestrictWorkteamType",
            "Effect": "Deny",
            "Action": "sagemaker:CreateLabelingJob",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "sagemaker:WorkteamType": "public-crowd"
                }
            }
        }
    ]
}
```

------

다음 정책은 `sagemaker:WorkteamArn`조건 키를 사용하여 퍼블릭 작업 팀에 대한 액세스를 제한하는 방법을 보여줍니다. 첫 번째는 이 조건 키를 작업 팀 ARN 및 `ArnLike`조건 연산자의 유효한 IAM 정규식 변형과 함께 사용하는 방법을 보여줍니다. 두 번째는 이를 `ArnEquals`조건 연산자 및 작업 팀 ARN과 함께 사용하는 방법을 보여줍니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RestrictWorkteamType",
            "Effect": "Deny",
            "Action": "sagemaker:CreateLabelingJob",
            "Resource": "*",
            "Condition": {
                "ArnLike": {
                    "sagemaker:WorkteamArn": "arn:aws:sagemaker:*:*:workteam/public-crowd/*"
                }
            }
        }
    ]
}
```

------

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RestrictWorkteamType",
            "Effect": "Deny",
            "Action": "sagemaker:CreateLabelingJob",
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "sagemaker:WorkteamArn": "arn:aws:sagemaker:us-west-2:394669845002:workteam/public-crowd/default"
                }
            }
        }
    ]
}
```

------