Contrôle de l'accès à un compartiment avec des stratégies d'utilisateur - 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.

Contrôle de l'accès à un compartiment avec des stratégies d'utilisateur

Cette démonstration explique comment les autorisations utilisateur fonctionnent avec Amazon S3. Dans cet exemple, vous créez un compartiment avec des dossiers. Vous créez ensuite des AWS Identity and Access Management IAM utilisateurs dans votre compartiment Amazon S3 Compte AWS et vous leur accordez des autorisations supplémentaires sur votre compartiment Amazon S3 et les dossiers qu'il contient.

Principes de base des compartiments et des dossiers

Le modèle de données Amazon S3 est une structure horizontale : vous créez un compartiment et ce compartiment stocke des objets. Il n'existe aucune hiérarchie de sous-compartiments ou de sous-dossiers, mais vous pouvez émuler une hiérarchie de dossiers. Des outils tels que la console Amazon S3 peuvent présenter une vue de ces dossiers et sous-dossiers logiques dans votre compartiment.

La console montre qu'un compartiment nommé companybucket comporte trois dossiers, Private, Development et Finance, ainsi qu'un objet, s3-dg.pdf. La console utilise les noms d'objet (clés) pour créer une hiérarchie logique avec des dossiers et des sous-dossiers. Considérez les exemples suivants :

  • Lorsque vous créez le dossier Development, la console crée un objet avec la clé Development/. Notez la barre oblique de fin (/) comme délimiteur.

  • Lorsque vous chargez un objet nommé Projects1.xls dans le dossier Development, la console charge l'objet et lui fournit la clé Development/Projects1.xls.

    Dans la clé, Development est le préfixe et / le délimiteur. Amazon S3 API prend en charge les préfixes et les délimiteurs dans ses opérations. Par exemple, vous pouvez obtenir la liste de tous les objets d'un compartiment avec un préfixe et un délimiteur spécifiques. Dans la console, quand ouvrez le dossier Development, la console répertorie les objets de ce dossier. Dans l'exemple suivant, le dossier Development contient un seul objet.

    Lorsque la console répertorie le dossier Development dans le compartiment companybucket, elle envoie une demande à Amazon S3 dans laquelle elle spécifie le préfixe Development et le délimiteur /. La réponse de la console ressemble à une liste de dossiers du système de fichiers de votre ordinateur. L'exemple précédent montre que le compartiment companybucket possède un objet doté de la clé Development/Projects1.xls.

La console utilise des clés d'objet pour déduire une hiérarchie logique. Amazon S3 ne possède aucune hiérarchie physique. Amazon S3 ne propose que des compartiments contenant des objets dans une structure de fichier plate. Lorsque vous créez des objets à l'aide d'Amazon S3API, vous pouvez utiliser des clés d'objet qui impliquent une hiérarchie logique. Lorsque vous créez une hiérarchie logique d'objets, vous pouvez gérer l'accès aux dossiers individuels, comme le montre cette procédure détaillée.

Avant de commencer, veillez à vous familiariser avec le concept de contenu du compartiment de niveau racine. Supposez que votre compartiment companybucket contienne les objets suivants :

  • Private/privDoc1.txt

  • Private/privDoc2.zip

  • Development/project1.xls

  • Development/project2.xls

  • Finance/Tax2011/document1.pdf

  • Finance/Tax2011/document2.pdf

  • s3-dg.pdf

Ces clés d'objet créent une hiérarchie logique avec Private, Development et Finance comme dossiers de niveau racine et s3-dg.pdf comme objet de niveau racine. Lorsque vous choisissez le nom du compartiment dans la console Amazon S3, les éléments de niveau racine apparaissent. La console montre les préfixes de niveau supérieur (Private/, Development/ et Finance/) sous la forme de dossiers de niveau racine. La clé d'objet s3-dg.pdf n'a pas de préfixe et apparaît donc en tant qu'élément de niveau racine.

Résumé de la procédure détaillée

Dans cette procédure détaillée, vous créez un compartiment avec trois dossiers (Private, Development et Finance) dans celui-ci.

