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'Condition
élément facultatif, ou le Condition
bloc, pour spécifier les conditions dans lesquelles une politique est en vigueur.
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.
Pour plus d'informations sur les autorisations relatives aux API opérations S3 par type de ressource S3, consultezAutorisations requises pour les API opérations Amazon S3.
Exemples : clés de condition Amazon S3 pour les opérations sur les objets
Les exemples suivants montrent comment utiliser les 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.
Pour plus d'informations sur les autorisations relatives aux API opérations S3 par type de ressource S3, consultezAutorisations requises pour les API opérations Amazon S3.
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. À l'aide de ces clés de condition, vous pouvez définir une condition exigeant des autorisations d'accès spécifiques lorsque l'utilisateur télé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 d'une s3:PutObject autorisation exigeant que les objets soient stockés à l'aide du chiffrement côté serveur
- Exemple 2 : Octroi de s3:PutObject l'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 : Restreindre l'accès par Compte AWS ID du propriétaire du bucket
- Exemple 6 : Exiger une TLS version minimale
- Exemple 7 : Exclure certains principes d'une déclaration Deny
Exemple 1 : Octroi d'une s3:PutObject
autorisation exigeant que les objets soient 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 à condition que Jane demande toujours un chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). L'administrateur du compte A peut spécifier cette exigence en utilisant la clé de s3:x-amz-server-side-encryption
condition comme indiqué. La paire clé-valeur du Condition
bloc suivant spécifie la clé de s3:x-amz-server-side-encryption
condition et SSE -S3 (AES256
) comme type de chiffrement :
"Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" }}
Lorsque vous testez cette autorisation à l'aide du AWS CLI, vous devez ajouter le chiffrement requis à l'aide du --server-side-encryption
paramètre, comme indiqué dans l'exemple suivant. Pour utiliser cet exemple de commande, remplacez
par vos propres informations. user input
placeholders
aws s3api put-object --bucket
amzn-s3-demo-bucket
--keyHappyFace.jpg
--bodyc:\HappyFace.jpg
--server-side-encryption "AES256
" --profileAccountAadmin
Exemple 2 : Octroi de s3:PutObject
l'autorisation de copier des objets avec une restriction sur la source de copie
Dans une demande d'PUT
objet, lorsque vous spécifiez un objet source, la demande est une opération de copie (voir CopyObject). Par conséquent, le propriétaire du compartiment peut accorder à un utilisateur l'autorisation de copier des objets avec des restrictions sur la source, par exemple :
-
Autoriser la copie d'objets uniquement à partir du compartiment source spécifié (par exemple,
).amzn-s3-demo-source-bucket
-
Autoriser la copie d'objets depuis le compartiment source spécifié et uniquement les objets dont le préfixe de nom de clé commence par un préfixe spécifique, tel que
(par exemple,public/
).amzn-s3-demo-source-bucket
/public/*
-
Autoriser uniquement la copie d'un objet spécifique depuis le compartiment source (par exemple,
).amzn-s3-demo-source-bucket
/example.jpg
La politique de compartiment suivante accorde l's3:PutObject
autorisation à un utilisateur (
). Cette politique lui permet de copier des objets uniquement à condition que la demande inclue l'Dave
s3:x-amz-copy-source
en-tête et que la valeur de l'en-tête spécifie le préfixe du nom de la /
clé. Pour utiliser cet exemple de politique, remplacez amzn-s3-demo-source-bucket
/public/*
par vos propres informations.user
input placeholders
{ "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:::/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-source-bucket
123456789012
:user/Dave
" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "
amzn-s3-demo-source-bucket
amzn-s3-demo-source-bucket
/public/*
" } } } ] }
Testez la politique à l'aide du AWS CLI
Vous pouvez tester l'autorisation en utilisant le AWS CLI copy-object
commande. Vous spécifiez la source en ajoutant le --copy-source
paramètre. Le préfixe du nom de clé que vous spécifiez doit correspondre au préfixe autorisé dans la politique. Vous devez fournir les
informations d'identification de l'utilisateur à l'aide du Dave
--profile
paramètre. Pour plus d'informations sur la configuration du AWS CLI, voir Développement avec Amazon S3 à l'aide de la AWS CLI. Pour utiliser cet exemple de commande, remplacez
par vos propres informations.user input placeholders
aws s3api copy-object --bucket
--key
amzn-s3-demo-source-bucket
HappyFace.jpg
--copy-source
amzn-s3-demo-source-bucket
/public/PublicHappyFace1.jpg
--profileAccountADave
Octroyer une autorisation pour copier uniquement un objet spécifique
La stratégie précédente utilise la condition StringNotLike
. Pour autoriser la copie d'un objet spécifique uniquement, vous devez modifier la condition de StringNotLike
à StringNotEquals
puis spécifier la clé d'objet exacte, comme indiqué dans l'exemple suivant. Pour utiliser cet exemple de commande, remplacez
par vos propres informations.user input
placeholders
"Condition": { "StringNotEquals": { "s3:x-amz-copy-source": "
amzn-s3-demo-source-bucket
/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
. L'administrateur du compte A souhaite désormais autoriser l'utilisateur HappyFace.jpg
à obtenir uniquement une version spécifique de l'objet. L'administrateur du compte peut y parvenir en accordant l'Dave
s3:GetObjectVersion
autorisation à
l'utilisateur de manière conditionnelle, comme illustré dans l'exemple suivant. La paire de clé-valeur dans le bloc Dave
Condition
spécifie la clé de condition s3:VersionId
. Dans ce cas, pour récupérer l'objet depuis le compartiment activé pour la gestion des versions spécifié, vous devez connaître
l'ID de version exact de l'objet. Pour utiliser cet exemple de politique, remplacez Dave
par vos propres informations.user input
placeholders
Pour plus d’informations, consultez .GetObjectdans le 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:::
amzn-s3-demo-bucket
/HappyFace.jpg
" }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/Dave
" }, "Action": "s3:GetObjectVersion", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/HappyFace.jpg
", "Condition": { "StringNotEquals": { "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e
" } } } ] }
Testez la politique à l'aide du AWS CLI
Vous pouvez tester les autorisations définies dans cette politique en utilisant le AWS CLI get-object
commande avec le --version-id
paramètre permettant d'identifier la version spécifique de l'objet à récupérer. La commande récupère la version spécifiée de l'objet et l'enregistre dans le
fichier.OutputFile.jpg
aws s3api get-object --bucket
--key
amzn-s3-demo-bucket
HappyFace.jpg
OutputFile.jpg
--version-idAaaHbAQitwiL_h47_44lRO2DDfLlBO5e
--profileAccountADave
Exemple 4 : Octroi d'autorisations en fonction des balises d'objets
Pour des exemples d'utilisation des clés de condition de balisage d'objets dans le cadre des opérations Amazon S3, consultezStratégies de balisage et de contrôle d'accès.
Exemple 5 : Restreindre l'accès par Compte AWS ID du propriétaire du bucket
Vous pouvez utiliser la clé de s3:ResourceAccount
condition aws:ResourceAccount
ou la clé de condition 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. Vous pouvez utiliser ces clés de condition pour empêcher vos clients d'accéder VPC à des compartiments dont vous n'êtes pas le propriétaire.
Cependant, sachez que certains AWS les services reposent sur l'accès à AWS compartiments 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, consultez les ressources suivantes :
-
Restreindre l'accès aux compartiments d'un emplacement spécifié Compte AWS dans le .AWS PrivateLink Guide
-
Restreindre l'accès aux buckets ECR utilisés par Amazon dans le Guide Amazon ECR
-
Fournir l'accès requis à Systems Manager pour AWS compartiments Amazon S3 gérés dans AWS Systems Manager Guide
Pour plus d'informations sur les clés de s3:ResourceAccount
condition aws:ResourceAccount
et des exemples illustrant leur utilisation, consultez Limiter l'accès aux compartiments Amazon S3 détenus par des Comptes AWS
Exemple 6 : Exiger une TLS version minimale
Vous pouvez utiliser la clé de s3:TlsVersion
condition pour écrire IAM des politiques de point de terminaison de cloud privé virtuel (VPCE) ou de compartiment qui limitent l'accès des utilisateurs ou des applications aux compartiments 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.
L'exemple de politique de compartiment suivant refuse les PutObject
demandes des clients dont TLS la version est antérieure à 1.2, par exemple 1.1 ou 1.0. Pour utiliser cet exemple de politique, remplacez
par vos propres informations.user input placeholders
{ "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
L'exemple de politique de compartiment suivant autorise les PutObject
demandes des clients dont TLS la version est ultérieure à 1.1, par exemple 1.2, 1.3 ou ulté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
Exemple 7 : Exclure certains principes d'une déclaration Deny
La politique de compartiment suivante interdit l's3:GetObject
accès au
, sauf aux principaux détenteurs du numéro de compte amzn-s3-demo-bucket
. Pour utiliser cet exemple de politique, remplacez-le 123456789012
par vos propres informations.user input
placeholders
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessFromPrincipalNotInSpecificAccount", "Principal": { "AWS": "*" }, "Action": "s3:GetObject", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
/*" ], "Condition": { "StringNotEquals": { "aws:PrincipalAccount": [ "" ] } } } ] }
123456789012
Exemples : clés de condition Amazon S3 pour les opérations de compartiment
Les exemples de politiques suivants montrent comment utiliser les clés de condition spécifiques à Amazon S3 pour les opérations de compartiment.
Rubriques
Exemple 1 : Octroi d'une s3:GetObject
autorisation 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 spécifique d'adresses IP (par exemple,
), sauf si l'adresse IP est une adresse que vous souhaitez exclure (par exemple,192.0.2.*
). Dans le 192.0.2.188
Condition
bloc, IpAddress
et NotIpAddress
sont des conditions, et chaque condition reçoit une paire clé-valeur à des fins d'évaluation. Les deux paires clé-valeur de cet exemple utilisent aws:SourceIp
AWS touche large. Pour utiliser cet exemple de politique, remplacez
par vos propres informations.user input placeholders
Note
Les valeurs NotIpAddress
clés IPAddress
et spécifiées dans le Condition
bloc utilisent la CIDR notation, comme décrit 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:::
/*", "Condition" : { "IpAddress" : { "aws:SourceIp": "
amzn-s3-demo-bucket
192.0.2.0/24
" }, "NotIpAddress" : { "aws:SourceIp": "192.0.2.188/32
" } } } ] }
Vous pouvez également utiliser d'autres AWS‐clés de condition larges 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 certains AWS clés de condition globales, seuls certains types de ressources sont pris en charge. Vérifiez donc si Amazon S3 prend en charge la clé de condition globale et le type de ressource que vous souhaitez utiliser, ou si vous devez plutôt utiliser une clé de condition spécifique à Amazon S3. 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.
Pour plus d'informations sur les autorisations relatives aux API opérations S3 par type de ressource S3, consultezAutorisations requises pour les API opérations Amazon S3.
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 ListObjectsV2APIopération sur des noms de clés avec un préfixe spécifique. Si vous êtes le propriétaire du compartiment, vous pouvez utiliser cette clé de condition pour empêcher un utilisateur de répertorier le contenu d'un préfixe spécifique dans le compartiment. La clé de s3:prefix
condition est utile si les objets du compartiment sont organisés par préfixes 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. Par exemple, si vous avez deux objets portant les noms clés
and public/object1.jpg
, la console affiche les objets situés sous le public/object2.jpg
folder. Dans Amazon S3API, il s'agit d'objets avec des préfixes, et non d'objets dans des dossiers. 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. public
Dans le scénario suivant, le propriétaire du compartiment et le compte parent auquel appartient l'utilisateur sont identiques. Le propriétaire du compartiment peut donc utiliser une politique de compartiment ou une politique utilisateur pour accorder l'accès. Pour plus d'informations sur les autres clés de condition que vous pouvez utiliser avec l'ListObjectsV2
APIopération, voir ListObjectsV2.
Note
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 conformément aux politiques suivantes, au lieu de l's3:ListBucket
autorisation. L's3:ListBucketVersions
autorisation prend également en charge la clé de s3:prefix
condition.
Stratégie utilisateur
La politique utilisateur suivante octroie l's3:ListBucket
autorisation (voir ListObjectsV2) avec une Condition
instruction qui demande à l'utilisateur de spécifier un préfixe dans la demande avec une valeur de
. Pour utiliser cet exemple de politique, remplacez projects
par vos propres informations.user input placeholders
{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::
", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
L'Condition
instruction limite l'utilisateur à ne répertorier que les clés d'objet comportant le
préfixe. La projects
Deny
déclaration explicite ajoutée empêche l'utilisateur de répertorier les clés avec un autre préfixe, quelles que soient les autres autorisations dont il dispose. Par exemple, il est possible que l'utilisateur obtienne l'autorisation de répertorier les clés d'objets sans aucune restriction, soit par le biais de mises à jour de la politique utilisateur précédente, soit par le biais d'une politique de compartiment. Comme Deny
les instructions explicites remplacent toujours Allow
les instructions, si l'utilisateur essaie de répertorier des clés autres que celles qui ont le
préfixe, la demande est refusée. projects
Politique de compartiment
Si vous ajoutez l'Principal
élément à la politique utilisateur ci-dessus, identifiant l'utilisateur, vous disposez désormais d'une politique de compartiment, comme indiqué dans l'exemple suivant. Pour utiliser cet exemple de politique, remplacez
par vos propres informations.user input
placeholders
{ "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:::", "Condition" : { "StringEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } }, { "Sid":"statement2", "Effect":"Deny", "Principal": { "AWS": "arn:aws:iam::123456789012
:user/bucket-owner
" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::", "Condition" : { "StringNotEquals" : { "s3:prefix": "
amzn-s3-demo-bucket
projects
" } } } ] }
Testez la politique à l'aide du AWS CLI
Vous pouvez tester la politique à l'aide des méthodes suivantes list-object
AWS CLI commande. Dans la commande, vous devez fournir les informations d'identification de l'utilisateur à l'aide du --profile
paramètre. Pour plus d'informations sur la configuration et l'utilisation du AWS CLI, voir Développement avec Amazon S3 à l'aide de la AWS CLI.
aws s3api list-objects --bucket
--prefix
amzn-s3-demo-bucket
projects
--profileAccountA
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 qu'un demandeur peut renvoyer dans un ListObjectsV2 ou ListObjectVersions de la demande. Par défaut, ces API opérations renvoient 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.