Come posso usare i caratteri jolly con un elemento Principal e un rifiuto esplicito in una policy di bucket di Amazon S3?

2 minuti di lettura
0

Desidero utilizzare i caratteri jolly con un elemento Principal e un rifiuto esplicito in una policy di bucket di Amazon Simple Storage Service (Amazon S3).

Breve descrizione

Per impedire a determinate entità di AWS Identity and Access Management (IAM) di accedere ai tuoi bucket Amazon S3, indica delle autorizzazioni specifiche in una policy di bucket. La policy di bucket deve utilizzare un elemento NotPrincipal e un rifiuto esplicito. Per ulteriori informazioni, consulta la sezione Specifica di NotPrincipal con rifiuto.

Tuttavia, poiché Amazon S3 non supporta i caratteri jolly con l'elemento NotPrincipal, è necessario utilizzare Principal come entità target in ogni blocco di istruzioni. Ogni blocco di istruzioni deve includere anche la condizione per ogni blocco allow.

Risoluzione

Innanzitutto, assicurati di disporre delle seguenti risorse:

L'esempio seguente utilizza i caratteri jolly in aws:userid per includere tutti i nomi trasmessi dal processo di chiamata. Ciò include, ad esempio, i caratteri jolly per un ID di istanza, applicazione o servizio quando gli utenti effettuano chiamate per ottenere le credenziali temporanee. Per ulteriori informazioni, consulta la sezione Richiesta di informazioni utilizzabili per le variabili di policy. Per evitare il blocco, questo esempio include l'utente root dell'account AWS.

Nota: assicurati di sostituire i nomi dell'esempio con i tuoi ID di ruolo e i nomi bucket.

Ecco l'esempio completo della policy. Nota la condizione StringNotLike nel blocco deny:

{
  "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"
          ]
        }
      }
    }
  ]
}

Informazioni correlate

Come limitare l'accesso a un bucket Amazon S3 a un determinato ruolo IAM

Elementi delle policy JSON AWS: NotPrincipal

AWS UFFICIALE
AWS UFFICIALEAggiornata 6 mesi fa