Vous avez deux utilisateurs, Alice et Bob. Vous souhaitez qu'Alice accède uniquement au dossier Development et que Bob accède uniquement au dossier Finance. Vous souhaitez garder le contenu du dossier Private privé. Dans la procédure pas à pas, vous gérez l'accès en créant des IAM utilisateurs (l'exemple utilise les noms d'utilisateur Alice et Bob) et en leur accordant les autorisations nécessaires.

IAMprend également en charge la création de groupes d'utilisateurs et l'octroi d'autorisations au niveau du groupe qui s'appliquent à tous les utilisateurs du groupe. Cela vous aide à mieux gérer les autorisations. Pour cet exercice, Alice et Bob ont besoin de certaines autorisations communes. Vous allez donc créer un groupe nommé Consultants et ajouter Alice et Bob à ce groupe. Vous commencerez par octroyer des autorisations en attachant une stratégie de groupe à ce groupe. Ensuite, vous ajouterez des autorisations spécifiques aux utilisateurs en attachant des stratégies aux utilisateurs spécifiques.

Note

La procédure pas à pas utilise companybucket comme nom du bucket, Alice et Bob comme IAM utilisateurs et Consultants comme nom du groupe. Comme Amazon S3 exige que les noms de compartiment soient uniques à l'échelle mondiale, vous devez remplacer le nom du compartiment par un nom de votre création.

Préparation de la procédure détaillée

Dans cet exemple, vous utilisez vos Compte AWS informations d'identification pour créer des IAM utilisateurs. Initialement, ces utilisateurs n'ont aucune autorisation. Vous octroyez de façon incrémentielle des autorisations à ces utilisateurs pour leur permettre d'effectuer des actions Amazon S3 spécifiques. Pour tester ces autorisations, vous vous connectez à la console avec les autorisations de chaque utilisateur. Au fur et à mesure que vous accordez des autorisations en tant que Compte AWS propriétaire et que vous testez des autorisations en tant qu'IAMutilisateur, vous devez vous connecter et vous déconnecter, en utilisant à chaque fois des informations d'identification différentes. Vous pouvez effectuer ce test dans un seul navigateur, mais le processus sera accéléré si vous pouvez utiliser deux navigateurs différents. Utilisez un navigateur pour vous connecter à l' AWS Management Console aide de vos Compte AWS informations d'identification et un autre navigateur pour vous connecter aux informations IAM d'identification de l'utilisateur.

Pour vous connecter à l' AWS Management Console aide de vos Compte AWS informations d'identification, rendez-vous sur https://console.aws.amazon.com/. Un IAM utilisateur ne peut pas se connecter en utilisant le même lien. Un IAM utilisateur doit utiliser une page de IAM connexion activée. En tant que propriétaire du compte, vous pouvez fournir ce lien à vos utilisateurs.

Pour plus d'informationsIAM, consultez la page de AWS Management Console connexion dans le guide de l'IAMutilisateur.

Pour fournir un lien de connexion aux utilisateurs IAM

  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

  2. Dans le volet de navigation, choisissez IAMDashboard.

  3. Notez le URL lien de connexion des IAM utilisateurs ci-dessous :. Vous allez donner ce lien aux IAM utilisateurs pour qu'ils se connectent à la console à l'aide de leur nom IAM d'utilisateur et de leur mot de passe.

Étape 1 : Créer un compartiment

Au cours de cette étape, vous vous connectez à la console Amazon S3 avec vos Compte AWS informations d'identification, vous créez un compartiment, vous y ajoutez des dossiers et vous chargez un ou deux exemples de documents dans chaque dossier.

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

  2. Créez un compartiment.

    Pour step-by-step obtenir des instructions, voirCréer un compartiment.

  3. Chargez un document dans le compartiment.

    Cet exercice suppose que vous disposez du document s3-dg.pdf au niveau racine de ce compartiment. Si vous chargez un autre document, inscrivez son nom de fichier à la place de s3-dg.pdf.

  4. Ajoutez trois dossiers nommés Private, Finance et Development au compartiment.

    Pour step-by-step obtenir des instructions sur la création d'un dossier, consultez Organisation des objets dans la console Amazon S3 à l'aide de dossiers > dans le guide de l'utilisateur d'Amazon Simple Storage Service.

  5. Chargez un ou deux documents dans chaque dossier.

    Pour cet exercice, supposons que vous avez chargé deux documents dans chaque dossier, de sorte que le compartiment possède des objets avec les clés suivantes :

    • Private/privDoc1.txt

    • Private/privDoc2.zip

    • Development/project1.xls

    • Development/project2.xls

    • Finance/Tax2011/document1.pdf

    • Finance/Tax2011/document2.pdf

    • s3-dg.pdf

    Pour step-by-step obtenir des instructions, voirChargement d'objets.

