Exemple 4 : propriétaire d’un compartiment accordant des autorisations intercomptes à des objets qu’il ne possède pas - Amazon Simple Storage Service

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.

Exemple 4 : propriétaire d’un compartiment accordant des autorisations intercomptes à des objets qu’il ne possède pas

Dans cet exemple de scénario, vous êtes propriétaire d'un bucket et vous avez autorisé d'autres utilisateurs Comptes AWS à télécharger des objets. Si vous avez appliqué le paramètre appliqué par le propriétaire du compartiment pour la propriété de l’objet S3 pour le compartiment, vous posséderez tous les objets du compartiment, y compris les objets écrits par un autre Compte AWS. Cette approche résoudra le problème selon lequel les objets n’appartiennent pas au propriétaire du compartiment, à savoir vous-même. Vous pouvez ensuite déléguer des autorisations à des utilisateurs de votre propre compte ou à d'autres Comptes AWS. Supposons que le paramètre appliqué par le propriétaire du compartiment pour la propriété de l’objet S3 ne soit pas activé. C’est pourquoi le compartiment peut avoir des objets détenus par d’autres Comptes AWS .

A présent, admettons qu’en tant que propriétaire du compartiment, vous devez accorder des autorisations entre comptes sur des objets, quel que soit le propriétaire, à un utilisateur d’un autre compte. Par exemple, cet utilisateur peut être une application de facturation qui a besoin d’accéder aux métadonnées d’objet. Deux problèmes majeurs se posent :

  • Le propriétaire du compartiment n'a aucune autorisation sur ces objets créés par d'autres Comptes AWS. Pour que le propriétaire du compartiment accorde les autorisations sur des objets qu’il ne possède pas, le propriétaire des objets concernés doit tout d’abord accorder l’autorisation requise au propriétaire du compartiment. Le propriétaire des objets correspond au Compte AWS qui a créé ces objets. Le propriétaire du compartiment peut alors déléguer ces autorisations.

  • Le compte du propriétaire du compartiment peut déléguer des autorisations aux utilisateurs associés à son propre compte (voir Exemple 3 : propriétaire d’un compartiment accordant des autorisations sur des objets qu’il ne possède pas). Toutefois, le compte du propriétaire du compartiment ne peut pas déléguer d'autorisations à d'autres personnes, Comptes AWS car la délégation entre comptes n'est pas prise en charge.

Dans ce scénario, le propriétaire du compartiment peut créer un rôle AWS Identity and Access Management (IAM) autorisé à accéder aux objets. Ensuite, le propriétaire du compartiment peut accorder une autre Compte AWS autorisation pour assumer le rôle, lui permettant ainsi temporairement d'accéder aux objets du compartiment.

Note

La propriété des objets S3 est un paramètre au niveau du compartiment Amazon S3 que vous pouvez utiliser à la fois pour contrôler la propriété des objets chargés dans votre compartiment et pour les désactiver ou les activer. ACLs Par défaut, Object Ownership est défini sur le paramètre imposé par le propriétaire du bucket, et tous ACLs sont désactivés. Lorsqu'ils ACLs sont désactivés, le propriétaire du compartiment possède tous les objets du compartiment et gère l'accès à ceux-ci exclusivement à l'aide de politiques de gestion des accès.

La majorité des cas d'utilisation modernes d'Amazon S3 ne nécessitent plus l'utilisation de ACLs. Nous vous recommandons de rester ACLs désactivé, sauf dans des circonstances exceptionnelles où vous devez contrôler l'accès à chaque objet individuellement. Lorsque cette ACLs option est désactivée, vous pouvez utiliser des politiques pour contrôler l'accès à tous les objets de votre compartiment, quelle que soit la personne qui les a chargés dans votre compartiment. Pour de plus amples informations, veuillez consulter Contrôle de la propriété des objets et désactivation ACLs pour votre compartiment.

Fonctionnement des autorisations intercomptes et utilisation des rôles IAM

