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.
Exemples de politiques relatives aux compartiments utilisant des clés de condition
Vous pouvez utiliser le langage d'access policy pour spécifier des conditions lorsque vous accordez des autorisations. Vous pouvez utiliser l'élément Condition
facultatif ou le bloc Condition
pour spécifier des conditions lorsqu'une stratégie est appliquée.
Pour les stratégies qui utilisent des clés de condition Amazon S3 pour les opérations d'objet et de compartiment, consultez les exemples suivants. Pour plus d’informations sur les clés de condition, consultez Clés de conditions de politique pour Amazon S3. Pour obtenir la liste complète des actions, des clés de condition et des ressources Amazon S3 que vous pouvez spécifier dans les politiques, consultez la section Actions, ressources et clés de condition pour Amazon S3 dans la référence d'autorisation de service.
Exemples - Clés de condition Amazon S3 pour les opérations sur les objets
Cette section fournit des exemples qui vous montrent comment utiliser des clés de condition spécifiques à Amazon S3 pour les opérations sur les objets. Pour obtenir la liste complète des actions, des clés de condition et des ressources Amazon S3 que vous pouvez spécifier dans les politiques, consultez la section Actions, ressources et clés de condition pour Amazon S3 dans la référence d'autorisation de service.
Plusieurs exemples de politiques montrent comment utiliser les clés de conditions avec les opérations PUTd'objet. PUTLes opérations sur les objets autorisent des en-têtes spécifiques à la liste de contrôle d'accès (ACL) que vous pouvez utiliser pour accorder des autorisations ACL basées sur des autorisations. En utilisant ces clés, le propriétaire du compartiment peut définir une condition pour nécessiter des autorisations d'accès spécifiques quand l'utilisateur charge un objet. Vous pouvez également accorder des ACL autorisations basées sur l'PutObjectAcl opération. Pour plus d'informations, consultez PutObjectAclle manuel Amazon S3 Amazon Simple Storage Service API Reference. Pour plus d'informations surACLs, voirVue d'ensemble de la liste de contrôle d'accès (ACL).
Rubriques
- Exemple 1 : Octroi de s3 : PutObject autorisation nécessitant des objets stockés à l'aide du chiffrement côté serveur
- Exemple 2 : Octroi à s3 : PutObject autorisation de copier des objets avec une restriction sur la source de copie
- Exemple 3 : accorder l'accès à une version spécifique d'un objet
- Exemple 4 : Octroi d'autorisations en fonction des balises d'objets
- Exemple 5 : restriction de l'accès en fonction de l' Compte AWS ID du propriétaire du compartiment
- Exemple 6 : Exiger une TLS version minimale
Exemple 1 : Octroi de s3 : PutObject autorisation nécessitant des objets stockés à l'aide du chiffrement côté serveur
Supposons que le Compte A possède un compartiment. L'administrateur du compte souhaite accorder à Jane, une utilisatrice du Compte A, l'autorisation de télécharger des objets avec comme condition que Jane demande toujours le chiffrement côté serveur afin qu'Amazon S3 enregistre les objets chiffrés. L'administrateur du compte A peut accomplir cela en utilisant la clé de condition s3:x-amz-server-side-encryption
comme illustré. La paire de clé-valeur dans le bloc Condition
spécifie la clé s3:x-amz-server-side-encryption
.
"Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" }}
Lorsque vous testez l'autorisation à l'aide du AWS CLI, vous devez ajouter le paramètre requis à l'aide du --server-side-encryption
paramètre.
aws s3api put-object --bucket example1bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountBadmin
Exemple 2 : Octroi à s3 : PutObject autorisation de copier des objets avec une restriction sur la source de copie
Dans la demande PUT d'objet, lorsque vous spécifiez un objet source, il s'agit d'une opération de copie (voir PUTObjet - Copier). En conséquence, le propriétaire du compartiment peut octroyer une autorisation utilisateur pour copier des objets avec des restrictions sur la source, par exemple :
-
Autoriser la copie d'objets uniquement à partir du compartiment
sourcebucket
. -
Autoriser la copie d'objets à partir du compartiment source, et uniquement les objets dont le préfixe de nom de clé commence par public/ f (par exemple, sourcebucket/public/*).
-
Autoriser la copie uniquement d'un objet spécifique à partir du compartiment source (par exemple, sourcebucket/example.jpg).
La stratégie de compartiment suivante accorde à l'utilisateur (Dave) l'autorisation s3:PutObject
. Celle-ci lui permet de copier des objets uniquement à la condition que la demande inclue l'en-tête s3:x-amz-copy-source
et que la valeur de l'en-tête spécifie le préfixe de nom de clé /awsexamplebucket1/public/*
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "cross-account permission to user in your own account", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1
/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/folder", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::awsexamplebucket1
/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "awsexamplebucket1
/public/*" } } } ] }
Testez la politique à l'aide du AWS CLI
Vous pouvez tester l'autorisation à l'aide de la AWS CLI copy-object
commande. Vous spécifiez la source en ajoutant le paramètre --copy-source
, le préfixe du nom de clé doit correspondre au préfixe autorisé dans la stratégie. Vous devez fournir à l'utilisateur Dave les informations d'identification en utilisant le paramètre --profile
. Pour plus d'informations sur la configuration du AWS CLI, consultezDéveloppement avec Amazon S3 à l'aide de la AWS CLI.
aws s3api copy-object --bucket
awsexamplebucket1
--key HappyFace.jpg --copy-sourceexamplebucket
/public/PublicHappyFace1.jpg --profile AccountADave
Octroyer une autorisation pour copier uniquement un objet spécifique
La stratégie précédente utilise la condition StringNotLike
. Pour octroyer l'autorisation de copier uniquement un objet spécifique, vous devez changer la condition de StringNotLike
à StringNotEquals
, puis spécifier la clé d'objet exacte comme indiqué.
"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "
awsexamplebucket1
/public/PublicHappyFace1.jpg" } }
Exemple 3 : accorder l'accès à une version spécifique d'un objet
Supposons que le compte A possède un compartiment activé pour la gestion des versions. Le compartiment a plusieurs versions de l'objet HappyFace.jpg
. L'administrateur de compte souhaite maintenant octroyer à son utilisateur Dave l'autorisation d'obtenir uniquement une version spécifique de l'objet. L'administrateur de compte peut accomplir cela en octroyant à Dave l'autorisation s3:GetObjectVersion
de manière conditionnelle comme indiqué. La paire de clé-valeur dans le bloc Condition
spécifie la clé de condition s3:VersionId
. Dans ce cas, Dave doit connaître l'ID exact de la version de l'objet pour récupérer l'objet.
Pour plus d'informations, consultez GetObjectle manuel Amazon Simple Storage Service API Reference.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/Dave" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::examplebucketversionenabled
/HappyFace.jpg" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::examplebucketversionenabled
/HappyFace.jpg", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e
" } } } ] }
Testez la politique à l'aide du AWS CLI
Vous pouvez tester les autorisations à l'aide de la AWS CLI get-object
commande avec le --version-id
paramètre identifiant la version spécifique de l'objet. La commande récupère l'objet et l'enregistre dans le fichier OutputFile.jpg
.
aws s3api get-object --bucket
examplebucketversionenabled
--key HappyFace.jpg OutputFile.jpg --version-idAaaHbAQitwiL_h47_44lRO2DDfLlBO5e
--profile AccountADave
Exemple 4 : Octroi d'autorisations en fonction des balises d'objets
Pour obtenir des exemples sur l'utilisation des clés de condition de balisage d'objet avec des opérations Amazon S3, veuillez consulter Stratégies de balisage et de contrôle d'accès.
Exemple 5 : restriction de l'accès en fonction de l' Compte AWS ID du propriétaire du compartiment
Vous pouvez utiliser la s3:ResourceAccount
touche aws:ResourceAccount
or pour écrire IAM ou des politiques de point de terminaison du cloud privé virtuel (VPC) qui limitent l'accès des utilisateurs, des rôles ou des applications aux compartiments Amazon S3 détenus par un Compte AWS identifiant spécifique. Vous pouvez utiliser cette clé de condition pour empêcher vos clients d'accéder VPC à des compartiments dont vous n'êtes pas le propriétaire.
Sachez toutefois que certains AWS services dépendent de l'accès à des buckets AWS gérés. Par conséquent, l'utilisation de la s3:ResourceAccount
touche aws:ResourceAccount
ou dans votre IAM politique peut également affecter l'accès à ces ressources.
Pour plus d'informations et d'exemples, veuillez consulter les ressources suivantes :
-
Restreindre l'accès aux compartiments dans un Compte AWS spécifié dans le Guide AWS PrivateLink
-
Restreindre l'accès aux buckets ECR utilisés par Amazon dans le Guide Amazon ECR
-
Fournissez l'accès requis à Systems Manager pour les buckets Amazon S3 AWS gérés dans le Guide AWS Systems Manager
-
Limit access to Amazon S3 buckets owned by specific Comptes AWS
(Limiter l'accès aux compartiments Amazon S3 détenus par des comptes AWS spécifiques) sur la page AWS Storage Blog
Exemple 6 : Exiger une TLS version minimale
Vous pouvez utiliser la clé de TlsVersion condition s3 : pour écrire IAM des politiques Virtual Private Cloud Endpoint (VPCE) ou de bucket qui limitent l'accès des utilisateurs ou des applications aux buckets Amazon S3 en fonction de la TLS version utilisée par le client. Vous pouvez utiliser cette clé de condition pour écrire des politiques qui nécessitent une TLS version minimale.
Cet exemple de politique de compartiment refuse les PutObject demandes des clients dont TLS la version est inférieure à 1.2, par exemple 1.1 ou 1.0.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }
amzn-s3-demo-bucket1
Cet exemple de politique de compartiment autorise les PutObject demandes de clients dont TLS la version est supérieure à 1.1, par exemple 1.2, 1.3 ou supérieure.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
", "arn:aws:s3:::
amzn-s3-demo-bucket1
/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }
amzn-s3-demo-bucket1
Exemples - Clés de condition Amazon S3 pour les opérations sur les compartiments
Cette section fournit des exemples de stratégies qui vous montrent comment utiliser des clés de condition spécifiques à Amazon S3 pour les opérations sur les compartiments.
Rubriques
Exemple 1 : Octroi d'une GetObject autorisation s3 : assortie d'une condition sur une adresse IP
Vous pouvez autoriser les utilisateurs authentifiés à utiliser l's3:GetObject
action si la demande provient d'une plage d'adresses IP spécifique (192.0.2.*), sauf si l'adresse IP est 192.0.2.188. Dans le bloc de condition, les éléments IpAddress
et NotIpAddress
sont des conditions, chacune disposant d'une paire clé-valeur pour évaluation. Dans cet exemple, les deux paires clé-valeur utilisent la clé aws:SourceIp
AWS‐wide.
Note
Les valeurs NotIpAddress
clés IPAddress
et spécifiées dans la condition utilisent la CIDR notation décrite dans RFC 4632. Pour plus d'informations, consultez http://www.rfc-editor.org/rfc/rfc4632.txt
{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": "*", "Action":"s3:GetObject", "Resource": "arn:aws:s3:::
awsexamplebucket1
/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "192.0.2.0/24" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32" } } } ] }
Vous pouvez également utiliser d'autres AWS clés de condition générales dans les politiques Amazon S3. Par exemple, vous pouvez spécifier les clés de aws:SourceVpc
condition aws:SourceVpce
et dans les politiques de compartiment pour les VPC points de terminaison. Pour plus d'exemples, consultez Contrôle de l'accès depuis les VPC terminaux à l'aide de politiques relatives aux compartiments.
Note
Pour certaines clés de condition AWS globales, seuls certains types de ressources sont pris en charge. Par conséquent, vérifiez si Amazon S3 prend en charge la clé de condition globale et le type de ressource que vous souhaitez utiliser, ou si vous devez utiliser une clé de condition spécifique à Amazon S3 à la place. Pour obtenir la liste complète des types de ressources et des clés de condition pris en charge pour Amazon S3, consultez la section Actions, ressources et clés de condition pour Amazon S3 dans la référence d'autorisation de service.
Exemple 2 : Obtention d'une liste d'objets dans un compartiment avec un préfixe spécifique
Vous pouvez utiliser la clé de s3:prefix
condition pour limiter la réponse du GETBucket (ListObjects) API aux noms de clés dotés d'un préfixe spécifique. Si vous êtes le propriétaire du compartiment, vous pouvez limiter un utilisateur pour répertorier le contenu d'un préfixe spécifique dans le compartiment. Cette clé de condition est utile si les objets du compartiment sont organisés par préfixe de nom de clé. La console Amazon S3 utilise des préfixes de nom de clé pour afficher un concept de dossier. Seule la console prend en charge le concept de dossiers ; Amazon S3 ne API prend en charge que les buckets et les objets. Pour plus d’informations sur l’utilisation de préfixes et de délimiteurs pour filtrer les autorisations d’accès, consultez Contrôle de l'accès à un compartiment avec des stratégies d'utilisateur.
Par exemple, si vous avez deux objets avec les noms de clés public/object1.jpg
et public/object2.jpg
, la console affiche les objets dans le dossier public
. Dans Amazon S3API, il s'agit d'objets avec des préfixes, et non d'objets dans des dossiers. Toutefois, dans Amazon S3API, si vous organisez vos clés d'objet à l'aide de tels préfixes, vous pouvez accorder une s3:ListBucket
autorisation à s3:prefix
condition que l'utilisateur obtienne une liste de noms de clés avec ces préfixes spécifiques.
Dans cet exemple, le propriétaire du compartiment et le compte parent auquel appartient l'utilisateur sont identiques. Ainsi, le propriétaire du compartiment peut utiliser une stratégie de compartiment ou une stratégie d'utilisateur. Pour plus d'informations sur les autres clés de condition que vous pouvez utiliser avec le GET Bucket (ListObjects)API, consultez ListObjects.
Stratégie utilisateur
La politique utilisateur suivante accorde l's3:ListBucket
autorisation (voir GETBucket (List Objects)) avec une condition qui oblige l'utilisateur à spécifier la valeur prefix
dans la demandeprojects
.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::
awsexamplebucket1
", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::awsexamplebucket1
", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }
La condition restreint l'utilisateur à répertorier les clés d'objets avec le préfixe projects
. Le refus explicite ajouté refuse la demande de l'utilisateur de répertorier les clés avec un autre préfixe, peu importe les autres autorisations dont dispose l'utilisateur. Par exemple, il est possible que l'utilisateur obtienne l'autorisation de répertorier les clés d'objets sans aucune restriction, grâce aux mises à jour de la stratégie d'utilisateur précédente ou via une stratégie de compartiment. Dans la mesure où le refus explicite a toujours priorité, la demande de l'utilisateur de répertorier des clés autres que le préfixe projects
est refusée.
Stratégie de compartiment
Si vous ajoutez l'élément Principal
à la stratégie utilisateur ci-dessus, identifiant l'utilisateur, vous avez maintenant une stratégie de compartiment comme indiqué.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::awsexamplebucket1
", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::awsexamplebucket1
", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }
Testez la politique à l'aide du AWS CLI
Vous pouvez tester la politique à l'aide de la list-object
AWS CLI commande suivante. Dans la commande, vous fournissez les informations d'identification utilisateur en utilisant le paramètre --profile
. Pour plus d'informations sur la configuration et l'utilisation du AWS CLI, consultezDéveloppement avec Amazon S3 à l'aide de la AWS CLI.
aws s3api list-objects --bucket
awsexamplebucket1
--prefix examplefolder --profile AccountADave
Si le compartiment est activé pour la gestion des versions, pour répertorier les objets qu'il contient, vous devez accorder l's3:ListBucketVersions
autorisation prévue dans la politique précédente, au lieu de l's3:ListBucket
autorisation. Cette autorisation prend également en charge la clé de condition s3:prefix
.
Exemple 3 : Définition du nombre maximal de clés
Vous pouvez utiliser la clé de s3:max-keys
condition pour définir le nombre maximum de clés que le demandeur peut renvoyer dans un GETbucket (ListObjects) ou une ListObjectVersionsdemande. Par défaut, le code API renvoie jusqu'à 1 000 clés. Pour obtenir la liste des opérateurs de condition numériques que vous pouvez utiliser avec les exemples qui s3:max-keys
les accompagnent, voir Opérateurs de condition numériques dans le guide de l'IAMutilisateur.