Étape 2 : Création d'IAMutilisateurs et d'un groupe

Utilisez maintenant la IAMconsole pour ajouter deux IAM utilisateurs, Alice et Bob, à votre Compte AWS. Pour step-by-step obtenir des instructions, reportez-vous à la section Création IAM d'un utilisateur Compte AWS dans votre guide de l'IAMutilisateur.

Créez également un groupe administratif nomméConsultants. Ajoutez ensuite les deux utilisateurs au groupe. Pour step-by-step obtenir des instructions, consultez la section Création de groupes IAM d'utilisateurs.

Avertissement

Lorsque vous ajoutez des utilisateurs et un groupe, n'attachez aucune stratégie octroyant des autorisations à ces utilisateurs. Au début, les utilisateurs n'ont aucune autorisation. Dans les sections suivantes, vous allez octroyer des autorisations de façon incrémentielle. Vous devez d'abord vous assurer que vous avez attribué des mots de passe à ces IAM utilisateurs. Vous utiliserez les autorisations de ces utilisateurs pour tester les actions Amazon S3 et vérifier que ces autorisations fonctionnent comme prévu.

Pour step-by-step obtenir des instructions relatives à la création d'un nouvel IAM utilisateur, reportez-vous à la section Création IAM d'un utilisateur Compte AWS dans votre guide de l'IAMutilisateur. Lorsque vous créez les utilisateurs pour cette procédure, sélectionnez Accès àAWS Management Console et désactivez l'option Accès par programmation.

Pour step-by-step obtenir des instructions sur la création d'un groupe administratif, consultez la section Création de votre premier utilisateur et de votre premier groupe d'IAMadministrateurs dans le guide de IAM l'utilisateur.

Étape 3 : vérifier que IAM les utilisateurs n'ont aucune autorisation

Si vous utilisez deux navigateurs, vous pouvez désormais utiliser le second navigateur pour vous connecter à la console à l'aide de l'un des identifiants IAM utilisateur.

  1. À l'aide du lien de connexion de l'IAMutilisateur (voirPour fournir un lien de connexion aux utilisateurs IAM), connectez-vous à l' AWS Management Console aide de l'un des identifiants IAM utilisateur.

  2. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

    Vérifiez le message de console vous indiquant que l'accès est refusé.

À présent, vous pouvez commencer octroyer des autorisations incrémentielles aux utilisateurs. En premier lieu, vous attacherez une stratégie de groupe octroyant les autorisations que les deux utilisateurs doivent posséder.

Étape 4 : Octroyer des autorisations au niveau du groupe

Vous voulez que les utilisateurs soient en mesure d'effectuer les tâches suivantes :

  • Répertorier tous les compartiments détenus par le compte parent. Pour cela, Bob et Alice doivent disposer de l'autorisation pour l'action s3:ListAllMyBuckets.

  • Répertorier les éléments de niveau racine, les dossiers et les objets dans le compartiment companybucket. Pour cela, Bob et Alice doivent disposer de l'autorisation pour l'action s3:ListBucket sur le compartiment companybucket.

À présent, vous allez créer une stratégie qui octroie ces autorisations, puis vous l'attacherez au groupe Consultants.

Étape 4.1 : Octroyer l'autorisation de répertorier tous les compartiments

