Verwenden von Tags zur Steuerung des Zugriffs auf Ressourcen CodePipeline - AWS CodePipeline

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von Tags zur Steuerung des Zugriffs auf Ressourcen CodePipeline

Bedingungen in IAM-Richtlinienanweisungen sind Teil der Syntax, mit der Sie Berechtigungen für Ressourcen angeben, die für Aktionen erforderlich sind. CodePipeline Das Verwenden von Tags in Bedingungen ist eine Möglichkeit zur Kontrolle des Zugriffs auf Ressourcen und Anfragen. Informationen zum Markieren von CodePipeline Ressourcen finden Sie unter. Markieren von Ressourcen Dieses Thema behandelt die Tag-basierte Zugriffskontrolle.

Wenn Sie IAM-Richtlinien entwerfen, können Sie präzise abgestufte Berechtigungen festlegen, indem Sie Zugriff auf bestimmte Ressourcen gewähren. Mit zunehmender Anzahl der Ressourcen, die Sie verwalten, wird diese Aufgabe erschwert. Durch Markieren von Ressourcen und Verwenden von Tags in Richtlinienanweisungsbedingungen lässt sich diese Aufgabe vereinfachen. Sie erteilen Massenzugriff auf eine beliebige Ressource mit einem bestimmten Tag. Anschließend wenden Sie dieses Tag während der Erstellung oder zu einem späteren Zeitpunkt wiederholt auf relevante Ressourcen an.

Markierungen können an die Ressource angehängt oder in der Anfrage an Services übergeben werden, die das Markieren unterstützen. In CodePipeline können Ressourcen Tags haben, und einige Aktionen können Tags enthalten. Wenn Sie eine IAM-Richtlinie erstellen, können Sie Tag-Bedingungsschlüssel verwenden, um Folgendes zu kontrollieren:

  • Welche Benutzer Aktionen für eine Pipeline-Ressource ausführen können, basierend auf den Tags, über die diese bereits verfügt.

  • Welche Tags in der Anforderung einer Aktion übergeben werden können.

  • Ob bestimmte Tag-Schlüssel in einer Anforderung verwendet werden können.

Mit String-Bedingungsoperatoren können Sie Condition-Elemente erstellen, die den Zugriff basierend auf einen Vergleich eines Schlüssels mit einem Zeichenfolgewert einschränken. Sie können am Ende jeder Bedingung einen Operatornamen mit Ausnahme der Null-Bedingung hinzufügenIfExists. Damit geben Sie zum Ausdruck: "Wenn der Richtlinienschlüssel im Anforderungskontext vorhanden ist, wird der Schlüssel den Angaben in der Richtlinie entsprechend verarbeitet. Wenn der Schlüssel nicht vorhanden ist, wird das Bedingungselement als "true" ausgewertet. Sie können z. B. die Einschränkung anhand StringEqualsIfExists von Bedingungsschlüsseln vornehmen, die bei anderen Ressourcentypen möglicherweise nicht vorhanden sind.

Die vollständige Syntax und Semantik der Bedingungsschlüssel für Tags finden Sie unter Zugriffskontrolle mithilfe von Tags. Weitere Informationen zu Bedingungsschlüsseln finden Sie in den folgenden Ressourcen. Die CodePipeline Richtlinienbeispiele in diesem Abschnitt orientieren sich an den folgenden Informationen zu Bedingungsschlüsseln und werden durch Beispiele für Nuancen CodePipeline wie die Verschachtelung von Ressourcen erweitert.

Die folgenden Beispiele zeigen, wie Tag-Bedingungen in Richtlinien für CodePipeline Benutzer angegeben werden.

Beispiel 1: Einschränken von Aktionen basierend auf Tags in der Anforderung

Die Richtlinie für AWSCodePipeline_FullAccess verwaltete Benutzer gibt Benutzern uneingeschränkte Rechte, jede CodePipeline Aktion auf einer beliebigen Ressource auszuführen.

Die folgende Richtlinie schränkt diese Befugnis ein und verweigert nicht autorisierten Benutzern die Erlaubnis, Pipelines zu erstellen, in denen bestimmte Tags in der Anfrage aufgeführt sind. Dazu verweigert es die CreatePipeline-Aktion, wenn die Anforderung ein Tag mit dem Namen Project und einem der Werte ProjectA oder ProjectB festlegt. (Der Bedingungsschlüssel aws:RequestTag wird verwendet, um zu steuern, welche Tags in einer IAM-Anforderung übergeben werden können.)

Im folgenden Beispiel besteht die Absicht der Richtlinie darin, nicht autorisierten Benutzern die Erlaubnis zu verweigern, eine Pipeline mit den angegebenen Tag-Werten zu erstellen. Das Erstellen einer Pipeline erfordert jedoch zusätzlich zu der Pipeline selbst auch den Zugriff auf Ressourcen (z. B. Pipeline-Aktionen und -Phasen). Da in der Richtlinie 'Resource' angegeben'*', wird die Richtlinie anhand jeder Ressource ausgewertet, die über einen ARN verfügt, und wird erstellt, wenn die Pipeline erstellt wird. Diese zusätzlichen Ressourcen verfügen nicht über den Tag-Bedingungsschlüssel, sodass die StringEquals Prüfung fehlschlägt und dem Benutzer nicht die Möglichkeit gewährt wird, eine Pipeline zu erstellen. Um dieses Problem zu beheben, verwenden Sie stattdessen den Bedingungsoperator StringEqualsIfExists. Auf diese Weise findet die Prüfung nur dann statt, wenn der Bedingungsschlüssel existiert.

