

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

# 에 대한 서비스 역할 설정 AWS Clean Rooms
<a name="setting-up-roles"></a>

다음 섹션에서는 각 작업을 수행하는 데 필요한 역할을 설명합니다.

**Topics**
+ [관리자 사용자 생성하기](#setting-up-create-iam-user)
+ [공동 작업 구성원의 IAM 역할 생성](#create-role-DP)
+ [Amazon S3에서 데이터를 읽을 서비스 역할 생성](#create-service-role-procedure)
+ [Amazon Athena에서 데이터를 읽을 서비스 역할 생성](#create-service-role-athena)
+ [서비스 역할을 생성하여 Snowflake에서 데이터 읽기](#create-service-role-third-party)
+ [서비스 역할을 생성하여 S3 버킷에서 코드 읽기(PySpark 분석 템플릿 역할)](#create-role-pyspark-analysis-template)
+ [서비스 역할을 생성하여 PySpark 작업의 결과 작성](#create-role-pyspark-job)
+ [결과를 수신할 서비스 역할 생성](#create-role-write-results)

## 관리자 사용자 생성하기
<a name="setting-up-create-iam-user"></a>

를 사용하려면 관리자 사용자를 직접 생성하고 관리자 그룹에 관리자 사용자를 추가 AWS Clean Rooms해야 합니다.

다음 옵션 중 하나를 선택하여 관리 사용자를 생성합니다.


****  

| 관리자를 관리하는 방법 한 가지 선택 | 목적 | By | 다른 방법 | 
| --- | --- | --- | --- | 
| IAM Identity Center에서 (권장) | 단기 보안 인증 정보를 사용하여 AWS에 액세스합니다.이는 보안 모범 사례와 일치합니다. 모범 사례에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp)를 참조하세요. | AWS IAM Identity Center 사용 설명서의 [시작하기](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) 지침을 따릅니다. | AWS Command Line Interface 사용 설명서에서 [사용하도록 AWS CLI 를 구성 AWS IAM Identity Center](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html)하여 프로그래밍 방식 액세스를 구성합니다. | 
| IAM에서 (권장되지 않음) | 장기 보안 인증 정보를 사용하여 AWS에 액세스합니다. | IAM 사용 설명서의 [비상 액세스를 위한 IAM 사용자 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html)에 나와 있는 지침을 따르세요. | IAM 사용 설명서에 나온 [IAM 사용자의 액세스 키 관리](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html)를 수행하여 프로그래밍 방식의 액세스를 구성합니다. | 

## 공동 작업 구성원의 IAM 역할 생성
<a name="create-role-DP"></a>

멤버는 공동 작업의 참가자인 AWS 고객입니다.

**공동 작업 구성원의 IAM 역할을 생성하는 방법**

1. *AWS Identity and Access Management 사용 설명서*에 설명된 [IAM 사용자에게 권한을 위임하는 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) 절차를 수행합니다.

1. **정책 생성** 단계의 **정책 편집기**에서 **JSON** 탭을 선택한 다음 공동 작업 구성원에게 부여된 권한에 따라 정책을 추가합니다.

   AWS Clean Rooms 는 일반적인 사용 사례를 기반으로 다음과 같은 관리형 정책을 제공합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/clean-rooms/latest/userguide/setting-up-roles.html)

   에서 제공하는 다양한 관리형 정책에 대한 자세한 내용은 단원 AWS Clean Rooms을 참조하십시오[AWS 에 대한 관리형 정책 AWS Clean Rooms](security-iam-awsmanpol.md).

## Amazon S3에서 데이터를 읽을 서비스 역할 생성
<a name="create-service-role-procedure"></a>

AWS Clean Rooms 는 서비스 역할을 사용하여 Amazon S3에서 데이터를 읽습니다.

이 서비스 역할을 생성하는 방법에는 두 가지가 있습니다.
+ 서비스 역할을 생성하는 데 필요한 IAM 권한이 있는 경우 AWS Clean Rooms 콘솔을 사용하여 서비스 역할을 생성합니다.
+ `iam:CreateRole`, `iam:CreatePolicy` 및 `iam:AttachRolePolicy` 권한이 없거나 IAM 역할을 수동으로 생성하려는 경우 다음 중 하나를 수행합니다.
  + 다음 절차에 따라 사용자 지정 신뢰 정책을 사용하여 서비스 역할을 생성합니다.
  + 다음 절차에 따라 서비스 역할을 생성하도록 관리자에게 요청합니다.

**참고**  
사용자 또는 IAM 관리자는 콘솔을 사용하여 AWS Clean Rooms 서비스 역할을 생성하는 데 필요한 권한이 없는 경우에만이 절차를 따라야 합니다.

**사용자 지정 신뢰 정책을 사용하여 Amazon S3에서 데이터를 읽을 서비스 역할을 생성하려면**

1. 사용자 지정 신뢰 정책을 사용하여 역할을 생성합니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차를 참조하세요.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 사용자 지정 신뢰 정책을 사용합니다.
**참고**  
역할이 특정 공동 작업 멤버십의 컨텍스트에서만 사용되도록 하려면 신뢰 정책의 범위를 더 좁힐 수 있습니다. 자세한 내용은 [교차 서비스 혼동된 대리자 예방](cross-service-confused-deputy-prevention.md) 단원을 참조하십시오.

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

****  

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

------

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 권한 정책을 사용합니다.
**참고**  
다음 예제 정책은 AWS Glue 메타데이터와 해당 Amazon S3 데이터를 읽는 데 필요한 권한을 지원합니다. 그러나 Amazon S3 데이터를 설정한 방법에 따라이 정책을 수정해야 할 수 있습니다. 예를 들어 Amazon S3 데이터에 대한 사용자 지정 KMS 키를 설정한 경우 추가 AWS Key Management Service (AWS KMS) 권한으로이 정책을 수정해야 할 수 있습니다.  
 AWS Glue 리소스와 기본 Amazon S3 리소스는 AWS Clean Rooms 공동 작업 AWS 리전 과 동일한에 있어야 합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "NecessaryGluePermissions",
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:GetPartition",
                   "glue:GetPartitions",
                   "glue:BatchGetPartition"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:database/databaseName",
                   "arn:aws:glue:us-east-1:111122223333:table/databaseName/tableName",
                   "arn:aws:glue:us-east-1:111122223333:catalog"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetSchema",
                   "glue:GetSchemaVersion"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Sid": "NecessaryS3BucketPermissions",
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketLocation",
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "444455556666"
                       ]
                   }
               }
           },
           {
               "Sid": "NecessaryS3ObjectPermissions",
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket/prefix/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "s3:ResourceAccount": [
                           "444455556666"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**참고**  
이 정책은 데이터 카탈로그 메타데이터와 실제 데이터 스토리지를 서로 다른 당사자가 관리하는 공동 작업을 지원하기 AWS Clean Rooms 위해 두 개의 서로 다른 AWS 계정 IDs를 참조합니다.  
**111122223333** - AWS Glue 데이터 카탈로그 리소스(데이터베이스, 테이블 및 카탈로그)를 소유한 계정입니다. 첫 번째 문은이 계정의 AWS Glue 카탈로그에서 테이블 스키마, 파티션 정보 및 메타데이터에 액세스할 수 있는 권한을 부여합니다.
**444455556666** - 실제 데이터 파일이 포함된 Amazon S3 버킷을 소유한 계정입니다. Amazon S3 권한(문 3 및 4)은 `s3:ResourceAccount` 조건을 통해이 계정이 소유한 버킷으로 제한됩니다.
이 구성은 한 팀이 데이터 카탈로그와 스키마 정의를 관리하는 반면 다른 팀이 기본 데이터 스토리지 인프라를 소유하는 일반적인 엔터프라이즈 데이터 아키텍처를 지원합니다. `s3:ResourceAccount` 조건은 Amazon S3 작업이 지정된 계정이 소유한 버킷에서만 작동하도록 하여 추가 보안 계층을 제공합니다.

1. 각 *자리 표시자*를 자신의 정보로 바꿉니다.

1. 계속해서 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 역할을 생성합니다.

## Amazon Athena에서 데이터를 읽을 서비스 역할 생성
<a name="create-service-role-athena"></a>

AWS Clean Rooms 는 서비스 역할을 사용하여 Amazon Athena에서 데이터를 읽습니다.

**사용자 지정 신뢰 정책을 사용하여 Athena에서 데이터를 읽을 서비스 역할을 생성하려면**

1. 사용자 지정 신뢰 정책을 사용하여 역할을 생성합니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차를 참조하세요.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 사용자 지정 신뢰 정책을 사용합니다.
**참고**  
역할이 특정 공동 작업 멤버십의 컨텍스트에서만 사용되도록 하려면 신뢰 정책의 범위를 더 좁힐 수 있습니다. 자세한 내용은 [교차 서비스 혼동된 대리자 예방](cross-service-confused-deputy-prevention.md) 단원을 참조하십시오.

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

****  

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

------

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 권한 정책을 사용합니다.
**참고**  
다음 예제 정책은 AWS Glue 메타데이터와 해당 Athena 데이터를 읽는 데 필요한 권한을 지원합니다. 그러나 Amazon S3 데이터를 설정한 방법에 따라이 정책을 수정해야 할 수 있습니다. 예를 들어 Amazon S3 데이터에 대한 사용자 지정 KMS 키를 이미 설정한 경우 추가 AWS KMS 권한으로이 정책을 수정해야 할 수 있습니다.

   ```
   {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "athena:GetWorkGroup",
                   "athena:GetTableMetadata",
                   "athena:GetDataCatalog",
                   "athena:StartQueryExecution",
                   "athena:GetQueryExecution",
                   "athena:GetQueryResults"
               ],
               "Resource": [
                   "arn:aws:athena:region:accountId:workgroup/workgroup",
                   "arn:aws:athena:region:accountId:datacatalog/federatedCatalogName"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabase",
                   "glue:GetTable",
                   "glue:GetCatalog"
               ],
               "Resource": [
                   "arn:aws:glue:region:accountId:catalog",
                   "arn:aws:glue:region:accountId:catalog/federatedCatalogName",
                   "arn:aws:glue:region:accountId:database/federatedCatalogName/databaseName",
                   "arn:aws:glue:region:accountId:table/federatedCatalogName/databaseName/tableName"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetBucketLocation",
                   "s3:AbortMultipartUpload",
                   "s3:ListBucket",
                   "s3:PutObject",
                   "s3:ListMultipartUploadParts"
               ],
               "Resource": [
                   "arn:aws:s3:::athenaResultsBucket",
                   "arn:aws:s3:::athenaResultsBucket/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount": "accountId"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": "lakeformation:GetDataAccess",
               "Resource": "*"
           }
       ]
   }
   ```

1. 각 *자리 표시자*를 자신의 정보로 바꿉니다.

1. 계속해서 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 역할을 생성합니다.

### Lake Formation 권한 설정
<a name="setup-lakeformation-permissions"></a>

Lake Formation 권한으로 보호되는 리소스를 쿼리하는 경우 서비스 역할에는 table/view/catalog에 대한 **선택** 및 **설명** 액세스 권한과 AWS Glue 데이터베이스에 대한 **설명** 권한이 있어야 합니다.

자세한 내용은 다음을 참조하세요.
+ [Athena를 사용하여 Amazon Athena 사용 설명서의에 등록된 데이터 쿼리 AWS Lake Formation](https://docs.aws.amazon.com/athena/latest/ug/security-athena-lake-formation.html) *Amazon Athena *
+ *AWS Lake Formation 개발자 안내서*의 [Lake Formation에 온보딩 권한](https://docs.aws.amazon.com/lake-formation/latest/dg/onboarding-lf-permissions.html) 



## 서비스 역할을 생성하여 Snowflake에서 데이터 읽기
<a name="create-service-role-third-party"></a>

AWS Clean Rooms 는 서비스 역할을 사용하여 Snowflake가이 소스에서 데이터를 읽을 수 있도록 자격 증명을 검색합니다.

이 서비스 역할을 만드는 방법은 다음 두 가지입니다.
+ 서비스 역할을 생성하는 데 필요한 IAM 권한이 있는 경우 AWS Clean Rooms 콘솔을 사용하여 서비스 역할을 생성합니다.
+ `iam:CreateRole`, `iam:CreatePolicy` 및 `iam:AttachRolePolicy` 권한이 없거나 IAM 역할을 수동으로 생성하려는 경우 다음 중 하나를 수행합니다.
  + 다음 절차에 따라 사용자 지정 신뢰 정책을 사용하여 서비스 역할을 생성합니다.
  + 다음 절차에 따라 서비스 역할을 생성하도록 관리자에게 요청합니다.

**참고**  
사용자 또는 IAM 관리자는 콘솔을 사용하여 AWS Clean Rooms 서비스 역할을 생성하는 데 필요한 권한이 없는 경우에만이 절차를 따라야 합니다.

**사용자 지정 신뢰 정책을 사용하여 Snowflake에서 데이터를 읽을 서비스 역할을 생성하려면**

1. 사용자 지정 신뢰 정책을 사용하여 역할을 생성합니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차를 참조하세요.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 사용자 지정 신뢰 정책을 사용합니다.
**참고**  
역할이 특정 공동 작업 멤버십의 컨텍스트에서만 사용되도록 하려면 신뢰 정책의 범위를 더 좁힐 수 있습니다. 자세한 내용은 [교차 서비스 혼동된 대리자 예방](cross-service-confused-deputy-prevention.md) 단원을 참조하십시오.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowIfSourceArnMatches",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:111122223333:membership/membershipId",
                           "arn:aws:cleanrooms:us-east-1:444455556666:membership/queryRunnerMembershipId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**참고**  
이 신뢰 정책은 쿼리 실행 책임이 여러 당사자에 분산되는 공동 작업을 지원하기 위해 두 가지 다른 AWS 계정 IDs를 AWS Clean Rooms 참조합니다.  
**111122223333** - 공동 작업에 참여하는 멤버십이 포함된 계정입니다. 이 멤버십은 데이터 테이블, 분석 규칙 또는 역할 액세스가 필요한 기타 공동 작업 리소스를 소유할 수 있습니다.
**444455556666** - 쿼리 실행을 담당하는 멤버십(“쿼리 실행기”)이 포함된 계정입니다. 이 멤버십은 보호된 쿼리를 실행하며 필요한 컴퓨팅 및 데이터 리소스에 액세스하려면이 역할을 수임해야 합니다.
이 구성을 사용하면 한 당사자가 데이터 또는 분석 템플릿을 제공하는 반면 다른 당사자가 실제 쿼리를 실행하는 시나리오를 사용할 수 있습니다. 두 역할 모두 동일한 실행 역할을 통해 서로 다르지만 보완적인 권한이 필요합니다. 이 `aws:SourceArn` 조건은 이러한 두 특정 멤버십에서 시작된 AWS Clean Rooms 작업만 역할을 수임하여 분산 작업 실행 및 결과 관리 워크플로를 지원하면서 보안을 유지할 수 있도록 합니다.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔) 절차에 따라 다음 권한 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 중 하나를 사용합니다.

   **고객 소유 KMS 키로 암호화된 보안 암호에 대한 권한 정책**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretIdentifier",
               "Effect": "Allow"
           },
           {
               "Sid": "AllowDecryptViaSecretsManagerForKey",
               "Action": "kms:Decrypt",
               "Resource": "arn:aws:kms:us-east-1:444455556666:key/keyIdentifier",
               "Effect": "Allow",
               "Condition": {
                   "StringEquals": {
                       "kms:ViaService": "secretsmanager.us-east-1.amazonaws.com",
                       "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretIdentifier"
                   }
               }
           }
       ]
   }
   ```

------
**참고**  
이 정책은 두 가지 다른 AWS 계정 IDs를 참조하여 교차 계정 보안 암호 관리 시나리오를 지원합니다.  
**111122223333** - 보안 암호를 소유하고에 저장하는 계정입니다. 첫 번째 문은이 계정에서 보안 암호 값을 검색할 수 있는 권한을 부여합니다.
**444455556666** - 보안 암호를 암호화하는 데 사용되는 AWS KMS 키를 소유한 계정입니다. 두 번째 문은이 계정의 AWS KMS 키를 사용하여 보안 암호를 해독할 수 있는 권한을 부여합니다.
이 구성은 다음과 같은 엔터프라이즈 환경에서 일반적입니다.  
보안 암호는 하나의 계정(계정 1)에서 중앙에서 관리됩니다.
암호화 키는 별도의 보안 또는 공유 서비스 계정(계정 2)에서 관리합니다.
계정 2의 AWS KMS 키 정책은 계정 1의 서비스가 암호화/복호화 작업에 키를 사용하도록 허용해야 합니다.
이 `kms:EncryptionContext:SecretARN` 조건은 AWS KMS 키를이 특정 보안 암호를 해독하는 데만 사용할 수 있도록 하여 교차 계정 액세스를 위한 추가 보안 계층을 제공합니다.

   **로 암호화된 보안 암호에 대한 권한 정책 AWS 관리형 키**

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:secretIdentifier",
               "Effect": "Allow"
           }
       ]
   }
   ```

------

1. 각 *자리 표시자*를 자신의 정보로 바꿉니다.

1. 계속해서 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 역할을 생성합니다.

## 서비스 역할을 생성하여 S3 버킷에서 코드 읽기(PySpark 분석 템플릿 역할)
<a name="create-role-pyspark-analysis-template"></a>

AWS Clean Rooms 는 PySpark 분석 템플릿을 사용할 때 서비스 역할을 사용하여 공동 작업 구성원의 지정된 S3 버킷에서 코드를 읽습니다.

**S3 버킷에서 코드를 읽을 서비스 역할을 생성하려면**

1. 사용자 지정 신뢰 정책을 사용하여 역할을 생성합니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차를 참조하세요.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 사용자 지정 신뢰 정책을 사용합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:111122223333:membership/jobRunnerMembershipId",
                           "arn:aws:cleanrooms:us-east-1:444455556666:membership/analysisTemplateOwnerMembershipId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**참고**  
이 신뢰 정책은 다자간 AWS Clean Rooms 협업 시나리오를 지원하기 위해 두 가지 다른 AWS 계정 IDs를 참조합니다.  
**111122223333** - 쿼리 실행을 담당하는 멤버십("작업 실행기")이 포함된 계정입니다. 이 멤버십은 분석 작업을 실행하며 필요한 리소스에 액세스하려면이 역할을 수임해야 합니다.
**444455556666** - 분석 템플릿 및 관련 멤버십을 소유한 계정(“분석 템플릿 소유자”)입니다. 이 멤버십은 실행할 수 있는 쿼리를 정의하며 분석을 관리하고 실행하기 위해이 역할을 수임해야 합니다.
이 구성은 여러 당사자가 각각 자체 AWS 계정 및 멤버십을 가진 동일한 AWS Clean Rooms 공동 작업에 참여하는 공동 작업에서 일반적입니다. 쿼리 실행기와 분석 템플릿 소유자 모두 공유 리소스에 액세스해야 합니다. 이 `aws:SourceArn` 조건은 이러한 두 특정 멤버십에서 시작된 AWS Clean Rooms 작업만 역할을 수임하여 다자간 공동 작업에 대한 정확한 액세스 제어를 제공할 수 있도록 합니다.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 권한 정책을 사용합니다.
**참고**  
다음 예제 정책은 Amazon S3에서 코드를 읽는 데 필요한 권한을 지원합니다. 하지만 S3 데이터를 설정한 방법에 따라 이 정책을 수정해야 할 수도 있습니다.  
Amazon S3 리소스는 공동 작업 AWS 리전 과 AWS Clean Rooms 동일한에 있어야 합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion"
               ],
               "Resource": ["arn:aws:s3:::s3Path"],
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "s3BucketOwnerAccountId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. 각 *자리 표시자*를 사용자의 정보로 바꿉니다.
   + *s3Path* - 코드의 S3 버킷 위치입니다.
   + *s3BucketOwnerAccountId* - S3 버킷 소유자의 AWS 계정 ID입니다.
   + *리전* – AWS 리전의 이름. 예를 들어 **us-east-1**입니다.
   + *jobRunnerAccountId* - 쿼리 및 작업을 실행할 수 있는 구성원의 AWS 계정 ID입니다.
   + *jobRunnerMembershipId* - 작업을 쿼리하고 실행할 수 있는 멤버의 **멤버십 ID**입니다. **멤버십 ID**는 공동 작업의 **세부 정보** 탭에서 찾을 수 있습니다. 이렇게 하면이 구성원 AWS Clean Rooms 이이 공동 작업에서 분석을 실행할 때만가 역할을 수임할 수 있습니다.
   + *analysisTemplateAccountId* - 분석 템플릿의 AWS 계정 ID입니다.
   + *analysisTemplateOwnerMembershipId* - 분석 템플릿을 소유한 구성원의 **멤버십 ID**입니다. **멤버십 ID**는 공동 작업의 **세부 정보** 탭에서 찾을 수 있습니다.

1. 계속해서 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 역할을 생성합니다.

## 서비스 역할을 생성하여 PySpark 작업의 결과 작성
<a name="create-role-pyspark-job"></a>

AWS Clean Rooms 는 서비스 역할을 사용하여 PySpark 작업의 결과를 지정된 S3 버킷에 씁니다.

**PySpark 작업의 결과를 작성할 서비스 역할을 생성하려면**

1. 사용자 지정 신뢰 정책을 사용하여 역할을 생성합니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차를 참조하세요.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 사용자 지정 신뢰 정책을 사용합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:111122223333:membership/jobRunnerMembershipId",
                           "arn:aws:cleanrooms:us-east-1:444455556666:membership/rrMembershipId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------
**참고**  
이 신뢰 정책은 두 개의 서로 다른 AWS 계정 IDs를 참조하여 고유한 운영 역할이 AWS Clean Rooms 있는 공동 작업을 지원합니다.  
**111122223333** - 분석 작업 실행을 담당하는 멤버십("작업 실행기")이 포함된 계정입니다. 이 멤버십은 컴퓨팅 워크로드를 실행하며 처리 리소스에 액세스하려면이 역할을 수임해야 합니다.
**444455556666** - 결과 수신자(RR) 책임이 있는 멤버십이 포함된 계정입니다. 이 멤버십은 분석 작업의 출력을 수신하고 액세스할 수 있는 권한이 있으며, 지정된 위치에 결과를 쓰려면 역할 액세스 권한이 필요합니다.
이 구성을 사용하면 한 당사자가 계산 분석을 실행하는 동안 다른 당사자가 결과를 수신하고 관리하는 AWS Clean Rooms 시나리오를 사용할 수 있습니다. 두 역할 모두 동일한 실행 역할을 통해 서로 다르지만 보완적인 권한이 필요합니다. `aws:SourceArn` 조건은 이러한 두 특정 멤버십에서 시작된 AWS Clean Rooms 작업만 역할을 수임하여 분산 작업 실행 및 결과 관리 워크플로를 지원하면서 보안을 유지할 수 있도록 합니다.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 권한 정책을 사용합니다.
**참고**  
다음 예제 정책은 Amazon S3에 쓰는 데 필요한 권한을 지원합니다. 그러나 S3 설정 방법에 따라이 정책을 수정해야 할 수 있습니다.  
Amazon S3 리소스는 공동 작업 AWS 리전 과 AWS Clean Rooms 동일해야 합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::bucket/optionalPrefix/*",
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "s3BucketOwnerAccountId"
                       ]
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketLocation",
                   "s3:ListBucket"
               ],
               "Resource": "arn:aws:s3:::bucket",
               "Condition":{
                   "StringEquals":{
                       "s3:ResourceAccount":[
                           "s3BucketOwnerAccountId"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. 각 *자리 표시자*를 자신의 정보로 바꿉니다.
   + *리전* – AWS 리전의 이름. 예를 들어 **us-east-1**입니다.
   + *jobRunnerAccountId* - S3 버킷이 위치한 AWS 계정 ID입니다.
   + *jobRunnerMembershipId* - 작업을 쿼리하고 실행할 수 있는 멤버의 **멤버십 ID**입니다. **멤버십 ID**는 공동 작업의 **세부 정보** 탭에서 찾을 수 있습니다. 이렇게 하면이 구성원 AWS Clean Rooms 이이 공동 작업에서 분석을 실행할 때만가 역할을 수임할 수 있습니다.
   + *rrAccountId* AWS 계정 - S3 버킷이 위치한 ID입니다.
   + *rrMembershipId* - 결과를 받을 수 있는 멤버의 **멤버십 ID**입니다. **멤버십 ID**는 공동 작업의 **세부 정보** 탭에서 찾을 수 있습니다. 이렇게 하면이 구성원 AWS Clean Rooms 이이 공동 작업에서 분석을 실행할 때만가 역할을 수임할 수 있습니다.
   + *버킷* - S3 버킷의 이름 및 위치입니다.
   + *optionalPrefix* - 결과를 특정 S3 접두사에 저장하려는 경우의 선택적 접두사입니다.
   + *s3BucketOwnerAccountId* - S3 버킷 소유자의 AWS 계정 ID입니다.

1. 계속해서 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 역할을 생성합니다.

## 결과를 수신할 서비스 역할 생성
<a name="create-role-write-results"></a>

**참고**  
결과 수신만 가능한 구성원인 경우(콘솔에서 **사용자의 멤버 자격**이 **결과 받기**로만 표시됨) 다음 절차를 따르세요.  
쿼리와 결과 수신이 모두 가능한 구성원인 경우(콘솔에서 **사용자의 멤버 자격**이 **쿼리**와 **결과 받기** 모두 해당) 이 절차를 건너뛸 수 있습니다.

결과만 수신할 수 있는 공동 작업 구성원의 경우는 서비스 역할을 AWS Clean Rooms 사용하여 공동 작업에서 쿼리된 데이터의 결과를 지정된 S3 버킷에 기록합니다.

이 서비스 역할을 만드는 방법은 다음 두 가지입니다.
+ 서비스 역할을 생성하는 데 필요한 IAM 권한이 있는 경우 AWS Clean Rooms 콘솔을 사용하여 서비스 역할을 생성합니다.
+ `iam:CreateRole`, `iam:CreatePolicy` 및 `iam:AttachRolePolicy` 권한이 없거나 IAM 역할을 수동으로 생성하려는 경우 다음 중 하나를 수행합니다.
  + 다음 절차에 따라 사용자 지정 신뢰 정책을 사용하여 서비스 역할을 생성합니다.
  + 다음 절차에 따라 서비스 역할을 생성하도록 관리자에게 요청합니다.

**참고**  
사용자 또는 IAM 관리자는 콘솔을 사용하여 AWS Clean Rooms 서비스 역할을 생성하는 데 필요한 권한이 없는 경우에만이 절차를 따라야 합니다.

**사용자 지정 신뢰 정책을 사용하여 결과를 수신할 서비스 역할을 생성하려면**

1. 사용자 지정 신뢰 정책을 사용하여 역할을 생성합니다. 자세한 내용은 *AWS Identity and Access Management 사용 설명서*의 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차를 참조하세요.

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 사용자 지정 신뢰 정책을 사용합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowIfExternalIdMatches",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ArnLike": {
                       "sts:ExternalId": "arn:aws:*:region:*:dbuser:*/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa*"
                   }
               }
           },
           {
               "Sid": "AllowIfSourceArnMatches",
               "Effect": "Allow",
               "Principal": {
                   "Service": "cleanrooms.amazonaws.com"
               },
               "Action": "sts:AssumeRole",
               "Condition": {
                   "ForAnyValue:ArnEquals": {
                       "aws:SourceArn": [
                           "arn:aws:cleanrooms:us-east-1:555555555555:membership/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa"
                       ]
                   
                   }
               }
           }
       ]
   }
   ```

------

1. [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 다음 권한 정책을 사용합니다.
**참고**  
다음 예제 정책은 AWS Glue 메타데이터와 해당 Amazon S3 데이터를 읽는 데 필요한 권한을 지원합니다. 하지만 S3 데이터를 설정한 방법에 따라 이 정책을 수정해야 할 수도 있습니다.  
 AWS Glue 리소스와 기본 Amazon S3 리소스는 AWS Clean Rooms 공동 작업 AWS 리전 과 동일한에 있어야 합니다.

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

****  

   ```
   {
   
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketLocation", 
                   "s3:ListBucket"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket_name"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount":"accountId"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucket_name/optional_key_prefix/*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceAccount":"accountId"
                   }
               }
           }
       ]
   }
   ```

------

1. 각 *자리 표시자*를 자신의 정보로 바꿉니다.
   + *리전* – AWS 리전의 이름. 예를 들어 **us-east-1**입니다.
   + *a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa* — 쿼리할 수 있는 **구성원의 멤버십 ID**입니다. **멤버십 ID**는 공동 작업의 **세부 정보** 탭에서 찾을 수 있습니다. 이렇게 하면이 구성원 AWS Clean Rooms 이이 공동 작업에서 분석을 실행할 때만가 역할을 수임할 수 있습니다.
   + *arn:aws:cleanrooms:us-east-1:555555555555:membership/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa* — 쿼리할 수 있는 구성원의 단일 **멤버십 ARN**입니다. **멤버십 ARN**은 공동 작업의 **세부 정보** 탭에서 찾을 수 있습니다. 이렇게 하면이 구성원 AWS Clean Rooms 이이 공동 작업에서 분석을 실행할 때만가 역할을 수임할 수 있습니다.
   + *bucket\$1name* – S3 버킷의 **Amazon 리소스 이름(ARN)**. **Amazon 리소스 이름(ARN)**은 Amazon S3에 있는 버킷의 **속성** 탭에서 찾을 수 있습니다.
   + *accountId* - S3 버킷이 위치한 AWS 계정 ID입니다.

     *bucket\$1name/optional\$1key\$1prefix* – **Amazon S3의 결과 대상의 Amazon 리소스 이름(ARN)**입니다. Amazon S3 **Amazon 리소스 이름(ARN)**은 Amazon S3에 있는 버킷의 **속성** 탭에서 찾을 수 있습니다.

1. 계속해서 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html) 절차에 따라 역할을 생성합니다.