Concesión de permisos para el almacenamiento de Amazon S3 entre cuentas - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Concesión de permisos para el almacenamiento de Amazon S3 entre cuentas

Al configurar su SageMaker dominio o perfil de usuario para que los usuarios accedan a SageMaker Canvas, debe especificar una ubicación de almacenamiento de Amazon S3 para los artefactos de Canvas. Estos artefactos incluyen copias guardadas de sus conjuntos de datos de entrada, artefactos de modelo, predicciones y otros datos de aplicaciones. Puede usar el depósito de Amazon S3 SageMaker creado por defecto o puede personalizar la ubicación de almacenamiento y especificar su propio depósito para almacenar los datos de la aplicación Canvas.

Puede especificar un bucket de Amazon S3 en otra AWS cuenta para almacenar sus datos de Canvas, pero primero debe conceder permisos entre cuentas para que Canvas pueda acceder al bucket.

En las siguientes secciones se describe cómo conceder permisos a Canvas para cargar y descargar objetos desde y hacia un bucket de Amazon S3 de otra cuenta. Hay permisos adicionales para cuando su depósito está cifrado con AWS KMS.

Requisitos

Antes de comenzar, revise los siguientes requisitos:

  • Los buckets multicuenta de Amazon S3 (y cualquier AWS KMS clave asociada) deben estar en la misma AWS región que el dominio de usuario o el perfil de usuario de Canvas.

  • El Amazon S3 final URI de la carpeta de formación de su ubicación de almacenamiento de Canvas debe tener 128 caracteres o menos. El último S3 URI consiste en la ruta del depósito s3://<your-bucket-name>/<folder-name>/ más la ruta que Canvas añade al depósito:Canvas/<user-profile-name>/Training. Por ejemplo, una ruta aceptable que tenga menos de 128 caracteres es s3://<amzn-s3-demo-bucket>/<machine-learning>/Canvas/<user-1>/Training.

Permisos para los buckets de Amazon S3 entre cuentas

En la siguiente sección se describen los pasos básicos para conceder los permisos necesarios para que Canvas pueda acceder a su bucket de Amazon S3 desde otra cuenta. Para obtener instrucciones más detalladas, consulte el Ejemplo 2: Propietario del bucket que concede permisos de bucket entre cuentas en la Guía del usuario de Amazon S3.

  1. Cree un bucket de Amazon S3, bucketA, en la cuenta A.

  2. El usuario de Canvas existe en otra cuenta llamada Cuenta B. En los siguientes pasos, nos referimos al IAM rol del usuario de Canvas como roleB en la Cuenta B.

    Conceda al IAM rol roleB de la cuenta B permiso para descargar (GetObject) y cargar (PutObject) objetos desde y hacia bucketA la cuenta A adjuntando una IAM política.

    Para limitar el acceso a la carpeta de un bucket específico, defina el nombre de la carpeta en el elemento del recurso, por ejemplo arn:aws:s3:::<bucketA>/FolderName/*. Para obtener más información, consulta ¿Cómo puedo usar IAM las políticas para conceder acceso específico a un usuario a carpetas específicas?

    nota

    Las acciones en el nivel de bucket, como GetBucketCors y GetBucketLocation, deben agregarse a los recursos de nivel de bucket, no a las carpetas.

    El siguiente ejemplo IAM de política concede los permisos necesarios para acceder roleB a los objetos enbucketA:

    { "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 la política de bucket bucketA en la cuenta A para conceder permisos al IAM rol roleB en la cuenta B.

    nota

    Los administradores también deben desactivar la opción Bloquear todo el acceso público en la sección Permisos del bucket.

    A continuación, se muestra un ejemplo de política de bucket para que bucketA conceda los permisos necesarios a 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" } ] }

Tras configurar los permisos anteriores, su perfil de usuario de Canvas en la cuenta B ahora puede usar el bucket de Amazon S3 de la cuenta A como ubicación de almacenamiento de los artefactos de Canvas.

Permisos para buckets de Amazon S3 multicuenta cifrados con AWS KMS

El siguiente procedimiento le muestra cómo conceder los permisos necesarios para que Canvas pueda acceder a su bucket de Amazon S3 en otra cuenta que esté cifrada con AWS KMS. Los pasos son similares a los del procedimiento anterior, pero con permisos adicionales. Para obtener más información sobre cómo conceder el acceso mediante KMS claves entre cuentas, consulte Permitir que los usuarios de otras cuentas usen una KMS clave en la Guía para AWS KMS desarrolladores.

  1. Cree un bucket de Amazon S3 y una KMS clave de Amazon S3 s3KmsInAccountA en la cuenta A. bucketA

  2. El usuario de Canvas existe en otra cuenta llamada Cuenta B. En los siguientes pasos, nos referimos al IAM rol del usuario de Canvas como roleB en la Cuenta B.

    Conceda permiso al IAM rol roleB de la cuenta B para hacer lo siguiente:

    • Descargar (GetObject) y cargar (PutObject) objetos desde y hacia bucketA en la Cuenta A.

    • Accede a la AWS KMS clave s3KmsInAccountA de la cuenta A.

    El siguiente ejemplo IAM de política otorga los permisos necesarios para acceder roleB a los objetos de la KMS clave bucketA y utilizarlas3KmsInAccountA:

    { "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 la política de bucket bucketA y la política clave de s3KmsInAccountA la cuenta A para conceder permisos al IAM rol roleB en la cuenta B.

    A continuación, se muestra un ejemplo de política de bucket para que bucketA conceda los permisos necesarios a 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" } ] }

    El siguiente ejemplo es una política clave que se adjunta a la KMS clave de s3KmsInAccountA la cuenta A para conceder el roleB acceso. Para obtener más información sobre cómo crear y asociar una declaración de política de claves, consulte Creación de una política de claves en la Guía para desarrolladores de 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": "*" }

Tras configurar los permisos anteriores, su perfil de usuario de Canvas en la cuenta B ahora puede usar el depósito cifrado de Amazon S3 de la cuenta A como ubicación de almacenamiento para los artefactos de Canvas.