Exemples de politiques relatives aux compartiments utilisant des clés de condition - Amazon Simple Storage Service

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).

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 user input placeholders par vos propres informations.

aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin

Exemple 2 : Octroi de s3:PutObject l'autorisation de copier des objets avec une restriction sur la source de copie

Dans une demande d'PUTobjet, 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 public/ (par exemple,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:PutObjectautorisation à un utilisateur (Dave). Cette politique lui permet de copier des objets uniquement à condition que la demande inclue l's3:x-amz-copy-sourceen-tête et que la valeur de l'en-tête spécifie le préfixe du nom de la /amzn-s3-demo-source-bucket/public/* clé. Pour utiliser cet exemple de politique, remplacez user input placeholders par vos propres informations.

{ "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:::amzn-s3-demo-source-bucket/*" }, { "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*", "Condition": { "StringNotLike": { "s3:x-amz-copy-source": "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-objectcommande. 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 Dave informations d'identification de l'utilisateur à l'aide du --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 user input placeholders par vos propres informations.

aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg --copy-source amzn-s3-demo-source-bucket/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 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 user input placeholders par vos propres informations.

"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 HappyFace.jpg. L'administrateur du compte A souhaite désormais autoriser l'utilisateur Dave à obtenir uniquement une version spécifique de l'objet. L'administrateur du compte peut y parvenir en accordant l's3:GetObjectVersionautorisation à Dave l'utilisateur de manière conditionnelle, comme illustré 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 depuis le compartiment activé pour la gestion des versions spécifié, vous devez connaître Dave l'ID de version exact de l'objet. Pour utiliser cet exemple de politique, remplacez user input placeholders par vos propres informations.

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-objectcommande 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 OutputFile.jpg fichier.

aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave

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 :

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 dans le .AWS Blog sur le stockage.

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 user input placeholders par vos propres informations.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericLessThan": { "s3:TlsVersion": 1.2 } } } ] }

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:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ], "Condition": { "NumericGreaterThan": { "s3:TlsVersion": 1.1 } } } ] }

Exemple 7 : Exclure certains principes d'une déclaration Deny

La politique de compartiment suivante interdit l's3:GetObjectaccès auamzn-s3-demo-bucket, sauf aux principaux détenteurs du numéro de compte 123456789012. Pour utiliser cet exemple de politique, remplacez-le user input placeholders par vos propres informations.

{ "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.

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:GetObjectaction si la demande provient d'une plage spécifique d'adresses IP (par exemple,192.0.2.*), sauf si l'adresse IP est une adresse que vous souhaitez exclure (par exemple,192.0.2.188). Dans le 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 user input placeholders par vos propres informations.

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:::amzn-s3-demo-bucket/*", "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 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 public/object1.jpg and public/object2.jpg, la console affiche les objets situés sous le public 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.

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'ListObjectsV2APIopé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:ListBucketVersionsautorisation conformément aux politiques suivantes, au lieu de l's3:ListBucketautorisation. L's3:ListBucketVersionsautorisation prend également en charge la clé de s3:prefix condition.

Stratégie utilisateur

La politique utilisateur suivante octroie l's3:ListBucketautorisation (voir ListObjectsV2) avec une Condition instruction qui demande à l'utilisateur de spécifier un préfixe dans la demande avec une valeur deprojects. Pour utiliser cet exemple de politique, remplacez user input placeholders par vos propres informations.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"statement1", "Effect":"Allow", "Action": "s3:ListBucket", "Resource":"arn:aws:s3:::amzn-s3-demo-bucket", "Condition" : { "StringEquals" : { "s3:prefix": "projects" } } }, { "Sid":"statement2", "Effect":"Deny", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket", "Condition" : { "StringNotEquals" : { "s3:prefix": "projects" } } } ] }

L'Conditioninstruction limite l'utilisateur à ne répertorier que les clés d'objet comportant le projects préfixe. La 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 projects préfixe, la demande est refusée.

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 user input placeholders par vos propres informations.

{ "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:::amzn-s3-demo-bucket", "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:::amzn-s3-demo-bucket", "Condition" : { "StringNotEquals" : { "s3:prefix": "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 amzn-s3-demo-bucket --prefix projects --profile AccountA

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.