Comment puis-je utiliser des caractères génériques avec un élément principal et un refus explicite dans une politique de compartiment Amazon S3 ?

Lecture de 3 minute(s)
0

Je souhaite utiliser des caractères génériques avec un élément principal et un refus explicite dans une politique de compartiment Amazon Simple Storage Service (Amazon S3).

Brève description

Si vous désirez empêcher l'accès à des compartiments Amazon S3 créés par des entités AWS Identity and Access Management (IAM), vous devez désigner des autorisations spécifiques dans une politique de compartiment. La politique de compartiment doit utiliser un élément NotPrincipal et un refus explicite. Pour en savoir plus, reportez-vous à Spécifier l'élément NotPrincipal avec Deny.

Toutefois, étant donné qu'Amazon S3 ne prend pas en charge les caractères génériques avec l'élément NotPrincipal, vous devez utiliser Principal comme entité cible dans chaque bloc d'instructions. Chaque bloc d'instructions doit également inclure la condition de chaque bloc d'autorisation.

Résolution

Pour commencer, vous devez vérifier que vous disposez des ressources suivantes :

L'exemple suivant utilise des caractères génériques dans aws:userid pour inclure tous les noms transmis par le processus d'appel. Il comprend notamment des caractères génériques pour un ID d'application, de service ou d'instance lorsque les utilisateurs effectuent des appels pour obtenir des informations d'identification temporaires. Pour en savoir plus, reportez-vous à Demande d'informations pouvant être utilisées comme variables de politique. Pour éviter tout blocage, ces exemples incluent l'utilisateur root du compte AWS.

Remarque : vous devez remplacer les exemples de noms par vos propres identifiants de rôle et noms de compartiment.

Voici un exemple complet de politique. Veuillez noter la condition StringNotLike dans le bloc de refus :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::444455556666:role/s3-access-role"
        ]
      },
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::awsexamplebucket1"
    },
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::444455556666:role/s3-access-role"
        ]
      },
      "Action": [
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::awsexamplebucket1/*"
    },
    {
      "Sid": "",
      "Effect": "Deny",
      "Principal": "*",
      "Action": [
        "s3:ListBucket",
        "s3:DeleteObject",
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::awsexamplebucket1/*",
        "arn:aws:s3:::awsexamplebucket1"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:userid": [
            "AROAID2GEXAMPLEROLEID:*",
            "444455556666"
          ]
        }
      }
    }
  ]
}

Informations connexes

Comment restreindre l'accès au compartiment Amazon S3 à un rôle IAM spécifique

Éléments de politique AWS JSON : NotPrincipal

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois