Conceder permissões para armazenamento do Amazon S3 entre contas - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceder permissões para armazenamento do Amazon S3 entre contas

Ao configurar seu SageMaker domínio ou perfil de usuário para que os usuários acessem o SageMaker Canvas, você especifica um local de armazenamento do Amazon S3 para artefatos do Canvas. Esses artefatos incluem cópias salvas de seus conjuntos de dados de entrada, artefatos de modelo, previsões e outros dados da aplicação. Você pode usar o bucket Amazon S3 padrão SageMaker criado ou personalizar o local de armazenamento e especificar seu próprio bucket para armazenar dados do aplicativo Canvas.

Você pode especificar um bucket do Amazon S3 em outra AWS conta para armazenar seus dados do Canvas, mas primeiro você deve conceder permissões entre contas para que o Canvas possa acessar o bucket.

As seções a seguir descrevem como conceder permissões ao Canvas para carregar e baixar objetos de e para um bucket do Amazon S3 em outra conta. Há permissões adicionais para quando seu bucket é criptografado com AWS KMS.

Requisitos

Antes de começar, reveja os seguintes requisitos:

  • Os buckets do Amazon S3 entre contas (e quaisquer chaves AWS KMS associadas) devem estar na AWS mesma região do domínio de usuário ou perfil de usuário do Canvas.

  • O Amazon S3 final URI para a pasta de treinamento em seu local de armazenamento do Canvas deve ter 128 caracteres ou menos. O S3 final URI consiste no caminho do seu bucket s3://<your-bucket-name>/<folder-name>/ mais o caminho que o Canvas adiciona ao seu bucket:Canvas/<user-profile-name>/Training. Por exemplo, um caminho aceitável com menos de 128 caracteres é s3://<amzn-s3-demo-bucket>/<machine-learning>/Canvas/<user-1>/Training.

Permissões para buckets do Amazon S3 entre contas

A seção a seguir descreve as etapas básicas para conceder as permissões necessárias para que o Canvas possa acessar seu bucket do Amazon S3 em outra conta. Para obter instruções mais detalhadas, consulte o Exemplo 2: Concessão de permissões de bucket entre contas no Guia do usuário do Amazon S3.

  1. Crie um bucket do Amazon S3, bucketA, na Conta A.

  2. O usuário do Canvas existe em outra conta chamada Conta B. Nas etapas a seguir, nos referimos à IAM função do usuário do Canvas como roleB na Conta B.

    Dê permissão à IAM função roleB na Conta B para baixar (GetObject) e carregar (PutObject) objetos de bucketA e para a Conta A anexando uma IAM política.

    Para limitar o acesso a uma pasta de bucket específica, defina o nome da pasta no elemento de recurso, como arn:aws:s3:::<bucketA>/FolderName/*. Para obter mais informações, consulte Como posso usar IAM políticas para conceder acesso específico ao usuário a pastas específicas?

    nota

    Ações no nível do bucket, como GetBucketCors e GetBucketLocation, devem ser adicionadas aos recursos no nível do bucket, não às pastas.

    O exemplo de IAM política a seguir concede as permissões necessárias roleB para acessar objetos embucketA:

    { "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. Configure a política de bucket bucketA na Conta A para conceder permissões à IAM função roleB na Conta B.

    nota

    Os administradores também devem desativar o Bloqueio de todo o acesso público na seção Permissões do bucket.

    Veja a seguir um exemplo de política de bucket para bucketA conceder as permissões necessárias para roleB:

    { "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" } ] }

Após configurar as permissões anteriores, seu perfil de usuário do Canvas na Conta B agora pode usar o bucket do Amazon S3 na Conta A como local de armazenamento para artefatos do Canvas.

Permissões para buckets Amazon S3 de várias contas criptografados com AWS KMS

O procedimento a seguir mostra como conceder as permissões necessárias para que o Canvas possa acessar seu bucket do Amazon S3 em outra conta criptografada com. AWS KMS As etapas são semelhantes ao procedimento acima, mas com permissões adicionais. Para obter mais informações sobre como conceder acesso à KMS chave entre contas, consulte Permitir que usuários de outras contas usem uma KMS chave no Guia do AWS KMS desenvolvedor.

  1. Crie um bucket do Amazon S3 e uma bucketA chave do Amazon KMS S3 na Conta A. s3KmsInAccountA

  2. O usuário do Canvas existe em outra conta chamada Conta B. Nas etapas a seguir, nos referimos à IAM função do usuário do Canvas como roleB na Conta B.

    Dê permissão à IAM função roleB na Conta B para fazer o seguinte:

    • Fazer download (GetObject) e upload (PutObject) de objetos do bucketA na Conta A.

    • Acesse a AWS KMS chave s3KmsInAccountA na Conta A.

    O exemplo IAM de política a seguir concede as permissões necessárias roleB para acessar objetos bucketA e usar a KMS chaves3KmsInAccountA:

    { "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. Configure a política de bucket bucketA e a política de chaves s3KmsInAccountA na Conta A para conceder permissões à IAM função roleB na Conta B.

    Veja a seguir um exemplo de política de bucket para bucketA conceder as permissões necessárias para roleB:

    { "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" } ] }

    O exemplo a seguir é uma política de chaves que você anexa à KMS chave s3KmsInAccountA na Conta A para conceder roleB acesso. Para obter mais informações sobre como criar e anexar uma declaração de política de chave, consulte Criar uma política de chave no Guia do desenvolvedor do 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": "*" }

Depois de configurar as permissões anteriores, seu perfil de usuário do Canvas na Conta B agora pode usar o bucket criptografado do Amazon S3 na Conta A como local de armazenamento para artefatos do Canvas.