Je souhaite utiliser des politiques Gestion des identités et des accès AWS (AWS IAM) avec un contrôle d'accès basé sur des balises afin de restreindre l'accès aux objets d'un compartiment Amazon Simple Storage Service (Amazon S3).
Résolution
Les politiques suivantes sont des exemples de la manière dont vous pouvez utiliser des balises d'objet pour contrôler l'accès aux objets d’un compartiment Amazon S3.
Remarque :
- Dans les exemples de politiques suivants, vous devez remplacer awsexamplebucket par le nom de votre compartiment S3. Remplacez également les clés de balise CreationDate, Owner, security et environment par vos clés de balise.
- L'API CreateBucket ne prend pas en charge les balises.
- Utilisez l'API PutBucketTagging pour ajouter des balises au compartiment que vous créez.
- Amazon S3 prend en charge l'autorisation basée sur des balises pour les ressources d'objets uniquement.
Utilisation d’une politique basée sur l'identité pour permettre à un utilisateur de lire uniquement les objets dotés d'une balise et d'une valeur clé spécifiques
La politique basée sur l'identité suivante accorde l'autorisation s3:GetObject au compartiment awsexamplebucket1 et à l’ensemble des objets qu'il contient. La politique utilise la condition s3:ExistingObjectTag pour restreindre l'accès aux seuls objets présentant la paire clé-valeur security: public :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/security": "public"
}
}
}
]
}
Utilisation d’une politique basée sur l'identité pour restreindre les clés de balise d'objet que les utilisateurs peuvent ajouter
La politique basée sur l'identité suivante limite les clés de balise que les utilisateurs peuvent ajouter aux objets du compartiment awsexamplebucket. Les utilisateurs peuvent uniquement ajouter des balises à l'aide des clés Owner ou CreationDate. Le contrôle des clés de balise que les utilisateurs peuvent ajouter aux objets permet de maintenir un schéma de balisage cohérent pour les objets du compartiment :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:PutObjectTagging",
"Resource": "arn:aws:s3:::awsexamplebucket1/*",
"Condition": {
"ForAllValues:StringLike": {
"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
}
}
}
]
}
Utilisation d’une politique de compartiment pour permettre à un utilisateur de lire uniquement les objets dotés d'une balise et d'une clé spécifiques
La politique de compartiment suivante permet à un utilisateur de lire uniquement les objets présentant la paire clé-valeur environment: production. La politique utilise la clé de condition s3:ExistingObjectTag pour spécifier la paire clé-valeur :
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/JohnDoe"
]
},
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": "arn:aws:s3:::awsexamplebucket/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/environment": "production"
}
}
}
]
}
Utilisation d’une politique de compartiment pour restreindre les clés de balise d'objet que les utilisateurs peuvent ajouter à un objet
La politique de compartiment suivante limite les clés de balise que les utilisateurs peuvent ajouter aux objets du compartiment awsexamplebucket. Les utilisateurs peuvent uniquement ajouter des balises à l'aide des clés Owner ou CreationDate. Le contrôle des clés de balise que les utilisateurs peuvent ajouter aux objets permet de maintenir un schéma de balisage cohérent pour les objets du compartiment :
{
"Version": "2012-10-17",
"Statement": [
{
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/JohnDoe"
]
},
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": [
"arn:aws:s3:::awsexamplebucket*"
],
"Condition": {
"ForAllValues:StringEquals": {
"s3:RequestObjectTagKeys": [
"Owner",
"CreationDate"
]
}
}
}
]
}