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 URI final de Amazon S3 para la carpeta de entrenamiento en su ubicación de almacenamiento de Canvas debe tener 128 caracteres o menos. El URI final de S3 consiste en la ruta de su bucket s3://<your-bucket-name>/<folder-name>/ más la ruta que Canvas agrega a su bucket: Canvas/<user-profile-name>/Training. Por ejemplo, una ruta aceptable que tenga menos de 128 caracteres es s3://<my-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, denominamos el rol de IAM del usuario de Canvas como roleB la Cuenta B.

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

    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, consulte ¿Cómo puedo utilizar las políticas de IAM para conceder acceso específico para 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.

    En el siguiente ejemplo de política de IAM se conceden los permisos necesarios para que roleB acceda a los objetos en 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. Configure la política de bucket para bucketA en la cuenta A para conceder permisos al rol de IAM 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 acerca de cómo proporcionar acceso a una clave KMS entre cuentas, consulte Permitir a los usuarios de otras cuentas utilizar una clave KMS en la Guía para desarrolladores de AWS KMS .

  1. Cree un bucket de Amazon S3 y una clave KMS 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, denominamos el rol de IAM del usuario de Canvas como roleB la Cuenta B.

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

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

    • Acceda a la AWS KMS clave s3KmsInAccountA en la cuenta A.

    En el siguiente ejemplo de política de IAM se conceden los permisos necesarios para que roleB acceda a los objetos en bucketA y use la clave KMS 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. Configure la política de bucket para bucketA y la política de claves para s3KmsInAccountA en la cuenta A para conceder permisos al rol de IAM 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 de claves que se asocia a la clave KMS s3KmsInAccountA en la Cuenta A para conceder acceso a roleB. 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.