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.
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éation d'IAMutilisateurs et d'un groupe
- Étape 3 : vérifier que IAM les utilisateurs n'ont aucune autorisation
- Étape 4 : Octroyer des autorisations au niveau du groupe
- Étape 5 : accorder à IAM l'utilisateur Alice des autorisations spécifiques
- Étape 6 : Accorder à IAM l'utilisateur Bob des autorisations spécifiques
- É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. 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 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 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/
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
-
Connectez-vous à la IAM console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/iam/
. -
Dans le volet de navigation, choisissez IAMDashboard.
-
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.
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éation d'IAMutilisateurs et d'un groupe
Utilisez maintenant la IAMconsole
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.
-
À 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.
-
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'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 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.
-
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'JSONonglet.
-
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é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 Amazon S3 GET Service, qui renvoie une liste de tous les buckets 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 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.
-
Testez l'autorisation.
-
À 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.
-
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 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 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
-
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.
-
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 remplacer
dans la politiquebucket d'entreprise
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":["/"] } } } ] } -
Testez les autorisations mises à jour.
-
À 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/
. -
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:ListBucket
action 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.
-
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.
-
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 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'JSONonglet.
-
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/*"] } } } ] } -
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 :
-
À 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/
. -
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 : 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/*"] }
-
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.
-
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 :
-
À 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/
. -
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è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 : 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 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 IAM utilisateur, 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 remplacer
dans la politique avec le nom de votre compartiment.bucket d'entreprise
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
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 IAM politiques dans le guide de IAM l'utilisateur