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 utilisateurs AWS Identity and Access Management IAM dans votre compartiment Amazon S3 Compte AWS et les dossiers qu'il contient et leur accordez des autorisations supplémentaires.
Rubriques
- Principes de base des compartiments et des dossiers
- Résumé de la procédure détaillée
- Préparation de la procédure détaillée
- Étape 1 : Créer un compartiment
- Étape 2 : Créer des utilisateurs IAM et un groupe
- Étape 3 : Vérifier que les utilisateurs IAM ne disposent d'aucune autorisation
- Étape 4 : Octroyer des autorisations au niveau du groupe
- Étape 5 : Octroyer des autorisations spécifiques à l'utilisateur IAM Alice
- Étape 6 : Octroyer des autorisations spécifiques à l'utilisateur IAM Bob
- Étape 7 : Sécuriser le dossier Private
- Étape 8 : Nettoyage
- Ressources connexes
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 dossierDevelopment
, 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. L'API Amazon S3 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 dossierDevelopment
, la console répertorie les objets de ce dossier. Dans l'exemple suivant, le dossierDevelopment
contient un seul objet.Lorsque la console répertorie le dossier
Development
dans le compartimentcompanybucket
, elle envoie une demande à Amazon S3 dans laquelle elle spécifie le préfixeDevelopment
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 compartimentcompanybucket
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 n'a pas de hiérarchie physique ; il n'a que des compartiments contenant des objets dans une structure de fichier plat. Lorsque vous créez des objets à l'aide de l'API Amazon S3, 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 cette démonstration, vous gérez l'accès en créant des utilisateurs IAM (l'exemple utilise les noms d'utilisateur Alice et Bob) et vous leur octroyez les autorisations nécessaires.
IAM prend é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
Cette démonstration utilise companybucket
comme nom de compartiment, Alice et Bob comme utilisateurs IAM, et Consultants
comme nom de 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 utilisateurs IAM. 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'utilisateur IAM, 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 pour vous connecter aux informations d'identification de l'utilisateur IAM.
Pour vous connecter à l' AWS Management Console aide de vos Compte AWS
informations d'identification, rendez-vous sur https://console.aws.amazon.com/
Pour plus d’informations sur IAM, consultez la page connexion à la AWS Management Console dans le Guide de l’utilisateur IAM.
Pour fournir un lien de connexion pour les utilisateurs IAM
-
Connectez-vous à la console IAM AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le panneau Navigation (Navigation), choisissez IAM Dashboard (Tableau de bord IAM).
-
Notez l'URL sous IAM users sign in link: (Lien de connexion des utilisateurs IAM). Vous donnerez ce lien aux utilisateurs IAM pour qu'ils se connectent à la console avec leur nom d'utilisateur et leur mot de passe IAM.
É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 (Development
Finance
, etPrivate
) et vous chargez un ou deux exemples de documents dans chaque dossier.
-
Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/
. -
Créez un compartiment.
Pour step-by-step obtenir des instructions, voirCréer un compartiment.
-
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 des3-dg.pdf
. -
Ajoutez trois dossiers nommés
Private
,Finance
etDevelopment
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.
-
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éer des utilisateurs IAM et un groupe
Utilisez maintenant la console IAM
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 d'utilisateurs IAM.
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 tout d'abord vous assurer d'avoir attribué des mots de passe à ces utilisateurs IAM. 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 utilisateur IAM, consultez la section Création d'un utilisateur IAM Compte AWS dans votre guide de l'utilisateur IAM. 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 administrateur IAM dans le guide de l'utilisateur IAM.
Étape 3 : Vérifier que les utilisateurs IAM ne disposent d'aucune autorisation
Si vous utilisez deux navigateurs, vous pouvez utiliser à présent le second navigateur pour vous connecter à la console en utilisant les autorisations d'un des utilisateurs IAM.
-
Utilisez le lien de connexion d'utilisateur IAM (consultez Pour fournir un lien de connexion pour les utilisateurs IAM) pour vous connecter à la AWS Management Console en utilisant les autorisations d'un des deux utilisateurs IAM.
-
Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/
. Vérifiez que le message suivant de la console s'affiche et vous indique 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'actions3:ListBucket
sur le compartimentcompanybucket
.
À 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.
-
Connectez-vous à la console IAM 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'utilisateur IAM.
-
Créez la stratégie gérée.
-
Dans le volet de navigation à gauche, choisissez Stratégies, puis Créer une stratégie.
-
Choisissez l'onglet JSON.
-
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 stratégie est un document JSON. 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émentAction
spécifie le type d'accès. Dans la stratégie, l'éléments3:ListAllMyBuckets
est une action Amazon S3 prédéfinie. Cette action couvre l'opération GET Service d'Amazon S3, qui retourne la liste de tous les compartiments détenus par l'expéditeur authentifié. La valeur de l'élémentEffect
détermine si une autorisation spécifique est accordée ou refusée. -
Choisissez Review Policy (Examiner une stratégie). Sur la page suivante, saisissez
AllowGroupToSeeBucketListInTheConsole
dans 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.
-
-
Attachez la stratégie gérée
AllowGroupToSeeBucketListInTheConsole
que vous avez créée au groupeConsultants
.Pour step-by-step obtenir des instructions relatives à l'attachement d'une politique gérée, consultez la section Ajouter et supprimer des autorisations d'identité IAM dans le guide de l'utilisateur IAM.
Vous attachez des documents de stratégie aux utilisateurs IAM et aux groupes dans la console IAM. Comme vous voulez que les deux utilisateurs soient en mesure de répertorier les compartiments, vous attachez cette stratégie au groupe.
-
Testez l'autorisation.
-
Utilisez le lien de connexion d'utilisateur IAM (consultez Pour fournir un lien de connexion pour les utilisateurs IAM) pour vous connecter à la console en utilisant les autorisations d'un des deux utilisateurs IAM.
-
Ouvrez la console Amazon S3 sur 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 qu'Amazon S3 renvoie et la manière dont la console interprète cette réponse, il est nécessaire de l'examiner d'un peu plus près.
Lorsque vous choisissez un nom de compartiment, la console envoie la demande GET Bucket (List Objects) à 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 (Développement), la console envoie la demande GET Bucket (List Objects) à Amazon S3 avec le préfixe prefix
et les valeurs suivantes pour les paramètres delimiter
:
-
Le paramètre
prefix
avec la valeurDevelopment/
. -
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 de localisation du compartiment GET pour savoir Région AWS où le compartiment est déployé. Ensuite, la console utilise le point de terminaison spécifique à la Région du compartiment pour envoyer la demande GET Bucket (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
-
Connectez-vous à la console IAM 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 utilisateur IAM, pour vous connecter à la console.
-
Remplacez la stratégie gérée
AllowGroupToSeeBucketListInTheConsole
existante qui est attachée au groupeConsultants
par la stratégie suivante, qui autorise également l'actions3:ListBucket
. N'oubliez pas de remplacercompanybucket
dans la stratégieResource
par le nom de votre compartiment.Pour step-by-step obtenir des instructions, consultez la section Modification des politiques IAM dans le guide de l'utilisateur IAM. 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":["/"] } } } ] } -
Testez les autorisations mises à jour.
-
Utilisez le lien de connexion d'utilisateur IAM (voir Pour fournir un lien de connexion pour les utilisateurs IAM) pour vous connecter à la AWS Management Console.
Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/
. -
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 stratégie de groupe que vous avez ajoutée est d'octroyer aux utilisateurs IAM 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 : Octroyer des autorisations spécifiques à l'utilisateur IAM Alice
À 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 : Octroyer une autorisation à l'utilisateur IAM Alice pour répertorier le contenu du dossier Development
Pour qu'Alice répertorie le contenu du dossier Development
, vous devez appliquer une stratégie à l'utilisateur Alice qui octroie l'autorisation pour l'action s3:ListBucket
sur le compartiment companybucket
, à condition que la demande inclue le préfixe Development/
. 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 stratégies en ligne, consultez Stratégies gérées et stratégies en ligne dans le Guide de l’utilisateur IAM.
-
Connectez-vous à la console IAM 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 utilisateur IAM, pour vous connecter à la console.
-
Créez une stratégie en ligne pour octroyer à l'utilisateur Alice l'autorisation de répertorier le contenu du dossier
Development
.-
Dans le panneau de navigation de gauche, choisissez Utilisateurs.
-
Choisissez sur le nom d'utilisateur Alice.
-
Sur la page des détails de l'utilisateur, choisissez l'onglet Autorisations, puis Ajouter une stratégie en ligne.
-
Choisissez l'onglet JSON.
-
Copiez la stratégie suivante et collez-la dans le champ de texte de stratégie.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest", "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::
companybucket
"], "Condition":{ "StringLike":{"s3:prefix":["Development/*"] } } } ] } -
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.
-
-
Testez la modification des autorisations d'Alice :
-
Utilisez le lien de connexion d'utilisateur IAM (voir Pour fournir un lien de connexion pour les utilisateurs IAM) pour vous connecter à la AWS Management Console.
Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/
. -
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 demandeListObjects
à Amazon S3 avec le préfixe/Development
. Comme l'utilisateur obtient l'autorisation de voir la liste des objets avec le préfixeDevelopment
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 : Octroyer des autorisations à l'utilisateur IAM Alice pour obtenir et placer des objets dans le dossier Development
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/*"] }
-
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 utilisateur IAM, pour vous connecter à la console.
-
Modifiez la stratégie en ligne que vous avez créée à l'étape précédente.
Dans le panneau de navigation de gauche, choisissez Utilisateurs.
Choisissez sur le nom d'utilisateur Alice.
Dans la page des détails, sélectionnez l'onglet Autorisations et développez la section Stratégies en ligne.
En regard du nom de la stratégie que vous avez créée à l'étape précédente, choisissez Modifier la stratégie.
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/*"] } ] }
-
Testez la stratégie mise à jour :
-
Utilisez le lien de connexion d'utilisateur IAM (voir Pour fournir un lien de connexion pour les utilisateurs IAM) pour vous connecter à la AWS Management Console.
-
Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/
. -
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 à l'utilisateur IAM Alice les autorisations pour tout autre dossier du compartiment
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 stratégie (stratégie de compartiment ou liste ACL) qui accorde à Alice l'accès à d'autres dossiers du compartiment, ce refus explicite a priorité sur 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ètreprefix
.Le paramètre
prefix
requiert un accès de type dossier. Si vous envoyez une demande sans le paramètreprefix
, 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 entierCondition
est défini sur true. Vous devez autoriser une chaîne vide comme valeur du paramètreprefix
. 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ètreprefix
est spécifiée et n'est pasDevelopment/*
, 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 : Octroyer des autorisations spécifiques à l'utilisateur IAM Bob
À 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 : Octroyer des autorisations spécifiques à l'utilisateur IAM Alice.
É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 s'assurer de ne pas accorder accidentellement une autorisation utilisateur le permettant ? 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 dossierPrivate
, 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.
-
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 utilisateur IAM, pour vous connecter à la console.
-
Remplacez la stratégie gérée
AllowGroupToSeeBucketListInTheConsole
existante qui est attachée au groupeConsultants
par la stratégie suivante. N'oubliez pas de remplacercompanybucket
dans la stratégie par le nom de votre compartiment.Pour obtenir des instructions, veuillez consulter Modification des stratégies gérées par le client dans le Guide de l'utilisateur IAM. 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 console IAM
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
Gestion des stratégies IAM dans le Guide de l'utilisateur IAM.