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 de compartiment utilisant des clés de condition
Vous pouvez utiliser le langage de la politique d’accès 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 politique 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 condition 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 Actions, ressources et clés de condition pour Amazon S3 dans la Référence de l’autorisation de service.
Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez Autorisations requises pour les opérations d’API Amazon S3.
Exemples : clés de condition Amazon S3 pour les opérations d’objet
Les exemples suivants montrent comment utiliser des clés de condition spécifiques à Amazon S3 pour les opérations au niveau des 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 Actions, ressources et clés de condition pour Amazon S3 dans la Référence de l’autorisation de service.
Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez Autorisations requises pour les opérations d’API Amazon S3.
Plusieurs exemples de stratégies montrent comment vous pouvez utiliser des clés de condition avec des opérations PUT Object. Les opérations PUT Object autorisent les entêtes spécifiques à la liste de contrôle d’accès (ACL) que vous pouvez utiliser pour accorder des autorisations basées sur les listes ACL. En utilisant ces clés de condition, vous pouvez définir une condition pour exiger des autorisations d’accès spécifiques lorsque l’utilisateur charge un objet. Vous pouvez également accorder des autorisations basées sur l'ACL lors de l'opération. PutObjectAcl Pour plus d'informations, consultez PutObjectAclle manuel Amazon S3 Amazon Simple Storage Service API Reference. Pour plus d'informations sur ACLs, voirPrésentation de la liste de contrôle d’accès (ACL).
Rubriques
Exemple 1 : Octroyer l’autorisation s3:PutObject
exigeant que les objets soient stockés en utilisant le 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 charger des objets avec cette condition : Jane doit toujours demander le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). L’administrateur du compte A peut utiliser la clé de condition s3:x-amz-server-side-encryption
pour spécifier cette exigence, comme illustré. La paire clé-valeur du bloc Condition
suivant spécifie la clé de condition s3:x-amz-server-side-encryption
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 : Octroyer l’autorisation s3:PutObject
pour 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 des objets uniquement à partir du compartiment source spécifié (par exemple,
)amzn-s3-demo-source-bucket
-
Autoriser la copie d’objets à partir du compartiment source spécifié et uniquement les objets dont le préfixe de nom de clé commence par
(par exemple,public/
)amzn-s3-demo-source-bucket
/public/*
-
Autoriser la copie d’un objet spécifique uniquement à partir du compartiment source (par exemple,
)amzn-s3-demo-source-bucket
/example.jpg
La politique de compartiment suivante accorde à l’utilisateur (
) l’autorisation Dave
s3:PutObject
. Cette politique 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é /
. 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 avec le 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, consultez la section Développement avec Amazon S3 à l'aide de la AWS CLI dans le manuel Amazon S3 API Reference.
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 accorder l’autorisation de copier uniquement un objet spécifique, vous devez remplacer la condition StringNotLike
par 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 : Octroyer l’accès à une version spécifique d’un objet
Supposons que le compte A possède un compartiment pour lequel la gestion des versions est activée. Le compartiment a plusieurs versions de l’objet
. L’administrateur du compte A souhaite maintenant octroyer à l’utilisateur HappyFace.jpg
l’autorisation d’obtenir uniquement une version spécifique de l’objet. Pour ce faire, l’administrateur du compte octroie à Dave
l’autorisation Dave
s3:GetObjectVersion
de manière conditionnelle, comme indiqué dans l’exemple suivant. La paire de clé-valeur dans le bloc Condition
spécifie la clé de condition s3:VersionId
. Dans ce cas, pour récupérer l’objet à partir du compartiment spécifié pour lequel la gestion des versions est activée,
doit connaître l’ID exact de la version 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 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:::
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 avec le AWS CLI
Vous pouvez tester les autorisations définies dans cette politique en utilisant la AWS CLI get-object
commande associée au --version-id
paramètre pour identifier la version d'objet spécifique à récupérer. Cette 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 basées sur 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, consultez Stratégies de balisage et de contrôle d’accès.
Exemple 5 : Restriction de l’accès par l’ID de Compte AWS du propriétaire du compartiment
Vous pouvez utiliser la clé de s3:ResourceAccount
condition aws:ResourceAccount
ou pour écrire des politiques de point de terminaison IAM ou de 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 identifiant spécifique. Compte AWS Vous pouvez utiliser cette clé de condition pour empêcher des clients de votre VPC d’accéder aux compartiments dont vous n’êtes pas 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 clé aws:ResourceAccount
ou s3:ResourceAccount
dans votre politique IAM risque également d’avoir un impact sur l’accès à ces ressources. Pour plus d’informations, consultez 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 compartiments utilisés par Amazon ECR dans le Guide de l’utilisateur Amazon ECR
-
Fournissez l'accès requis à Systems Manager pour les buckets Amazon S3 AWS gérés dans le Guide AWS Systems Manager
Pour plus d’informations sur les clés de condition aws:ResourceAccount
et s3:ResourceAccount
, et pour obtenir des exemples illustrant leur utilisation, consultez Limiter l’accès aux compartiments Amazon S3 détenus par des Comptes AWS spécifiques
Exemple 6 : Exiger une version minimale de TLS
Vous pouvez utiliser la clé de condition s3:TlsVersion
afin d’écrire des politiques IAM, des politiques de point de terminaison de cloud privé virtuel (VPC) ou des politiques de compartiment pour restreindre l’accès des utilisateurs ou des applications aux compartiments Amazon S3 en fonction de la version TLS utilisée par le client. Vous pouvez utiliser cette clé de condition pour écrire des stratégies qui nécessitent une version TLS minimale.
Cet exemple de politique de compartiment refuse les demandes PutObject
des clients dont la version TLS est infé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
Cet exemple de politique de compartiment autorise les demandes PutObject
des clients dont la version TLS est supérieure à 1.1, par exemple 1.2, 1.3 ou plus :
{ "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 principaux d’une instruction Deny
La politique de compartiment suivante refuse l’accès s3:GetObject
au compartiment
, à l’exception des principaux possédant le numéro de compte amzn-s3-demo-bucket
. Pour utiliser cet exemple de politique, remplacez 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
Exemple 8 : obliger les clients à télécharger des objets de manière conditionnelle en fonction des noms de clés des objets ou ETags
Avec les écritures conditionnelles, vous pouvez ajouter un en-tête supplémentaire à vos demandes WRITE
afin de spécifier les conditions préalables à une opération S3. Cet en-tête spécifie une condition qui, si elle n’est pas remplie, entraînera l’échec de l’opération S3. Par exemple, vous pouvez empêcher le remplacement de données existantes en confirmant qu’aucun objet portant le même nom de clé ne se trouve déjà dans votre compartiment lors du chargement de l’objet. Vous pouvez également vérifier la balise d'entité (ETag) d'un objet dans Amazon S3 avant d'écrire un objet.
Pour obtenir des exemples de politiques de compartiment qui utilisent les conditions d’une politique de compartiment pour appliquer les écritures conditionnelles, consultez Application d’écritures conditionnelles sur des compartiments Amazon S3.
Exemples : clés de condition Amazon S3 pour les opérations sur les compartiments
Cette section fournit des exemples de politiques qui vous montrent comment utiliser des clés de condition spécifiques à Amazon S3 pour les opérations au niveau des compartiments.
Rubriques
Exemple 1 : Accorder une autorisation s3:GetObject
assortie d’une condition au niveau d’une adresse IP
Vous pouvez autoriser les utilisateurs authentifiés à utiliser l’action s3:GetObject
si la demande émane d’une plage d’adresses IP spécifique (par exemple,
), à l’exception de l’adresse IP que vous souhaitez exclure (par exemple, 192.0.2.*
). Dans le bloc 192.0.2.188
Condition
, les éléments IpAddress
et NotIpAddress
sont des conditions. Chacune est associée à une paire clé-valeur pour évaluation. Les deux paires clé-valeur de cet exemple utilisent la touche aws:SourceIp
AWS large. Pour utiliser cet exemple de politique, remplacez
par vos propres informations.user input placeholders
Note
Les valeurs de clé IPAddress
et NotIpAddress
spécifiées dans le bloc Condition
utilisent la notation CIDR comme décrit dans RFC 4632. Pour plus d'informations, consultez http://www.rfc-editor. org/rfc/rfc
{ "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 générales dans les politiques Amazon S3. Par exemple, vous pouvez spécifier les clés de condition aws:SourceVpce
et aws:SourceVpc
dans les stratégies de compartiment pour les points de terminaison de VPC. Pour plus d’exemples, consultez Contrôle de l’accès à partir des points de terminaison d’un VPC avec des stratégies de compartiment.
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 prises en charge pour Amazon S3, consultez Actions, ressources et clés de condition pour Amazon S3 dans la Référence de l’autorisation de service.
Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez Autorisations requises pour les opérations d’API 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 ListObjectsV2Opération d'API permettant de saisir des noms avec un préfixe spécifique. Si vous êtes le propriétaire du compartiment, vous pouvez utiliser cette clé de condition pour restreindre un utilisateur afin qu’il ne puisse répertorier que le contenu d’un préfixe spécifique dans le compartiment. La clé de condition s3:prefix
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 ; l’API Amazon S3 ne prend en charge que les compartiments et les objets. Par exemple, si vous avez deux objets avec les noms de clés
et public/object1.jpg
, la console affiche ces objets dans le dossier public/object2.jpg
. Dans l’API Amazon S3, il s’agit d’objets avec des préfixes, pas 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. Ainsi, le propriétaire du compartiment peut utiliser une politique de compartiment ou une politique utilisateur. Pour plus d'informations sur les autres clés de condition que vous pouvez utiliser avec l'opération ListObjectsV2
d'API, voir ListObjectsV2.
Note
Si la gestion des versions est activée pour le compartiment et si vous souhaitez répertorier les objets dans ce compartiment, vous devez accorder l’autorisation s3:ListBucketVersions
dans les politiques suivantes, au lieu de l’autorisation s3:ListBucket
. L’autorisation s3:ListBucketVersions
prend également en charge la clé de condition s3:prefix
.
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’instruction Condition
restreint l’utilisateur pour qu’il ne puisse répertorier que les clés d’objet comportant le préfixe
. L’instruction projects
Deny
explicite ajoutée refuse la demande de l’utilisateur de répertorier les clés avec un autre préfixe, quelles que soient les autres autorisations dont dispose cet 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 politique utilisateur précédente ou via une politique de compartiment. Comme les instructions Deny
explicites ont toujours la priorité sur les instructions Allow
, si l’utilisateur essaie de répertorier des clés autres que celles qui ont le préfixe
, la demande sera refusée. projects
Politique de compartiment
Si vous ajoutez l’élément Principal
à la politique utilisateur ci-dessus, identifiant l’utilisateur, vous avez maintenant 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 avec le 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, consultez la section Développement avec Amazon S3 à l'aide de la AWS CLI dans le manuel Amazon S3 API Reference.
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, les opérations d’API renvoient jusqu’à 1 000 clés. Pour obtenir la liste des opérateurs de conditions numériques que vous pouvez utiliser avec s3:max-keys
et les exemples qui les accompagnent, consultez Opérateurs de conditions numériques dans le Guide de l’utilisateur IAM.