IAM-JSON-Richtlinienelemente: Resource
Das Resource
-Element in einer IAM-Richtlinienanweisung definiert das Objekt bzw. die Objekte, auf die die Anweisung angewendet wird. Anweisungen müssen entweder ein – Resource
oder ein NotResource
-Element enthalten.
Sie geben eine Ressource mithilfe eines Amazon-Ressourcennamens (ARN) an. Das Format des ARN hängt vom AWS-Service und der spezifischen Ressource ab, auf die Sie sich beziehen. Obwohl das ARN-Format variiert, verwenden Sie immer eine ARN, um eine Ressource zu identifizieren. Weitere Informationen zum Format von ARNs finden Sie unter IAM-ARNs. Weitere Informationen zur Angabe einer Ressource finden Sie in der Dokumentation für den Service, für dessen Ressourcen Sie eine Anweisung definieren.
Anmerkung
Bei einigen AWS-Services ist es nicht möglich, Aktionen für einzelne Ressourcen festzulegen. In diesen Fällen gelten alle Aktionen, die Sie im Action
- oder NotAction
-Element auflisten, für alle Ressourcen in diesem Service. In diesem Fall verwenden Sie das Platzhalterzeichen (*
) im Resource
-Element.
Das folgende Beispiel bezieht sich auf eine bestimmte Amazon SQS-Warteschlange.
"Resource": "arn:aws:sqs:us-east-2:
account-ID-without-hyphens
:queue1"
Das folgende Beispiel bezieht sich auf den IAM-Benutzer mit dem Namen Bob
in einem AWS-Konto.
Anmerkung
Im Resource
-Element ist für den IAM-Benutzernamen die Groß- und Kleinschreibung zu beachten.
"Resource": "arn:aws:iam::
account-ID-without-hyphens
:user/Bob"
Verwenden von Platzhaltern in Ressourcen-ARNs
Sie können Platzhalterzeichen (*
und ?
) innerhalb der einzelnen Segmente einer ARN (die durch Doppelpunkte getrennten Teile) verwenden, um Folgendes darzustellen:
-
Beliebige Kombination von Zeichen (
*
) -
Beliebiges Zeichen (
?
)
Sie können mehrere *
- oder ?
-Zeichen in jedem Segment verwenden. Wenn der Platzhalter *
das letzte Zeichen eines Ressourcen-ARN-Segments ist, kann er erweitert werden, sodass er über die Doppelpunktgrenzen hinaus übereinstimmt. Wir empfehlen die Verwendung von Platzhaltern (*
und ?
) innerhalb von ARN-Segmenten, die durch einen Doppelpunkt getrennt sind.
Anmerkung
Sie können keine Platzhalterzeichen in dem Servicesegment verwenden, welches das AWS-Produkt identifiziert. Weitere Informationen zu ARN-Segmenten finden Sie unter Identifizieren von AWS-Ressourcen mit Amazon Resource Names (ARNs).
Das folgende Beispiel bezieht sich auf alle IAM-Benutzer, deren Pfad /accounting
lautet.
"Resource": "arn:aws:iam::
account-ID-without-hyphens
:user/accounting/*"
Das folgende Beispiel bezieht sich auf alle Elemente in einem spezifischen Amazon S3-Bucket.
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
Das Sternchen (*
) kann erweitert werden, um alles innerhalb eines Segments zu ersetzen, einschließlich Zeichen wie ein Schrägstrich (/
), die andernfalls ein Trennzeichen innerhalb eines bestimmten Service-Namespace zu sein scheinen. Betrachten Sie beispielsweise den folgenden Amazon S3 ARN, da dieselbe Platzhaltererweiterungslogik für alle Dienste gilt.
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
Die Platzhalter im ARN gelten für alle folgenden Objekte im Bucket, nicht nur für das erste aufgelistete Objekt.
amzn-s3-demo-bucket/1/test/object.jpg amzn-s3-demo-bucket/1/2/test/object.jpg amzn-s3-demo-bucket/1/2/test/3/object.jpg amzn-s3-demo-bucket/1/2/3/test/4/object.jpg amzn-s3-demo-bucket/1///test///object.jpg amzn-s3-demo-bucket/1/test/.jpg amzn-s3-demo-bucket//test/object.jpg amzn-s3-demo-bucket/1/test/
Betrachten Sie die letzten beiden Objekte in der vorherigen Liste. Ein Amazon-S3-Objektname kann mit dem herkömmlichen Schrägstrich (/
) als Trennzeichen beginnen oder enden. Während /
als Trennzeichen fungiert, gibt es keine spezifische Bedeutung, wenn dieses Zeichen innerhalb eines Ressourcen-ARN verwendet wird. Es wird wie jedes andere gültige Zeichen behandelt. Der ARN würde nicht mit den folgenden Objekten übereinstimmen:
amzn-s3-demo-bucket/1-test/object.jpg amzn-s3-demo-bucket/test/object.jpg amzn-s3-demo-bucket/1/2/test.jpg
Angabe mehrerer Aktionen oder Ressourcen
Sie können mehrere Ressourcen im Resource
-Element angeben, indem Sie ein ARN-Array verwenden. Das folgende Beispiel bezieht sich auf zwei DynamoDB-Tabellen.
"Resource": [ "arn:aws:dynamodb:us-east-2:
account-ID-without-hyphens
:table/books_table", "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens
:table/magazines_table" ]
Verwenden von Richtlinienvariablen in Ressourcen-ARNs
Im Resource
-Element können Sie JSON-Richtlinienvariablen in dem Teil des ARN verwenden, der die Ressource angibt (d. h. im abschließenden Teil des ARN). Beispielsweise können Sie den Schlüssel {aws:username}
als Teil einer Ressourcen-ARN verwenden, damit der aktuelle Benutzername als Teil des Ressourcennamens aufgenommen wird. Das folgende Beispiel zeigt, wie Sie den Schlüssel {aws:username}
in einem Resource
-Element verwenden können. Die Richtlinie gewährt Zugriff auf eine Amazon DynamoDB-Tabelle, die den Namen des aktuellen Benutzers enthält.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-east-2:
account-id
:table/${aws:username}" } }
Weitere Informationen zu JSON-Richtlinienvariablen finden Sie unter IAM-Richtlinienelemente: Variablen und Tags.