계정 간 Amazon S3 스토리지에 대한 권한 부여 - 아마존 SageMaker

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

계정 간 Amazon S3 스토리지에 대한 권한 부여

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

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

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

요구 사항

시작하기 전에 다음 요구 사항을 확인하세요.

  • 교차 계정 Amazon S3 버킷 (및 기타 관련) AWS KMS 키가 같아야 합니다. AWS Canvas 사용자 도메인 또는 사용자 프로필과 같은 지역.

  • Canvas 스토리지 위치에 있는 교육 폴더의 최종 Amazon URI S3는 128자 이하여야 합니다. 최종 URI S3는 버킷 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 버킷에 대한 사용 권한

다음 섹션에서는 Canvas가 다른 계정의 Amazon S3 버킷에 액세스할 수 있도록 필요한 권한을 부여하는 기본 단계를 설명합니다. 자세한 지침은 Amazon S3 사용 설명서예제 2: 계정 간 버킷 권한을 부여하는 버킷 소유자를 참조하세요.

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

  2. Canvas 사용자는 계정 B라는 다른 계정에 있습니다. 다음 단계에서는 계정 roleB B에서와 마찬가지로 Canvas 사용자의 IAM 역할을 참조합니다.

    IAM정책을 첨부하여 계정 B의 IAM 역할에게 계정 roleB A에서 객체를 다운로드 (GetObjectPutObject) 하고 계정 bucketA A에서 객체를 업로드 () 할 수 있는 권한을 부여합니다.

    특정 버킷 폴더에 대한 액세스를 제한하려면 리소스 요소에 폴더 이름(예: arn:aws:s3:::<bucketA>/FolderName/*)을 정의합니다. 자세한 내용은 IAM정책을 사용하여 특정 폴더에 대한 사용자별 액세스 권한을 부여하려면 어떻게 해야 하나요? 를 참조하십시오.

    참고

    GetBucketCorsGetBucketLocation와 같은 버킷 수준 작업은 폴더가 아닌 버킷 수준 리소스에 추가해야 합니다.

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

    { "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", ] } ] }
  3. 계정 A의 버킷 정책을 구성하여 계정 B의 IAM 역할에 roleB 권한을 부여합니다. bucketA

    참고

    또한 관리자는 버킷 권한 섹션에서 모든 퍼블릭 액세스 차단을 해제해야 합니다.

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

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

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

로 암호화된 교차 계정 Amazon S3 버킷에 대한 권한 AWS KMS

다음 절차는 Canvas가 암호화된 다른 계정의 Amazon S3 버킷에 액세스할 수 있도록 필요한 권한을 부여하는 방법을 보여줍니다. AWS KMS. 단계는 위의 절차와 비슷하지만 추가 권한이 있습니다. 계정 간 KMS 키 액세스 권한 부여에 대한 자세한 내용은 다른 계정의 사용자가 키를 사용할 수 있도록 허용을 참조하십시오. KMS AWS KMS 개발자 가이드.

  1. Amazon S3 버킷을 생성하고 계정 A에 Amazon S3 KMS 키를 s3KmsInAccountA 생성합니다. bucketA

  2. Canvas 사용자는 계정 B라는 다른 계정에 있습니다. 다음 단계에서는 계정 roleB B에서와 마찬가지로 Canvas 사용자의 IAM 역할을 참조합니다.

    계정 B의 IAM roleB 역할에게 다음 작업을 수행할 수 있는 권한을 부여하십시오.

    • 계정 A의 bucketA에서 개체를 다운로드(GetObject)하고 업로드(PutObject)합니다.

    • 액세스: AWS KMS 계정 A의 키를 s3KmsInAccountA 입력하세요.

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

    { "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:{region}:accountA:key/s3KmsInAccountA" } ] }
  3. 계정 A의 버킷 bucketA 정책과 키 정책을 구성하여 계정 B의 IAM 역할에 roleB 권한을 부여합니다. s3KmsInAccountA

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

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

    다음 예는 roleB 액세스 권한을 부여하기 위해 계정 A의 KMS s3KmsInAccountA 키에 연결하는 키 정책입니다. 키 정책 설명을 생성하고 첨부하는 방법에 대한 자세한 내용은 의 키 정책 생성을 참조하십시오. AWS KMS 개발자 안내서.

    { "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 아티팩트의 저장 위치로 사용할 수 있습니다.