Wie verwende ich Platzhalter mit einem Prinzipal-Element und expliziter Ablehnung in einer Amazon S3-Bucket-Richtlinie?

Lesedauer: 2 Minute
0

Ich möchte Platzhalter mit einem Prinzipal-Element und einer expliziten Ablehnung in einer Amazon Simple Storage Service (Amazon S3)-Bucket-Richtlinie verwenden.

Kurzbeschreibung

Um zu verhindern, dass bestimmte AWS Identity and Access Management (IAM)-Entitäten auf Ihre Amazon S3-Buckets zugreifen, legen Sie in einer Bucket-Richtlinie bestimmte Berechtigungen fest. Die Bucket-Richtlinie muss ein notPrincipal-Element und eine explizite Ablehnung verwenden. Weitere Informationen finden Sie unter Verwenden von NotPrincipal mit Deny.

Da Amazon S3 jedoch keine Platzhalter mit dem NotPrincipal-Element unterstützt, müssen Sie Principal als Zielentität in jedem Anweisungsblock verwenden. Jeder Anweisungsblock muss auch die Bedingung für jeden Zulaufblock enthalten.

Behebung

Stellen Sie zunächst sicher, dass Sie über die folgenden Ressourcen verfügen:

Im folgenden Beispiel werden Platzhalter in aws:userid verwendet, um alle Namen einzuschließen, die der aufrufende Prozess übergibt. Dazu gehören beispielsweise Platzhalter für eine Anwendungs-, Dienst- oder Instanz-ID, wenn Benutzer Aufrufe tätigen, um temporäre Anmeldeinformationen abzurufen. Weitere Informationen finden Sie unter Informationen anfordern, die Sie für Richtlinienvariablen verwenden können. Um eine Aussperrung zu verhindern, umfasst dieses Beispiel den Root-Benutzer des AWS-Kontos.

**Hinweis:**Stellen Sie sicher, dass Sie die Beispielnamen durch Ihre eigenen Rollen-IDs und Bucket-Namen ersetzen.

Hier ist die vollständige Beispielrichtlinie. Beachten Sie die StringNotLike-Bedingung im Deny-Block:

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

Zusammenhängende Informationen

So beschränken Sie den Zugriff auf Amazon S3-Buckets auf eine bestimmte IAM-Rolle

Elemente der AWS-JSON-Richtlinie: NotPrincipal

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 6 Monaten