Les rôles IAM permettent à plusieurs scénarios de déléguer l’accès aux ressources, et l’accès intercompte est l’un des scénarios clés. Dans cet exemple, le propriétaire du compartiment, le compte A, utilise un rôle IAM pour déléguer temporairement l'accès aux objets entre comptes aux utilisateurs d'un autre Compte AWS, le compte C. Chaque rôle IAM que vous créez est associé aux deux politiques suivantes :

  • Une politique de confiance identifiant une autre Compte AWS personne qui peut assumer le rôle.

  • Une stratégie d’accès qui définit les autorisations : par exemple, s3:GetObject, accordées lorsqu’une personne assume le rôle. Pour obtenir une liste d’autorisations que vous pouvez spécifier dans une stratégie, consultez Actions de politique pour Amazon S3.

La Compte AWS personne identifiée dans la politique de confiance accorde ensuite à son utilisateur l'autorisation d'assumer le rôle. L’utilisateur peut ensuite procéder comme suit pour accéder aux objets :

  • Assumez le rôle et, en réponse, obtenir des autorisations de sécurité temporaires.

  • Accédez aux objets dans le compartiment grâce aux autorisations de sécurité temporaires.

Pour plus d’informations sur les rôles IAM, consultez Rôles IAM dans le Guide de l’utilisateur IAM.

Les étapes suivantes résument la procédure à suivre :

Autorisations intercomptes à l’aide des rôles IAM.
  1. L’utilisateur administrateur du Compte A attache une politique de compartiment en accordant au Compte B l’autorisation conditionnelle de charger des objets.

  2. L’administrateur du Compte A crée un rôle IAM, en instaurant la confiance avec le Compte C, afin que les utilisateurs de ce compte puissent accéder au Compte A. La stratégie d’accès attachée au rôle limite les actions de l’utilisateur du Compte C lorsque ce dernier accède au Compte A.

  3. L’administrateur du compte B charge un objet dans le compartiment détenu par le Compte A, en accordant l’autorisation de contrôle total au propriétaire du compartiment.

  4. L’administrateur du Compte C crée un utilisateur et attache une stratégie d’utilisateur qui permet à l’utilisateur d’assumer le rôle.

  5. L’utilisateur du Compte C assume tout d’abord le rôle, qui lui renvoie les autorisations de sécurité temporaires. Grâce à ces autorisations, l’utilisateur accède ensuite aux objets du compartiment.

Pour cet exemple, vous avez besoin de trois comptes. Le tableau ci-dessous montre comment nous faisons référence à ces comptes et aux utilisateurs administrateurs dans ces comptes. Conformément aux directives IAM (voir Utilisation d’un utilisateur administrateur pour créer des ressources et accorder des autorisations), nous n’utilisons pas les informations d’identification Utilisateur racine d'un compte AWS dans cette procédure détaillée. A la place, vous créez un utilisateur administrateur dans chaque compte et utilisez ces autorisations pour créer des ressources et leur accorder des autorisations.

Compte AWS ID Compte désigné comme Utilisateur administrateur du compte

1111-1111-1111

Compte A

AccountAadmin

2222-2222-2222

Compte B

AccountBadmin

3333-3333-3333

Compte C

AccountCadmin

Étape 0 : vous préparer à suivre la procédure

Note

