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

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

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

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

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

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

요구 사항

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

  • 교차 계정 Amazon S3 버킷(및 연결된 AWS KMS 키)은 Canvas 사용자 도메인 또는 사용자 프로필과 동일한 AWS 리전에 있어야 합니다.

  • Canvas 스토리지 위치의 훈련 폴더에 URI 대한 최종 Amazon S3는 128자 이하여야 합니다. 최종 S3는 버킷 경로s3://<your-bucket-name>/<folder-name>/와 Canvas가 버킷에 추가하는 경로로 URI 구성됩니다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라는 다른 계정에 있습니다. 다음 단계에서는 계정 B에서와 같이 Canvas 사용자의 IAM 역할을 참조roleB합니다.

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

    특정 버킷 폴더에 대한 액세스를 제한하려면 리소스 요소에 폴더 이름(예: 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의 bucketA에 대한 버킷 정책을 구성하여 roleB 계정 B의 IAM 역할에 권한을 부여합니다.

    참고

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

    다음은 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 키 액세스 권한 부여에 대한 자세한 내용은 AWS KMS 개발자 안내서다른 계정의 사용자에게 KMS 키 사용 허용을 참조하세요.

  1. 계정 As3KmsInAccountA에서 Amazon S3 버킷bucketA, 및 Amazon S3 KMS 키를 생성합니다.

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

    roleB 계정 B의 IAM 역할에 다음을 수행할 수 있는 권한을 부여합니다.

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

    • 계정 A의 AWS KMS 키s3KmsInAccountA에 액세스합니다.

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

    { "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. 계정 B의 IAM 역할에 권한을 부여하려면 계정 As3KmsInAccountA의 에 대한 버킷 정책 bucketAroleB에 대한 키 정책을 구성합니다.

    다음은 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의 키s3KmsInAccountA에 연결하는 KMS 키 정책입니다. 키 정책 설명을 만들고 연결하는 방법에 대한 자세한 내용은 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 아티팩트의 스토리지 위치로 사용할 수 있습니다.