Dans cette étape, vous allez créer une stratégie gérée qui octroie aux utilisateurs les autorisations minimales leur permettant de répertorier tous les compartiments détenus par le compte parent. Vous attacherez ensuite cette stratégie au groupe Consultants. Lorsque vous attachez la stratégie gérée à un utilisateur ou à un groupe, vous accordez à cet utilisateur ou à ce groupe l'autorisation d'obtenir la liste des compartiments détenus par le parent Compte AWS.

  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

    Note

    Dans la mesure où vous accordez des autorisations aux utilisateurs, connectez-vous à l'aide de vos Compte AWS informations d'identification, et non en tant qu'IAMutilisateur.

  2. Créez la stratégie gérée.

    1. Dans le volet de navigation à gauche, choisissez Stratégies, puis Créer une stratégie.

    2. Choisissez l'JSONonglet.

    3. Copiez la stratégie d'accès suivante et collez-la dans le champ de texte de stratégie.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListInTheConsole", "Action": ["s3:ListAllMyBuckets"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] } ] }

      Une politique est un JSON document. Dans ce document, un élément Statement est un tableau d'objets, chacun décrivant une autorisation à l'aide d'une collection de paires de noms-valeurs. La stratégie précédente décrit une autorisation spécifique. L'élément Action spécifie le type d'accès. Dans la stratégie, l'élément s3:ListAllMyBuckets est une action Amazon S3 prédéfinie. Cette action couvre l'opération Amazon S3 GET Service, qui renvoie une liste de tous les buckets détenus par l'expéditeur authentifié. La valeur de l'élément Effect détermine si une autorisation spécifique est accordée ou refusée.

    4. Choisissez Review Policy (Examiner une stratégie). Sur la page suivante, saisissez AllowGroupToSeeBucketListInTheConsoledans le champ Nom, puis choisissez Créer une stratégie.

      Note

      L'entrée Résumé affiche un message indiquant que la stratégie n'accorde pas d'autorisations. Vous pouvez ignorer ce message dans le cadre de cette procédure.

  3. Attachez la stratégie gérée AllowGroupToSeeBucketListInTheConsole que vous avez créée au groupe Consultants.

    Pour step-by-step obtenir des instructions relatives à l'attachement d'une politique gérée, consultez la section Ajout et suppression IAM d'autorisations d'identité dans le Guide de IAM l'utilisateur.

    Vous joignez des documents de politique aux IAM utilisateurs et aux groupes dans la IAM console. Comme vous voulez que les deux utilisateurs soient en mesure de répertorier les compartiments, vous attachez cette stratégie au groupe.

  4. Testez l'autorisation.

    1. À l'aide du lien de connexion IAM utilisateur (voirPour fournir un lien de connexion aux utilisateurs IAM), connectez-vous à la console à l'aide de l'un des identifiants IAM utilisateur.

    2. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

      La console doit à présent répertorier tous les compartiments mais pas les objets figurant dans ces compartiments.

Étape 4.2 : Permettre aux utilisateurs de répertorier le contenu de niveau racine d'un compartiment

Ensuite, autorisez tous les utilisateurs du groupe Consultants à répertorier les éléments de niveau racine du compartiment companybucket. Lorsqu'un utilisateur choisit le compartiment de l'entreprise dans la console Amazon S3, il peut voir les éléments de niveau racine figurant dans le compartiment.

Note

Cet exemple utilise companybucket à titre d'illustration. Vous devez utiliser le nom du compartiment que vous avez créé.

Pour comprendre la demande que la console envoie à Amazon S3 lorsque vous choisissez un nom de compartiment, la réponse renvoyée par Amazon S3 et la façon dont la console interprète la réponse, examinez le flux d'un peu plus près.

Lorsque vous choisissez un nom de compartiment, la console envoie la demande de GETcompartiment (objets de liste) à Amazon S3. Cette demande inclut les paramètres suivants :

  • le paramètre prefix avec une chaîne vide comme valeur ;

  • le paramètre delimiter avec / comme valeur.

Voici un exemple de demande.

GET ?prefix=&delimiter=/ HTTP/1.1 Host: companybucket.s3.amazonaws.com Date: Wed, 01 Aug 2012 12:00:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=

Amazon S3 retourne une réponse qui inclut l'élément <ListBucketResult/>.

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix></Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>s3-dg.pdf</Key> ... </Contents> <CommonPrefixes> <Prefix>Development/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Finance/</Prefix> </CommonPrefixes> <CommonPrefixes> <Prefix>Private/</Prefix> </CommonPrefixes> </ListBucketResult>