Vous pouvez ouvrir un éditeur de texte et écrire certaines informations à mesure que vous parcourez les étapes. En particulier, vous aurez besoin d'un compte IDs, d'un utilisateur canonique IDs, d'une connexion utilisateur IAM URLs pour chaque compte pour vous connecter à la console, ainsi que des noms de ressources Amazon (ARNs) des utilisateurs IAM et des rôles.

  1. Assurez-vous que vous en avez trois Comptes AWS et que chaque compte possède un utilisateur administrateur, comme indiqué dans le tableau de la section précédente.

    1. Inscrivez-vous Comptes AWS, au besoin. Nous appelons ces comptes : Compte A, Compte B et Compte C.

    2. Utilisez les informations d’identification du compte A pour vous connecter à la console IAM et procédez comme suit pour créer un utilisateur administrateur :

      • Créez l’utilisateur AccountAadmin et notez ses informations d’identification. Pour plus d’informations sur l’ajout d’utilisateurs, consultez Création d’un utilisateur IAM dans votre Compte AWS dans le Guide de l’utilisateur IAM.

      • Accordez des privilèges d'administrateur à AccountAadminen joignant une politique utilisateur donnant un accès complet. Pour obtenir des instructions, consultez Gestion des politiques IAM dans le Guide de l’utilisateur IAM.

      • Dans le tableau de bord de la console IAM, notez l’URL de connexion d’utilisateur IAM. Les utilisateurs figurant dans ce compte doivent utiliser cette URL pour se connecter à la AWS Management Console. Pour plus d'informations, voir Se connecter en AWS Management Console tant qu'utilisateur IAM dans le guide de l'utilisateur IAM.

    3. Répétez l’étape précédente pour créer les utilisateurs administrateur dans le Compte B et le Compte C.

  2. Pour le compte C, notez l’ID d’utilisateur canonique.

    Lorsque vous créez un rôle IAM dans le Compte A, la stratégie d’approbation accorde au Compte C l’autorisation d’assumer le rôle en spécifiant l’ID de compte. Vous pouvez trouver les informations de compte comme suit :

    1. Utilisez votre Compte AWS identifiant ou alias de compte, votre nom d'utilisateur IAM et votre mot de passe pour vous connecter à la console Amazon S3.

    2. Choisissez le nom d’un compartiment Amazon S3 pour afficher les détails concernant ce compartiment.

    3. Sélectionnez l’onglet Permissions (Autorisations), puis Access Control List (Liste de contrôle d’accès).

    4. Dans la section Accès à votre Compte AWS, dans la colonne Account (Compte) figure un identifiant long tel que c1daexampleaaf850ea79cf0430f33d72579fd1611c97f7ded193374c0b163b6. Ceci est votre ID d’utilisateur canonique.

  3. Lorsque vous créez une politique de compartiment, vous avez besoin des informations suivantes. Notez ces valeurs :

    • ID d’utilisateur canonique du Compte A – Lorsque l’administrateur du Compte A accorde une autorisation conditionnelle de téléchargement d’objet à l’administrateur du Compte B, la condition spécifie l’ID d’utilisateur canonique de l’utilisateur du Compte A qui doit obtenir le contrôle total des objets.

      Note

      Le concept d’ID d’utilisateur canonique est propre à Amazon S3. Il s’agit d’une version cryptée de 64 caractères de l’ID de compte.

    • ARN de l’utilisateur pour l’administrateur du compte B : vous trouverez l’ARN de l’utilisateur dans la console IAM. Pour ce faire, sélectionnez l’utilisateur et trouvez son ARN dans l’onglet Récapitulatif.

      Dans la politique de compartiment, vous accordez à AccountBadmin l’autorisation de charger des objets et vous spécifiez l’utilisateur grâce à l’ARN. Voici un exemple de valeur ARN :

      arn:aws:iam::AccountB-ID:user/AccountBadmin
  4. Configurez le AWS Command Line Interface (CLI) ou le AWS Tools for Windows PowerShell. Assurez-vous d’enregistrer les autorisations de l’utilisateur administrateur comme suit :

    • Si vous utilisez le AWS CLI, créez des profilsAccountBadmin, AccountAadmin et dans le fichier de configuration.

    • Si vous utilisez le AWS Tools for Windows PowerShell, assurez-vous de stocker les informations d'identification de la session sous forme AccountAadmin etAccountBadmin.

    Pour obtenir des instructions, veuillez consulter Configuration des outils pour les procédures détaillées.

Étape 1 : réaliser les tâches du compte A

Dans cet exemple, le Compte A est le propriétaire du compartiment. L'utilisateur AccountAadmin du compte A effectuera donc ce qui suit :

  • Créez un compartiment.

  • Attachez la politique de compartiment suivante en accordant à l’administrateur du compte B l’autorisation conditionnelle de charger des objets.

  • Créez un rôle IAM en accordant l’autorisation au Compte C d’endosser ce rôle afin qu’il puisse accéder aux objets du compartiment.

