

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

# 계정 간 Amazon S3 스토리지에 대한 권한 부여
<a name="canvas-permissions-cross-account"></a>

사용자가 SageMaker Canvas에 액세스할 수 있도록 SageMaker AI 도메인 또는 사용자 프로필을 설정할 때 Canvas 아티팩트에 대한 Amazon S3 스토리지 위치를 지정합니다. 이러한 아티팩트에는 입력 데이터 집합, 모델 아티팩트, 예측 및 기타 애플리케이션 데이터의 저장된 사본이 포함됩니다. SageMaker AI에서 생성한 기본 Amazon S3 버킷을 사용하거나 스토리지 위치를 사용자 지정하고 Canvas 애플리케이션 데이터를 저장하기 위한 자체 버킷을 지정할 수 있습니다.

Canvas 데이터를 저장하기 위해 다른 AWS 계정에서 Amazon S3 버킷을 지정할 수 있지만 먼저 Canvas가 버킷에 액세스할 수 있도록 교차 계정 권한을 부여해야 합니다.

다음 섹션에서는 다른 계정의 Amazon S3 버킷으로 객체를 업로드 및 다운로드할 수 있는 권한을 Canvas에 부여하는 방법을 설명합니다. 버킷을 암호화할 때에 대한 추가 권한이 있습니다 AWS KMS.

## 요구 사항
<a name="canvas-permissions-cross-account-prereqs"></a>

시작하기 전에 다음 요구 사항을 확인하세요.
+ 교차 계정 Amazon S3 버킷(및 연결된 AWS KMS 키)은 Canvas 사용자 도메인 또는 사용자 프로필과 동일한 AWS 리전에 있어야 합니다.
+ Canvas 스토리지 위치에 있는 훈련 폴더의 최종 Amazon S3 URI는 128자 이하여야 합니다. 최종 S3 URI는 버킷 경로 `s3://<your-bucket-name>/<folder-name>/`와 Canvas가 버킷에 추가하는 경로 `Canvas/<user-profile-name>/Training`로 구성됩니다. 예를 들어 128자 미만의 허용 가능한 경로는 `s3://<amzn-s3-demo-bucket>/<machine-learning>/Canvas/<user-1>/Training`입니다.

## 계정 간 Amazon S3 버킷에 대한 사용 권한
<a name="canvas-permissions-cross-account-s3"></a>

다음 섹션에서는 Canvas가 다른 계정의 Amazon S3 버킷에 액세스할 수 있도록 필요한 권한을 부여하는 기본 단계를 설명합니다. 자세한 지침은 *Amazon S3 사용 설명서*의 [예제 2: 계정 간 버킷 권한을 부여하는 버킷 소유자](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)를 참조하세요.

1. 계정 A에 Amazon S3 버킷 `bucketA`을 생성합니다.

1. Canvas 사용자는 계정 B라는 다른 계정에 존재합니다. 다음 단계에서는 다음 단계에서는 Canvas 사용자의 IAM 역할을 계정 B의 `roleB`로 언급합니다.

   IAM 정책을 연결하여 계정 B의 IAM 역할 `roleB`에 계정 A의 `bucketA`객체를 다운로드(`GetObject`) 하고 업로드(`PutObject`) 할 수 있는 권한을 부여합니다.

   특정 버킷 폴더에 대한 액세스를 제한하려면 리소스 요소에 폴더 이름(예: `arn:aws:s3:::<bucketA>/FolderName/*`)을 정의합니다. 자세한 내용은 [IAM 정책을 사용하여 특정 폴더에 대한 사용자별 액세스 권한을 부여하려면 어떻게 해야 합니까?](https://aws.amazon.com/premiumsupport/knowledge-center/iam-s3-user-specific-folder/)를 참조하세요.
**참고**  
`GetBucketCors` 및 `GetBucketLocation`와 같은 버킷 수준 작업은 폴더가 아닌 버킷 수준 리소스에 추가해야 합니다.

   다음 예제 IAM 정책은 `roleB`가 `bucketA`의 개체에 액세스하는 데 필요한 권한을 부여합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:DeleteObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucketA/FolderName/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketCors",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::bucketA"
               ]
           }
       ]
   }
   ```

------

1. 계정 A의 `bucketA`에 대한 버킷 정책을 구성하여 계정 B의 IAM 역할 `roleB`에 대한 사용 권한을 부여합니다.
**참고**  
또한 관리자는 버킷 **권한** 섹션에서 **모든 퍼블릭 액세스 차단**을 해제해야 합니다.

   다음은 `roleB`에게 필요한 권한을 부여하기 위한 `bucketA`의 버킷 정책의 예시입니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/roleB"
               },
               "Action": [
                   "s3:DeleteObject",
                   "s3:GetObject",
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::bucketA/FolderName/*"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/roleB"
               },
               "Action": [
                   "s3:ListBucket",
                   "s3:GetBucketCors",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::bucketA"
           }
       ]
   }
   ```