L'objet de clé s3-dg.pdf ne contient pas la barre oblique (/) comme délimiteur et Amazon S3 retourne la clé dans l'élément <Contents>. Toutefois, toutes les autres clés dans notre exemple de compartiment contiennent le délimiteur /. Amazon S3 regroupe ces clés et renvoie un élément <CommonPrefixes> pour chacune des valeurs de préfixe distinctes Development/, Finance/ et Private/ qui est une sous-chaîne du début de ces clés jusqu'à la première occurrence du délimiteur / spécifié.

La console interprète ce résultat et affiche les éléments de niveau racine sous la forme de trois dossiers et d'une clé d'objet.

Si Bob ou Alice ouvre le dossier Development, la console envoie la demande GETBucket (List Objects) à Amazon S3 avec prefix les delimiter paramètres définis sur les valeurs suivantes :

  • Le paramètre prefix avec la valeur Development/.

  • Le paramètre delimiter avec la valeur « / ».

En réponse à cela, Amazon S3 renvoie les clés d'objet qui commencent par le préfixe spécifié.

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Name>companybucket</Name> <Prefix>Development</Prefix> <Delimiter>/</Delimiter> ... <Contents> <Key>Project1.xls</Key> ... </Contents> <Contents> <Key>Project2.xls</Key> ... </Contents> </ListBucketResult>

La console affiche les clés d'objet.

A présent, revenez à l'octroi aux utilisateurs d'une autorisation pour répertorier les éléments de niveau racine du compartiment. Pour répertorier le contenu du compartiment, les utilisateurs ont besoin d'une autorisation pour appeler l'action s3:ListBucket, telle qu'illustrée dans la déclaration de stratégie ci-dessous. Pour s'assurer qu'ils ne voient que le contenu de niveau racine, vous ajoutez une condition stipulant que les utilisateurs doivent spécifier un paramètre prefix vide dans la demande (c'est-à-dire qu'ils ne sont pas autorisés à double-cliquer sur les dossiers de niveau racine). Enfin, vous ajoutez une condition pour exiger un accès de type dossier en exigeant que les demandes des utilisateurs incluent le paramètre delimiter avec la valeur « / ».

{ "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } }

Lorsque vous choisissez un compartiment sur la console Amazon S3, la console envoie d'abord la demande d'emplacement du GET compartiment pour savoir Région AWS où le compartiment est déployé. La console utilise ensuite le point de terminaison spécifique à la région pour que le bucket envoie la demande GETBucket (List Objects). Par conséquent, si les utilisateurs doivent utiliser la console, vous devez octroyer l'autorisation pour l'action s3:GetBucketLocation telle qu'illustrée dans la déclaration de stratégie suivante.

{ "Sid": "RequiredByS3Console", "Action": ["s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }
Pour permettre aux utilisateurs de répertorier le contenu de niveau racine d'un compartiment
  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

    Utilisez vos Compte AWS informations d'identification, et non celles d'un IAM utilisateur, pour vous connecter à la console.

  2. Remplacez la stratégie gérée AllowGroupToSeeBucketListInTheConsole existante qui est attachée au groupe Consultants par la stratégie suivante, qui autorise également l'action s3:ListBucket. N'oubliez pas de remplacer bucket d'entreprise dans la politique Resource avec le nom de votre compartiment.

    Pour step-by-step obtenir des instructions, consultez la section Modifier IAM les politiques dans le guide de IAM l'utilisateur. Lorsque vous suivez les step-by-step instructions, veillez à suivre les étapes permettant d'appliquer vos modifications à toutes les entités principales auxquelles la politique est attachée.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{ "s3:prefix":[""], "s3:delimiter":["/"] } } } ] }
  3. Testez les autorisations mises à jour.

    1. À l'aide du lien de connexion de l'IAMutilisateur (voirPour fournir un lien de connexion aux utilisateurs IAM), connectez-vous au AWS Management Console.

      Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

    2. Choisissez le compartiment que vous avez créé ; la console affiche les éléments de niveau racine du compartiment. Si vous choisissez un dossier dans le compartiment, vous ne pourrez pas voir le contenu du dossier, car vous n'avez pas encore été octroyé ces autorisations.

