Octroi d'autorisations pour le stockage Amazon S3 entre comptes - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Octroi d'autorisations pour le stockage Amazon S3 entre comptes

Lorsque vous configurez votre domaine SageMaker AI ou votre profil utilisateur pour que les utilisateurs puissent accéder à SageMaker Canvas, vous spécifiez un emplacement de stockage Amazon S3 pour les artefacts Canvas. Ces artefacts incluent des copies enregistrées de vos jeux de données en entrée, des artefacts de modèle, des prédictions et d'autres données d'application. Vous pouvez soit utiliser le compartiment Amazon S3 créé par défaut par l' SageMaker IA, soit personnaliser l'emplacement de stockage et spécifier votre propre compartiment pour stocker les données de l'application Canvas.

Vous pouvez spécifier un compartiment Amazon S3 dans un autre AWS compte pour stocker vos données Canvas, mais vous devez d'abord accorder des autorisations entre comptes afin que Canvas puisse accéder au compartiment.

Les sections suivantes expliquent comment accorder des autorisations à Canvas pour le chargement et le téléchargement d'objets vers et à partir d'un compartiment Amazon S3 dans un autre compte. Il existe des autorisations supplémentaires lorsque votre bucket est crypté avec AWS KMS.

Prérequis

Avant de commencer, passez en revue les conditions requises suivantes :

  • Les compartiments Amazon S3 multicomptes (et toutes AWS KMS les clés associées) doivent se trouver dans la même AWS région que le domaine ou le profil utilisateur Canvas.

  • L'URI Amazon S3 final du dossier d'entraînement dans votre emplacement de stockage Canvas doit comporter 128 caractères ou moins. L'URI S3 final se compose du chemin de votre compartiment (s3://<your-bucket-name>/<folder-name>/) et du chemin que Canvas ajoute à votre compartiment (Canvas/<user-profile-name>/Training). Voici par exemple un chemin acceptable de moins de 128 caractères : s3://<amzn-s3-demo-bucket>/<machine-learning>/Canvas/<user-1>/Training.

Autorisations pour les compartiments Amazon S3 entre comptes

La section suivante décrit les étapes de base permettant d'accorder les autorisations nécessaires afin que Canvas puisse accéder à votre compartiment Amazon S3 dans un autre compte. Pour des instructions plus détaillées, consultez l'Exemple 2 : propriétaire d'un compartiment accordant à ses utilisateurs des autorisations entre comptes sur un compartiment dans le Guide de l'utilisateur Amazon S3.

  1. Créez un compartiment Amazon S3 (bucketA) dans le Compte A.

  2. L'utilisateur Canvas existe dans un autre compte appelé Compte B. Au cours des étapes suivantes, nous appellerons le rôle IAM de l'utilisateur Canvas roleB dans le Compte B.

    Accordez au rôle IAM roleB dans le Compte B l'autorisation de télécharger (GetObject) et de charger (PutObject) des objets dans et à partir de bucketA dans le Compte A en attachant une politique IAM.

    Pour limiter l'accès à un dossier de compartiment spécifique, définissez le nom du dossier dans l'élément de ressource ; par exemple, arn:aws:s3:::<bucketA>/FolderName/*. Pour plus d'informations, consultez Comment utiliser des politiques IAM pour accorder un accès utilisateur à certains dossiers ? (langue française non garantie).

    Note

    Les actions au niveau du compartiment, telles que GetBucketCors et GetBucketLocation, doivent être ajoutées aux ressources au niveau du compartiment, et non aux dossiers.

    L'exemple de politique IAM suivant accorde les autorisations requises permettant à roleB d'accéder aux objets de 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. Configurez la politique de compartiment de bucketA dans le Compte A afin d'accorder des autorisations au rôle IAM roleB dans le Compte B.

    Note

    Les administrateurs doivent également désactiver l'option Bloquer tous les accès publics dans la section Autorisations du compartiment.

    Voici un exemple de politique de compartiment permettant à bucketA d'accorder les autorisations nécessaires à 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" } ] }

Après avoir configuré les autorisations précédentes, votre profil utilisateur Canvas dans le Compte B peut désormais utiliser le compartiment Amazon S3 dans le Compte A comme emplacement de stockage pour les artefacts Canvas.

Autorisations pour les compartiments Amazon S3 multicomptes chiffrés avec AWS KMS

La procédure suivante explique comment accorder les autorisations nécessaires pour que Canvas puisse accéder à votre compartiment Amazon S3 depuis un autre compte crypté avec AWS KMS. Les étapes sont similaires à la procédure ci-dessus, mais avec des autorisations supplémentaires. Pour plus d'informations sur l'octroi d'un accès à une clé KMS entre comptes, consultez Autorisation d'utilisateurs d'autres comptes à utiliser une clé KMS dans le Manuel du développeur AWS KMS (langue française non garantie).

  1. Créez un compartiment Amazon S3 et une clé Amazon S3 KMS s3KmsInAccountA dans le compte A. bucketA

  2. L'utilisateur Canvas existe dans un autre compte appelé Compte B. Au cours des étapes suivantes, nous appellerons le rôle IAM de l'utilisateur Canvas roleB dans le Compte B.

    Accordez au rôle IAM roleB dans le Compte B l'autorisation d'effectuer les opérations suivantes :

    • Télécharger (GetObject) et charger (PutObject) des objets vers et à partir de bucketA dans le Compte A.

    • Accédez à la AWS KMS clé s3KmsInAccountA dans le compte A.

    L'exemple de politique IAM suivant accorde les autorisations requises permettant à roleB d'accéder aux objets dans bucketA et d'utiliser la clé 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. Configurez la politique de compartiment de bucketA et la stratégie de clé de s3KmsInAccountA dans le Compte A afin d'accorder des autorisations au rôle IAM roleB dans le Compte B.

    Voici un exemple de politique de compartiment permettant à bucketA d'accorder les autorisations nécessaires à 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" } ] }

    L'exemple suivant est une stratégie de clé que vous attachez à la clé KMS s3KmsInAccountA dans le Compte A pour accorder l'accès à roleB. Pour plus d'informations sur la création et l'attachement d'une instruction de stratégie de clé, consultez Création d'une stratégie de clé dans le Manuel du développeur 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": "*" }

Après avoir configuré les autorisations précédentes, votre profil utilisateur Canvas dans le compte B peut désormais utiliser le compartiment Amazon S3 chiffré dans le compte A comme emplacement de stockage pour les artefacts Canvas.