------

이전 권한을 구성한 후 계정 B의 Canvas 사용자 프로필은 이제 계정 A의 Amazon S3 버킷을 Canvas 아티팩트의 스토리지 위치로 사용할 수 있습니다.

## 로 암호화된 교차 계정 Amazon S3 버킷에 대한 권한 AWS KMS
<a name="canvas-permissions-cross-account-s3-kms"></a>

다음 절차에서는 Canvas가 암호화된 다른 계정의 Amazon S3 버킷에 액세스할 수 있도록 필요한 권한을 부여하는 방법을 보여줍니다 AWS KMS. 단계는 위의 절차와 비슷하지만 추가 권한이 있습니다. 계정 간 KMS 키 액세스 권한 부여에 대한 자세한 내용은 *AWS KMS 개발자 안내서*의 [다른 계정의 사용자가 KMS를 사용하도록 허용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)을 참조하세요.

1. 계정 A에 Amazon S3 버킷 `bucketA`와 Amazon S3 KMS 키 `s3KmsInAccountA`를 만듭니다.

1. Canvas 사용자는 계정 B라는 다른 계정에 존재니다.다음 단계에서는 다음 단계에서는 Canvas 사용자의 IAM 역할을 계정 B의 `roleB`로 언급합니다.

   계정 B의 IAM 역할 `roleB`에 다음 작업을 수행할 수 있는 권한을 부여합니다.
   + 계정 A의 `bucketA`에서 개체를 다운로드(`GetObject`)하고 업로드(`PutObject`)합니다.
   + 계정 A의 AWS KMS 키`s3KmsInAccountA`에 액세스합니다.

   다음 예제 IAM 정책은 `roleB`이 `bucketA`의 객체에 액세스하고 KMS 키 `s3KmsInAccountA`를 사용하는 데 필요한 권한을 부여합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:DeleteObject"
               ],
               "Resource": [
                   "arn:aws:s3:::bucketA/FolderName/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetBucketCors",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::bucketA"
               ]
           },
           {
               "Action": [
                   "kms:DescribeKey",
                   "kms:CreateGrant",
                   "kms:RetireGrant",
                   "kms:GenerateDataKey",
                   "kms:GenerateDataKeyWithoutPlainText",
                   "kms:Decrypt"
               ],
               "Effect": "Allow",
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/s3KmsInAccountA"
           }
       ]
   }
   ```

------

1. 계정 A에서 `bucketA`에 대한 버킷 정책과 `s3KmsInAccountA`에 대한 키 정책을 구성하여 계정 B의 IAM 역할 `roleB`에 대한 권한을 부여합니다.

   다음은 `roleB`에게 필요한 권한을 부여하기 위한 `bucketA`의 버킷 정책의 예시입니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/roleB"
               },
               "Action": [
                   "s3:DeleteObject",
                   "s3:GetObject",
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::bucketA/FolderName/*"
           },
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/roleB"
               },
               "Action": [
                   "s3:GetBucketCors",
                   "s3:GetBucketLocation"
               ],
               "Resource": "arn:aws:s3:::bucketA"
           }
       ]
   }
   ```

------

   다음 예는 계정 A의 KMS 키 `s3KmsInAccountA`에 연결하여 `roleB`액세스 권한을 부여하는 키 정책입니다. 키 정책 설명을 만들고 연결하는 방법에 대한 자세한 내용은 *AWS KMS 개발자 안내서*의 [키 정책 생성](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html)을 참조하세요.

   ```
   {
     "Sid": "Allow use of the key",
     "Effect": "Allow",
     "Principal": {
       "AWS": [
         "arn:aws:iam::accountB:role/roleB"
       ]
     },
     "Action": [
           "kms:DescribeKey",
           "kms:CreateGrant",
           "kms:RetireGrant",
           "kms:GenerateDataKey",
           "kms:GenerateDataKeyWithoutPlainText",
           "kms:Decrypt"
     ],
     "Resource": "*"
   }
   ```

이전 권한을 구성한 후 계정 B의 Canvas 사용자 프로필은 이제 계정 A의 암호화된 Amazon S3 버킷을 Canvas 아티팩트의 스토리지 위치로 사용할 수 있습니다.