Ce test réussit lorsque les utilisateurs utilisent la console Amazon S3. Lorsque vous choisissez sur un compartiment dans la console, l'implémentation de la console envoie une demande qui inclut le paramètre prefix avec une chaîne vide comme valeur et le paramètre delimiter avec la valeur « / ».

Étape 4.3 : Récapitulatif de la stratégie de groupe

L'effet net de la politique de groupe que vous avez ajoutée est d'accorder aux IAM utilisateurs Alice et Bob les autorisations minimales suivantes :

  • Répertorier tous les compartiments détenus par le compte parent.

  • Voir les éléments de niveau racine dans le compartiment companybucket

Toutefois, les utilisateurs ont une marge de manœuvre encore limitée. Vous octroyez ensuite des autorisations spécifiques à l'utilisateur, comme suit :

  • Autorisez Alice à obtenir et placer des objets dans le dossier Development.

  • Autorisez Bob à obtenir et placer des objets dans le dossier Finance.

Dans le cadre des autorisations spécifiques à l'utilisateur, vous attachez une stratégie à un utilisateur spécifique et non pas au groupe. Dans la section suivante, vous octroyez à Alice l'autorisation de travailler dans le dossier Development. Vous pouvez répéter cette procédure pour octroyer une autorisation similaire à Bob pour lui permettre de travailler dans le dossier Finance.

Étape 5 : accorder à IAM l'utilisateur Alice des autorisations spécifiques

À présent, vous octroyez des autorisations supplémentaires à Alice pour qu'elle puisse voir le contenu du dossier Development, ainsi qu'obtenir et placer des objets dans ce dossier.

Étape 5.1 : accorder à IAM l'utilisateur Alice l'autorisation de répertorier le contenu du dossier de développement

Pour qu'Alice répertorie le contenu du Development dossier, vous devez appliquer à l'utilisateur Alice une politique qui autorise l's3:ListBucketaction sur le companybucket compartiment, à condition que la demande inclut le préfixeDevelopment/. Vous voulez que cette stratégie soit appliquée uniquement à l'utilisateur Alice. Vous devez donc une stratégie en ligne. Pour plus d'informations sur les politiques intégrées, voir Politiques gérées et politiques intégrées dans le Guide de l'IAMutilisateur.

  1. Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/.

    Utilisez vos Compte AWS informations d'identification, et non celles d'un IAM utilisateur, pour vous connecter à la console.

  2. Créez une stratégie en ligne pour octroyer à l'utilisateur Alice l'autorisation de répertorier le contenu du dossier Development.

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

    2. Choisissez le nom d'utilisateur Alice.

    3. Sur la page des détails de l'utilisateur, choisissez l'onglet Autorisations, puis Ajouter une stratégie en ligne.

    4. Choisissez l'JSONonglet.

    5. Copiez la politique suivante et collez-la dans le champ de texte de la politique.

      { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } } ] }
    6. Choisissez Review Policy (Examiner une stratégie). Sur la page suivante, saisissez un nom dans le champ Nom, puis choisissez Créer une stratégie.

  3. Testez la modification des autorisations d'Alice :

    1. À l'aide du lien de connexion de l'IAMutilisateur (voirPour fournir un lien de connexion aux utilisateurs IAM), connectez-vous au AWS Management Console.

    2. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

    3. Dans la console Amazon S3, vérifiez qu'Alice peut voir la liste des objets dans le dossier Development/ du compartiment.

      Lorsque l'utilisateur choisit le dossier /Development pour afficher la liste des objets qu'il contient, la console Amazon S3 envoie la demande ListObjects à Amazon S3 avec le préfixe /Development. Comme l'utilisateur obtient l'autorisation de voir la liste des objets avec le préfixe Development et le délimiteur /, Amazon S3 renvoie la liste des objets avec le préfixe de clé Development/, et la console affiche cette liste.

Étape 5.2 : Accorder à IAM l'utilisateur Alice l'autorisation d'obtenir et de placer des objets dans le dossier de développement

