Exemple 4 - Le propriétaire du bucket accorde une autorisation multicompte à 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 - Le propriétaire du bucket accorde une autorisation multicompte à des objets qu'il ne possède pas

Dans cet exemple de scénario, vous possédez un bucket et vous avez activé d'autres Comptes AWS pour télécharger des objets. Si vous avez appliqué le paramètre obligatoire par le propriétaire du compartiment pour la propriété des objets S3 pour le compartiment, vous serez propriétaire de tous les objets du compartiment, y compris les objets écrits par un autre Compte AWS. Cette approche résout le problème selon lequel les objets ne vous appartiennent pas, en tant que propriétaire du compartiment. Ensuite, vous pouvez déléguer l'autorisation aux utilisateurs de votre propre compte ou à d'autres Comptes AWS. Supposons que le paramètre imposé par le propriétaire du compartiment pour la propriété des objets S3 ne soit pas activé. C'est-à-dire que votre compartiment peut contenir des objets qui ne sont pas les mêmes Comptes AWS propre.

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 bucket n'a aucune autorisation sur les objets créés par d'autres Comptes AWS. Pour que le propriétaire du bucket puisse accorder des autorisations sur des objets qui ne lui appartiennent pas, il doit d'abord accorder l'autorisation au propriétaire du bucket. Le propriétaire de l'objet est Compte AWS qui a créé les objets. Le propriétaire du compartiment peut alors déléguer ces autorisations.

  • Le compte propriétaire du bucket peut déléguer des autorisations aux utilisateurs de son propre compte (voirExemple 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 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 AWS Identity and Access Management (IAM) rôle autorisé à accéder aux objets Ensuite, le propriétaire du compartiment peut en accorder un autre Compte AWS autorisation d'assumer le rôle, lui permettant 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 deACLs. 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.

Comprendre les autorisations entre comptes et utiliser les rôles IAM

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

  • Une politique de confiance identifiant une autre Compte AWS 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 politiques pour Amazon S3.

Le Compte AWS identifié 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 IAM les rôles, consultez la section IAMRôles du guide de IAM l'utilisateur.

Voici un résumé des étapes de la procédure pas à pas :

Autorisations entre comptes à l'aide de IAM rôles.
  1. L'utilisateur administrateur du Compte A attache une stratégie de compartiment en accordant au Compte B l'autorisation conditionnelle de charger des objets.

  2. Compte Un administrateur crée un IAM rôle, établissant un lien de confiance avec le compte C, afin que les utilisateurs de ce compte puissent accéder au compte A. La politique d'accès attachée au rôle limite ce que l'utilisateur du compte C peut faire lorsqu'il 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 IAM directives (voirUtilisation d'un utilisateur administrateur pour créer des ressources et accorder des autorisations), nous n'utilisons pas Utilisateur racine d'un compte AWS informations d'identification dans cette procédure pas à pas. 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 : Préparez-vous à suivre la procédure

Note

Vous souhaiterez peut-être ouvrir un éditeur de texte et noter certaines informations au fur et à mesure des étapes. En particulier, vous aurez besoin d'un compteIDs, d'un utilisateur canoniqueIDs, IAM d'une connexion utilisateur URLs pour chaque compte pour vous connecter à la console, ainsi que des noms de ressources Amazon (ARNs) des IAM utilisateurs et des rôles.

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

    1. Inscrivez-vous pour Comptes AWS, selon les besoins. Nous appelons ces comptes : Compte A, Compte B et Compte C.

    2. À l'aide des informations d'identification du compte A, connectez-vous à la IAMconsole et procédez comme suit pour créer un utilisateur administrateur :

      • Créez un utilisateur AccountAadmin et notez ses informations de sécurité. Pour plus d'informations sur l'ajout d'utilisateurs, voir Création d'un IAM utilisateur 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, reportez-vous à la section Gestion des IAM politiques dans le guide de IAM l'utilisateur.

      • Dans le tableau de bord de la IAM console, notez la connexion URL de IAM l'utilisateur. Les utilisateurs de ce compte doivent l'utiliser URL lorsqu'ils se connectent au AWS Management Console. Pour plus d'informations, voir Se connecter au AWS Management Console en tant qu'IAMutilisateur dans le Guide de IAM l'utilisateur.

    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 utilisateur canonique.

    Lorsque vous créez un IAM rôle dans le compte A, la politique de confiance autorise le compte C à assumer le rôle en spécifiant l'identifiant du compte. Vous pouvez trouver les informations de compte comme suit :

    1. Utilisez votre Compte AWS ID ou alias de compte, votre nom IAM d'utilisateur 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 l'accès pour votre Compte AWSsection, dans la colonne Compte se trouve un identifiant long, tel quec1daexampleaaf850ea79cf0430f33d72579fd1611c97f7ded193374c0b163b6. Ceci est votre ID d'utilisateur canonique.

  3. Lorsque vous créez une stratégie 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.

    • Utilisateur ARN pour l'administrateur du compte B : vous pouvez trouver l'utilisateur ARN dans la IAMconsole. Vous devez sélectionner l'utilisateur et rechercher le nom de l'utilisateur ARN dans l'onglet Résumé.

      Dans la politique du compartiment, vous AccountBadmin autorisez le téléchargement d'objets et vous spécifiez l'utilisateur à l'aide duARN. Voici un exemple de ARN valeur :

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

    • Si vous utilisez le AWS CLI, créez des profils AccountAadmin etAccountBadmin, 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, consultez Configuration des outils pour les visites guidées.

Étape 1 : Réalisation des tâches pour le 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.

  • Joignez une politique de compartiment qui accorde à l'administrateur du compte B l'autorisation de télécharger des objets.

  • Créez un IAM rôle qui accorde au compte C l'autorisation d'assumer le 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'identifiant IAM utilisateur URL pour le compte A, connectez-vous d'abord au AWS Management Console en tant qu'AccountAadminutilisateur. Cet utilisateur créera un compartiment et y attachera une stratégie.

Étape 1.2 : créez un compartiment et attachez une stratégie 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, consultez Créer un compartiment.

  2. Joignez la politique de compartiment suivante. La politique accorde une autorisation conditionnelle à l'administrateur du compte B pour télécharger des objets.

    Mettez à jour la politique en fournissant vos propres valeurs pour amzn-s3-demo-bucket1AccountB-ID, et leCanonicalUserId-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éez un IAM rôle pour autoriser l'accès croisé au compte C dans le compte A

Dans la IAMconsole, créez un IAM rôle (examplerole) qui autorise le compte C à assumer le rôle. Assurez-vous que vous êtes toujours connecté en tant qu'administrateur du compte A, car le rôle doit être créé dans le compte A.

  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, choisissez Policies, puis Create Policy.

    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 politique d'accès accorde l's3:GetObjectautorisation de rôle. Ainsi, lorsque l'utilisateur du compte C assume le rôle, il ne peut effectuer que l's3:GetObjectopération.

      { "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, choisissez Rôles, puis choisissez Créer un nouveau 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 Comptes AWS tu possèdes.

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

    Pour cette procédure pas à pas, il n'est pas nécessaire de demander aux utilisateurs de disposer d'une authentification multifactorielle (MFA) pour assumer le rôle. Ne sélectionnez donc pas cette option.

  5. Choisissez Next Step pour définir les autorisations qui seront associées au rôle.

  6. Cochez la case à côté de la politique Access-Accounta-Bucket que vous avez créée, puis choisissez Next Step.

    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 utilisent le lien accèdent directement à la page Changer de rôle avec les champs ID de compte et Nom de rôle déjà remplis. Vous pouvez également consulter ce lien ultérieurement sur la page Récapitulatif des rôles pour tout rôle multicompte.

  7. Entrez examplerole le nom du rôle, puis choisissez Next Step.

  8. Après avoir examiné le rôle, choisissez Create Role.

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

  9. Choisissez le nom du rôleexamplerole.

  10. Sélectionnez l'onglet Trust Relationships.

  11. Choisissez Afficher le document de stratégie et vérifiez que la politique de confiance 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 plus d’informations, consultez .AssumeRole dans le .AWS Security Token Service APIRéférence.

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

    Plus loin dans les étapes suivantes, vous associez une politique utilisateur pour permettre à un IAM utilisateur d'assumer ce rôle, et vous identifiez le rôle par la ARN valeur.

Étape 2 : 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.

  • Utilisation du put-object AWS CLI commande, télé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

    Notez ce qui suit :

    • Le --Profile paramètre spécifie le AccountBadmin profil, de sorte que l'objet appartient au 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 stratégie 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 : Exécuter les tâches du compte C

Au cours des étapes précédentes, le compte A a déjà créé un rôleexamplerole, établissant la confiance avec le compte C. Ce rôle permet aux utilisateurs du compte C d'accéder au compte A. À cette étape, l'administrateur du compte C crée un utilisateur (Dave) et lui délègue l'sts:AssumeRoleautorisation qu'il a reçue du compte A. Cette approche permet à Dave d'assumer le compte examplerole et d'y accéder temporairement. La politique d'accès que le compte A a attachée au rôle limite ce que Dave peut faire lorsqu'il accède au compte A, en particulier, accéder à des objets. 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 la connexion IAM utilisateur URL pour le compte C, connectez-vous d'abord au AWS Management Console en tant qu'AccountCadminutilisateur.

  2. Dans la IAMconsole, créez un utilisateur, Dave.

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

  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 permettant à l'IAMutilisateur de Dave de déléguer l'sts:AssumeRoleautorisation à Dave sur le examplerole rôle dans le compte A.

    1. Dans le panneau de navigation de gauche, sélectionnez Users (Utilisateurs).

    2. Choisissez le nom d'utilisateur Dave.

    3. Dans la page des détails de l'utilisateur, sélectionnez l'onglet Permissions (Autorisations) et développez la section Inline Policies (Stratégies 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.

      Vous devez mettre à jour la politique en fournissant leAccountA-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 ce qui suit AWS CLI assume-rolecommande utilisant le AccountCDave profil.

    Vous devez mettre à jour la ARN valeur de la commande en indiquant AccountA-IDexamplerole 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 AWS CLI fichier de configuration 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 ce qui suit AWS CLI commande pour accéder aux objets à l'aide des informations d'identification temporaires. Par exemple, la commande spécifie l'objet principal API pour récupérer les métadonnées de l'HappyFace.jpgobjet.

    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, l'autorisation get-object-acl vous sera refusée car le rôle n'est pas autorisé à effectuer 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 les tests terminés, vous pouvez effectuer les opérations suivantes pour effectuer le nettoyage :

    1. Connectez-vous au AWS Management Consoleà l'aide des informations d'identification du compte A, puis procédez comme suit :

      • Dans la console Amazon S3, supprimez la stratégie de compartiment attachée à examplebucket. 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 IAMconsole, supprimez le examplerole que vous avez créé dans le compte A. Pour step-by-step obtenir des instructions, voir Supprimer un IAM utilisateur dans le guide de IAM l'utilisateur.

      • Dans la IAMconsole, supprimez l'AccountAadminutilisateur.

  2. Connectez-vous à la IAMconsole à l'aide des informations d'identification du compte B. Supprimez l'utilisateur AccountBadmin.

  3. Connectez-vous à la IAMconsole à l'aide des informations d'identification du compte C. Supprimer AccountCadminet l'utilisateur Dave.

Ressources connexes

Pour plus d'informations relatives à cette procédure pas à pas, consultez les ressources suivantes dans le guide de l'IAMutilisateur :