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

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 SageMaker domaine 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 SageMaker créé par défaut, 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 bucket.

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 chiffré avec AWS KMS.

Prérequis

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

  • Compartiments Amazon S3 multicomptes (et tous les compartiments associés) AWS KMS (clés) doivent être identiques AWS Région en tant que domaine ou profil utilisateur Canvas.

  • L'Amazon S3 final URI pour le dossier de formation de votre emplacement de stockage Canvas doit comporter 128 caractères ou moins. Le S3 final URI comprend le chemin de votre bucket s3://<your-bucket-name>/<folder-name>/ plus le chemin que Canvas ajoute à votre bucket :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. Dans les étapes suivantes, nous nous référons au IAM rôle de l'utilisateur Canvas comme roleB dans le compte B.

    Donnez roleB au IAM rôle du compte B l'autorisation de télécharger (GetObject) et de télécharger (PutObject) des objets depuis et vers bucketA le compte A en joignant une IAM politique.

    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, voir Comment utiliser des IAM politiques pour accorder un accès spécifique à un utilisateur à des dossiers spécifiques ?

    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 IAM politique suivant accorde les autorisations requises pour accéder roleB aux objets dans 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 pour bucketA le compte A afin d'accorder des autorisations au IAM rôle 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 vous montre comment accorder les autorisations nécessaires pour que Canvas puisse accéder à votre compartiment Amazon S3 dans 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 par KMS clé entre comptes, voir Autoriser les utilisateurs d'autres comptes à utiliser une KMS clé dans le AWS KMS Guide du développeur.

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

  2. L'utilisateur Canvas existe dans un autre compte appelé compte B. Dans les étapes suivantes, nous nous référons au IAM rôle de l'utilisateur Canvas comme roleB dans le compte B.

    Donnez au IAM rôle 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 au AWS KMS clé s3KmsInAccountA dans le compte A.

    L'exemple de IAM politique suivant accorde les autorisations requises pour accéder roleB aux objets contenus dans la KMS clé bucketA et l'utiliser 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 bucketA et la politique clé pour s3KmsInAccountA le compte A afin d'accorder des autorisations au IAM rôle 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 politique clé que vous associez à la KMS clé s3KmsInAccountA dans le compte A pour accorder roleB l'accès. Pour plus d'informations sur la façon de créer et de joindre une déclaration de politique clé, voir Création d'une politique clé dans le AWS KMS Guide du développeur.

    { "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.