Pour qu'Alice puisse obtenir et placer des objets dans le dossier Development, elle a besoin d'une autorisation pour appeler les actions s3:GetObject et s3:PutObject. Les déclarations de stratégie suivantes octroient ces autorisations, à condition que la demande inclue le paramètre prefix avec la valeur Development/.

{ "Sid":"AllowUserToReadWriteObjectData", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] }

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

    Utilisez vos Compte AWS informations d'identification, et non celles d'un IAM utilisateur, pour vous connecter à la console.

  2. Modifiez la stratégie en ligne que vous avez créée à l'étape précédente.

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

    2. Choisissez sur le nom d'utilisateur Alice.

    3. Dans la page des détails, sélectionnez l'onglet Autorisations et développez la section Stratégies en ligne.

    4. En regard du nom de la stratégie que vous avez créée à l'étape précédente, choisissez Modifier la stratégie.

    5. Copiez la stratégie suivante et collez-la dans le champ de texte de la stratégie pour remplacer la stratégie existante.

      { "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] } ] }
  3. Testez la stratégie mise à jour :

    1. À l'aide du lien de connexion de l'IAMutilisateur (voirPour fournir un lien de connexion aux utilisateurs IAM), connectez-vous au AWS Management Console.

    2. Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

    3. Dans la console Amazon S3, vérifiez qu'Alice peut à présent ajouter un objet et télécharger un objet dans le dossier Development.

Étape 5.3 : Refuser explicitement à IAM l'utilisateur Alice l'autorisation d'accéder à tout autre dossier du bucket

L'utilisateur Alice peut à présent répertorier le contenu de niveau racine dans le compartiment companybucket. Elle peut également obtenir et placer des objets dans le dossier Development. Si vous souhaitez réellement renforcer les autorisations d'accès, vous pouvez refuser explicitement à Alice l'accès aux autres dossiers du compartiment. S'il existe une autre politique (politique de compartiment ouACL) qui accorde à Alice l'accès à tout autre dossier du compartiment, ce refus explicite annule ces autorisations.

Vous pouvez ajouter la déclaration suivante à la stratégie de l'utilisateur Alice. Elle exige que toutes les demandes envoyées par Alice à Amazon S3 incluent le paramètre prefix, dont la valeur peut être Development/* ou une chaîne vide.

{ "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } }

Deux expressions conditionnelles figurent dans le bloc Condition. Les résultats de ces expressions conditionnelles sont associés à l'aide du AND logique. Si les deux conditions son vraies, le résultat de la combinaison combinée est vrai (true). Comme Effect dans cette stratégie est défini sur Deny, lorsque la Condition a la valeur true, les utilisateurs ne peuvent pas effectuer l'Action spécifiée.

  • L'expression conditionnelle Null garantit que les demandes d'Alice incluent le paramètre prefix.

    Le paramètre prefix requiert un accès de type dossier. Si vous envoyez une demande sans le paramètre prefix, Amazon S3 renvoie toutes les clés d'objet.

    Si la demande inclut le paramètre prefix avec une valeur null, l'expression prend la valeur true, et le bloc entier Condition est défini sur true. Vous devez autoriser une chaîne vide comme valeur du paramètre prefix. Nous avons vu dans la discussion précédente qu'autoriser la chaîne null permet à Alice de récupérer les éléments de niveau racine du compartiment, comme le fait la console dans la discussion précédente. Pour plus d’informations, consultez Étape 4.2 : Permettre aux utilisateurs de répertorier le contenu de niveau racine d'un compartiment.

  • L'expression conditionnelle StringNotLike garantit que si la valeur du paramètre prefix est spécifiée et n'est pas Development/*, la demande échoue.

Suivez les étapes de la section précédente et mettez à jour à nouveau la stratégie en ligne que vous avez créée pour l'utilisateur Alice.

Copiez la stratégie suivante et collez-la dans le champ de texte de la stratégie pour remplacer la stratégie existante.

{ "Version": "2012-10-17", "Statement":[ { "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action":["s3:ListBucket"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } }, { "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", "Action":["s3:GetObject", "s3:PutObject"], "Effect":"Allow", "Resource":["arn:aws:s3:::companybucket/Development/*"] }, { "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringNotLike": {"s3:prefix":["Development/*",""] }, "Null" : {"s3:prefix":false } } } ] }

Étape 6 : Accorder à IAM l'utilisateur Bob des autorisations spécifiques

À présent, vous voulez accorder à Bob une autorisation sur le dossier Finance. Suivez la procédure que vous avez utilisée précédemment pour accorder des autorisations à Alice, mais remplacez le dossier Development par le dossier Finance. Pour step-by-step obtenir des instructions, voirÉtape 5 : accorder à IAM l'utilisateur Alice des autorisations spécifiques.

Étape 7 : Sécuriser le dossier Private

Dans cet exemple, vous n'avez que deux utilisateurs. Vous avez accordé toutes les autorisations minimales requises au niveau du groupe et accordé des autorisations au niveau de l'utilisateur seulement lorsque ces autorisations étaient réellement requises au niveau d'un utilisateur individuel. Cette approche aide à réduire au maximum l'effort de gestion des autorisations. Lorsque le nombre d'utilisateurs augmente, la gestion des autorisations peut devenir fastidieuse. Par exemple, vous ne voulez pas que les utilisateurs de cet exemple accèdent au contenu du dossier Private. Comment vous assurer que vous n'accordez pas accidentellement à un utilisateur l'autorisation d'accéder au Private dossier ? Vous devez ajouter une stratégie qui refuse explicitement l'accès à ce dossier. Un refus explicite a priorité sur toutes les autres autorisations.

Pour vous assurer que le dossier Private reste privé, vous pouvez ajouter les deux déclarations de refus suivantes à la stratégie de groupe :

  • Ajoutez la déclaration suivante pour refuser explicitement toute action sur les ressources dans le dossier Private (companybucket/Private/*).

    { "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket/Private/*"] }
  • Vous refusez également l'autorisation pour l'action visant à répertorier les objets lorsque la demande spécifie le préfixe Private/. Dans la console, si Bob ou Alice ouvre le dossier Private, avec cette stratégie, Amazon S3 renvoie une réponse d'erreur.

    { "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } }

Remplacez la stratégie de groupe Consultants par une stratégie mise à jour qui inclut les déclarations de refus précédentes. Après l'application de la stratégie mise à jour, aucun des utilisateurs du groupe ne peut accéder au dossier Private de votre compartiment.

  1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/.

    Utilisez vos Compte AWS informations d'identification, et non celles d'un IAM utilisateur, pour vous connecter à la console.

  2. Remplacez la stratégie gérée AllowGroupToSeeBucketListInTheConsole existante qui est attachée au groupe Consultants par la stratégie suivante. N'oubliez pas de remplacer bucket d'entreprise dans la politique avec le nom de votre compartiment.

    Pour obtenir des instructions, consultez la section Modification des politiques gérées par le client dans le guide de IAM l'utilisateur. Lorsque vous suivez ces instructions, veillez à suivre les consignes pour appliquer vos modifications à toutes les entités principales auxquelles la stratégie est attachée.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket", "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"], "Effect": "Allow", "Resource": ["arn:aws:s3:::*"] }, { "Sid": "AllowRootLevelListingOfCompanyBucket", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::companybucket"], "Condition":{ "StringEquals":{"s3:prefix":[""]} } }, { "Sid": "RequireFolderStyleList", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringNotEquals":{"s3:delimiter":"/"} } }, { "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup", "Action": ["s3:*"], "Effect": "Deny", "Resource":["arn:aws:s3:::companybucket/Private/*"] }, { "Sid": "DenyListBucketOnPrivateFolder", "Action": ["s3:ListBucket"], "Effect": "Deny", "Resource": ["arn:aws:s3:::*"], "Condition":{ "StringLike":{"s3:prefix":["Private/"]} } } ] }

Étape 8 : Nettoyage

Pour nettoyer, ouvrez la IAMconsole et supprimez les utilisateurs Alice et Bob. Pour step-by-step obtenir des instructions, reportez-vous à la section Suppression IAM d'un utilisateur dans le guide de IAM l'utilisateur.

Pour vous assurer que le stockage ne vous est plus facturé, vous devez également supprimer les objets et le compartiment que vous avez créés pour cet exercice.

Ressources connexes