Étape 1.1 : Connectez-vous au AWS Management Console

À l'aide de l'URL de connexion de l'utilisateur IAM pour le compte A, connectez-vous d'abord au compte en AWS Management Console tant qu'AccountAadminutilisateur. Cet utilisateur créera un compartiment et y attachera une stratégie.

Étape 1.2 : créer un compartiment et attacher une politique de compartiment

Dans la console Amazon S3, procédez comme suit :

  1. Créez un compartiment. Cet exercice assume que le nom du compartiment est amzn-s3-demo-bucket1.

    Pour obtenir des instructions, veuillez consulter Créer un compartiment.

  2. Attachez la politique de compartiment suivante. Cette politique accorde à l’administrateur du compte B l’autorisation conditionnelle de charger des objets.

    Mettez à jour la politique en fournissant vos propres valeurs pour amzn-s3-demo-bucket1, AccountB-ID et CanonicalUserId-of-AWSaccountA-BucketOwner.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "111", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" }, { "Sid": "112", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::AccountB-ID:user/AccountBadmin" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "StringNotEquals": { "s3:x-amz-grant-full-control": "id=CanonicalUserId-of-AWSaccountA-BucketOwner" } } } ] }

Étape 1.3 : créer un rôle IAM pour accorder au compte C un accès intercompte au compte A

Dans la console IAM, créez un rôle IAM (examplerole) qui accorde l’autorisation au Compte C d’endosser ce rôle. Veillez à être toujours connecté comme administrateur du compte A, car le rôle doit être créé dans ce compte.

  1. Avant de créer le rôle, préparez la politique gérée qui définit les autorisations qu’exige le rôle. Vous attachez cette politique au rôle dans une étape ultérieure.

    1. Dans le volet de navigation de gauche, sélectionnez Politiques, puis Créer une politique.

    2. En regard de Create Your Own Policy (Créez votre politique), choisissez Select (Sélectionner).

    3. Saisissez access-accountA-bucket dans le champ Policy Name.

    4. Copiez la stratégie d’accès suivante et collez-la dans le champ Policy Document. La stratégie d’accès accorde l’autorisation s3:GetObject au rôle. Des lors, quand l’utilisateur du Compte C assumera ce rôle, il pourra uniquement exécuter l’opération s3:GetObject.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*" } ] }
    5. Choisissez Create Policy (Créer une politique).

      La nouvelle politique apparaît dans la liste des politiques gérées.

  2. Dans le volet de navigation de gauche, sélectionnez Rôles, puis Créer un rôle.

  3. Sous Sélectionner le type de rôle, sélectionnez Rôle pour l'accès entre comptes, puis cliquez sur le bouton Sélectionner à côté de Fournir un accès entre les Comptes AWS vôtres.

  4. Saisissez l’ID de compte du Compte C.

    Pour cette procédure détaillée, vous n’avez pas besoin d’exiger des utilisateurs qu’ils aient l’authentification multifactorielle (MFA) pour endosser le rôle. Ne cochez donc pas cette option.

  5. Cliquez sur Étape suivante pour configurer les autorisations associées au rôle.

  6. Cochez la case située à côté de la politique access-accountA-bucket que vous avez créée, puis choisissez Étape suivante.

    La page de révision apparaît pour que vous confirmiez les paramètres pour le rôle avant qu’il ne soit créé. Sur cette page, il est très important que vous notiez le lien que vous pouvez envoyer aux utilisateurs qui ont besoin d’utiliser ce rôle. Les utilisateurs qui cliquent sur le lien accèdent directement à la page Changer de rôle dont les champs ID de compte et Nom du rôle sont déjà remplis. Vous pourrez également consulter ce lien ultérieurement sur la page Résumé du rôle pour n’importe quel rôle intercompte.

  7. Saisissez le nom de rôle examplerole, puis choisissez Étape suivante.

  8. Après avoir procédé à la vérification du rôle, sélectionnez Créer un rôle.

    Le rôle examplerole est affiché dans la liste des rôles.

  9. Sélectionnez le nom de rôle examplerole.

  10. Sélectionnez l’onglet Trust Relationships.

  11. Cliquez sur Afficher le document de stratégie et vérifiez que la politique d’approbation affichée correspond à la politique suivante.

    La stratégie d’approbation suivante instaure la confiance avec le Compte C, en lui permettant d’exécuter l’action sts:AssumeRole. Pour de plus amples informations, consultez .AssumeRole dans la Référence d'API AWS Security Token Service

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountC-ID:root" }, "Action": "sts:AssumeRole" } ] }
  12. Notez l’Amazon Resource Name (ARN) du rôle examplerole que vous avez créé.

    Dans les étapes suivantes, vous attachez une stratégie d’utilisateur pour permettre un utilisateur IAM d’assumer ce rôle et vous identifiez le rôle par la valeur ARN.