Sie könnten Folgendes wie folgt lesen: „Wenn die geprüfte Ressource über einen "RequestTag/Project" Tag-Bedingungsschlüssel verfügt, lassen Sie die Aktion nur zu, wenn der Schlüsselwert mit beginntprojectA. Wenn die zu prüfende Ressource nicht über diesen Bedingungsschlüssel verfügt, ist dies belanglos."

Darüber hinaus verhindert die Richtlinie, dass diese nicht autorisierten Benutzer die Ressourcen manipulieren, indem sie den aws:TagKeys Bedingungsschlüssel verwenden, um zu verhindern, dass Aktionen zur Änderung von Tags dieselben Tagwerte enthalten. Der Administrator eines Kunden muss diese IAM-Richtlinie zusätzlich zur Richtlinie für verwaltete Benutzer mit Administratorrechten verknüpfen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEqualsIfExists": { "aws:RequestTag/Project": ["ProjectA", "ProjectB"] } } }, { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
Beispiel 2: Beschränken Sie Tagging-Aktionen auf der Grundlage von Ressourcen-Tags

Die Richtlinie für AWSCodePipeline_FullAccess verwaltete Benutzer gibt Benutzern uneingeschränkte Rechte, jede CodePipeline Aktion auf einer beliebigen Ressource auszuführen.

Die folgende Richtlinie beschränkt diese Befugnis und verweigert nicht autorisierten Benutzern die Berechtigung, Aktionen für bestimmte Projekt-Pipelines auszuführen. Hierfür verweigert sie einige Aktionen, wenn die Ressource über ein Tag mit dem Namen Project und einem der Werte ProjectA oder ProjectB verfügt. (Der Bedingungsschlüssel aws:ResourceTag wird verwendet, um den Zugriff auf die Ressourcen auf der Grundlage der Tags dieser Ressourcen zu steuern.) Der Administrator eines Kunden muss diese IAM-Richtlinie nicht autorisierten IAM-Benutzern hinzufügen, zusätzlich zu der verwalteten Benutzerrichtlinie.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": ["ProjectA", "ProjectB"] } } } ] }
Beispiel 3: Zulassen von Aktionen basierend auf Tags in der Anforderung

Die folgende Richtlinie gewährt Benutzern die Erlaubnis, Entwicklungspipelines in CodePipeline zu erstellen.

Hierfür werden die Aktionen CreatePipeline und TagResource zugelassen, wenn die Anforderung ein Tag mit dem Namen Project und dem Wert ProjectA angibt. Mit anderen Worten, der einzige Tag-Schlüssel, der angegeben werden kannProject, ist, und sein ProjectA Wert muss.

Der aws:RequestTag Bedingungsschlüssel wird verwendet, um zu steuern, welche Tags in einer IAM-Anfrage übergeben werden können. Die Bedingung aws:TagKeys stellt sicher, dass bei Tag-Schlüsseln die Groß- und Kleinschreibung beachtet wird. Diese Richtlinie ist nützlich für Benutzer oder Rollen, denen die Richtlinie für AWSCodePipeline_FullAccess verwaltete Benutzer nicht zugeordnet ist. Die verwaltete Richtlinie gibt Benutzern uneingeschränkte Rechte, jede CodePipeline Aktion auf einer beliebigen Ressource auszuführen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:CreatePipeline", "codepipeline:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/Project": "ProjectA" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }
Beispiel 4: Beschränken Sie die Aktionen zum Entfernen von Tags auf der Grundlage von Ressourcen-Tags

Die Richtlinie für AWSCodePipeline_FullAccess verwaltete Benutzer gibt Benutzern uneingeschränkte Rechte, jede CodePipeline Aktion auf einer beliebigen Ressource auszuführen.

Die folgende Richtlinie beschränkt diese Befugnis und verweigert nicht autorisierten Benutzern die Berechtigung, Aktionen für bestimmte Projekt-Pipelines auszuführen. Hierfür verweigert sie einige Aktionen, wenn die Ressource über ein Tag mit dem Namen Project und einem der Werte ProjectA oder ProjectB verfügt.

Außerdem verhindert die Richtlinie, dass diese nicht autorisierten Benutzer die Ressourcen manipulieren, indem sie mithilfe des aws:TagKeys Bedingungsschlüssels verhindern, dass das Tag vollständig entfernt wirdProject. Der Administrator eines Kunden muss diese IAM-Richtlinie zusätzlich zur Richtlinie für verwaltete Benutzer oder Rollen mit nicht autorisierten Benutzern oder Rollen verknüpfen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "codepipeline:UntagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["Project"] } } } ] }