Étape 2 : réaliser les tâches du compte B

L’exemple de compartiment détenu par le compte A a besoin d’objets détenus par d’autres comptes. Dans cette étape, l’administrateur du Compte B charge un objet grâce aux outils de ligne de commande.

  • À l'aide de la put-object AWS CLI commande, chargez un objet versamzn-s3-demo-bucket1.

    aws s3api put-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --body HappyFace.jpg --grant-full-control id="canonicalUserId-ofTheBucketOwner" --profile AccountBadmin

    Remarques :

    • Le paramètre --Profile spécifie le profil AccountBadmin, afin que l’objet soit détenu par le compte B.

    • Le paramètre grant-full-control accorde au propriétaire du compartiment l’autorisation de contrôle total sur l’objet comme l’exige la politique de compartiment.

    • Le paramètre --body identifie le fichier source à charger. Par exemple, si le fichier se trouve sur le lecteur C : d'un Windows ordinateur, à vous de spécifierc:\HappyFace.jpg.

Étape 3 : réaliser les tâches du compte C

Dans les étapes précédentes, le Compte A a déjà créé un rôle, examplerole, instaurant la confiance avec le Compte C. Cela permet aux utilisateurs du Compte C d’accéder au Compte A. Dans cette étape, l’administrateur du Compte C crée un utilisateur (Dave) et lui délègue l’autorisation sts:AssumeRole reçue par le Compte A. Cela permet à Dave d’endosser le rôle examplerole et d’accéder temporairement au Compte A. La stratégie d’accès que le Compte A a associée au rôle limite les actions de Dave lorsqu’il accède au Compte A, notamment l’obtention d’objets dans amzn-s3-demo-bucket1.

Étape 3.1 : créer un utilisateur dans le compte C et déléguer l'autorisation d'assumer examplerole

  1. À l'aide de l'URL de connexion utilisateur IAM pour le compte C, connectez-vous d'abord au compte en AWS Management Console tant qu'AccountCadminutilisateur.

  2. Dans la console IAM, créez un utilisateur, Dave.

    Pour step-by-step obtenir des instructions, consultez la section Création d'utilisateurs IAM (AWS Management Console) dans le guide de l'utilisateur IAM.

  3. Notez les informations d’identification de Dave. Dave a besoin de ces informations d’identification pour assumer le rôle examplerole.

  4. Créez une politique intégrée pour l’utilisateur IAM Dave, afin de lui déléguer l’autorisation sts:AssumeRole au niveau du rôle examplerole dans le Compte A.

    1. Dans le volet de navigation de gauche, choisissez Utilisateurs.

    2. Choisissez le nom d’utilisateur Dave.

    3. Dans la page des détails de l’utilisateur, sélectionnez l’onglet Autorisations et développez la section Politiques en ligne.

    4. Choisissez click here (ou Create User Policy).

    5. Choisissez Custom Policy, puis Select.

    6. Saisissez un nom pour la stratégie dans le champ Policy Name.

    7. Copiez la stratégie suivante dans le champ Policy Document.

      Pour mettre à jour la politique, fournissez l’AccountA-ID.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": "arn:aws:iam::AccountA-ID:role/examplerole" } ] }
    8. Choisissez Apply Policy (Appliquer la stratégie).

  5. Enregistrez les informations d'identification de Dave dans le fichier de configuration du AWS CLI en ajoutant un autre profil,AccountCDave.

    [profile AccountCDave] aws_access_key_id = UserDaveAccessKeyID aws_secret_access_key = UserDaveSecretAccessKey region = us-west-2

Étape 3.2 : Assumer le rôle (examplerole) et accédez aux objets

A présent, Dave peut accéder aux objets du compartiment détenu par le Compte A comme suit :

  • Dave assume tout d’abord le rôle examplerole grâce à ses propres informations d’identification. Cela renvoie des autorisations temporaires.

  • Grâce aux autorisations, Dave accède ensuite aux objets du compartiment du Compte A.

  1. À l'invite de commande, exécutez la AWS CLI assume-role commande suivante à l'aide du AccountCDave profil.

    Vous devez mettre à jour la valeur ARN dans la commande en fournissant l’AccountA-ID dans lequel le rôle examplerole est défini.

    aws sts assume-role --role-arn arn:aws:iam::AccountA-ID:role/examplerole --profile AccountCDave --role-session-name test

    En réponse, AWS Security Token Service (AWS STS) renvoie des informations de sécurité temporaires (ID de clé d'accès, clé d'accès secrète et jeton de session).

  2. Enregistrez les informations de sécurité temporaires dans le fichier de AWS CLI configuration situé sous le TempCred profil.

    [profile TempCred] aws_access_key_id = temp-access-key-ID aws_secret_access_key = temp-secret-access-key aws_session_token = session-token region = us-west-2
  3. À l'invite de commande, exécutez la AWS CLI commande suivante pour accéder aux objets à l'aide des informations d'identification temporaires. Par exemple, la commande spécifie l’API d’objet HEAD pour récupérer les métadonnées d’objet pour l’objet HappyFace.jpg.

    aws s3api get-object --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg SaveFileAs.jpg --profile TempCred

    Etant donné que la stratégie d’accès attachée au rôle examplerole autorise les actions, Amazon S3 traite la demande. Vous pouvez essayer n’importe quelle autre action sur n’importe quel objet du compartiment.

    Si vous essayez une autre action (par exemple, get-object-acl), l’autorisation est refusée, car le rôle ne permet pas cette action.

    aws s3api get-object-acl --bucket amzn-s3-demo-bucket1 --key HappyFace.jpg --profile TempCred

    Nous avons utilisé Dave pour assumer le rôle et accéder à l’objet grâce à des autorisations temporaires. Il peut s’agir également d’une application dans le Compte C qui accède aux objets dans le compartiment amzn-s3-demo-bucket1. L’application peut obtenir des informations d’identification de sécurité temporaires, et le Compte C peut déléguer l’autorisation d’application pour assumer le rôle examplerole.

Étape 4 : nettoyer

  1. Une fois le test terminé, vous pouvez procéder comme suit pour le nettoyage :

    1. Connectez-vous à la AWS Management Console en utilisant les informations d’identification du compte A, et procédez comme suit :

      • Dans la console Amazon S3, supprimez la politique de compartiment attachée à amzn-s3-demo-bucket1. Dans la page Properties du compartiment, supprimez la stratégie dans la section Permissions.

      • Si le compartiment a été créé pour cet exercice, supprimez les objets, puis le compartiment, dans la console Amazon S3.

      • Dans la console IAM, supprimez le examplerole que vous avez créé dans le compte A. Pour step-by-step obtenir des instructions, reportez-vous à la section Suppression d'un utilisateur IAM dans le guide de l'utilisateur IAM.

      • Dans la console IAM, supprimez l’utilisateur AccountAadmin.

  2. Connectez-vous à la console IAM en utilisant les informations d’identification du compte B. Supprimez l'utilisateur AccountBadmin.

  3. Connectez-vous à la console IAM en utilisant les informations d’identification du compte C. Supprimer AccountCadminet l'utilisateur Dave.

Ressources connexes

Pour plus d’informations relatives à cette procédure détaillée, consultez les ressources suivantes dans le Guide de l’utilisateur IAM :