Selbstverwaltete Berechtigungen erteilen - AWS CloudFormation

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.

Selbstverwaltete Berechtigungen erteilen

Dieses Thema enthält Anweisungen zum Erstellen der IAM Servicerollen, die für die kontenübergreifende Bereitstellung und AWS-Regionen mit selbstverwalteten Berechtigungen erforderlich sind. StackSets Diese Rollen sind erforderlich, um eine vertrauenswürdige Beziehung zwischen dem Konto, von dem aus Sie das Stack-Set verwalten, und dem Konto, für das Sie Stack-Instances bereitstellen, herzustellen. Mithilfe dieses Berechtigungsmodells StackSets können Sie die Bereitstellung für alle AWS-Konto Benutzer durchführen, für die Sie über die erforderlichen Berechtigungen zum Erstellen einer IAM Rolle verfügen.

Informationen zur Verwendung von vom Dienst verwalteten Berechtigungen finden Sie Aktivieren Sie den vertrauenswürdigen Zugriff für Stack-Sets mit Organizations stattdessen unter.

Übersicht über selbstverwaltete Berechtigungen

Bevor Sie ein Stack-Set mit selbstverwalteten Berechtigungen erstellen, müssen Sie in jedem Konto IAM Servicerollen erstellt haben.

Die grundlegenden Schritte sind:

  1. Ermitteln Sie, welches AWS Konto das Administratorkonto ist.

    Stack-Sets werden in diesem Administratorkonto erstellt. Ein Zielkonto ist das Konto, in dem Sie einzelne Stacks erstellen, die einem Stack-Set angehören.

  2. Legen Sie fest, wie Sie Berechtigungen für die Stack-Sets strukturieren möchten:

    Die einfachste (und umfangreichste) Berechtigungskonfiguration sieht vor, dass Sie allen Benutzern und Gruppen im Administratorkonto die Möglichkeit zum Erstellen und Aktualisieren sämtlicher Stack-Sets einräumen, die über dieses Konto verwaltet werden. Wenn Sie eine feinere Kontrolle benötigen, können Sie Berechtigungen einrichten, die Folgendes angeben:

    • Welche Benutzer und Gruppen Stack-Set-Operationen in welchen Zielkonten erstellen können

    • Welche Ressourcen Benutzer und Gruppen in ihre Stack-Sets einschließen können

    • Welche Stack-Set-Operationen bestimmte Benutzer und Gruppen ausführen können

  3. Erstellen Sie die erforderlichen IAM Servicerollen in Ihren Administrator- und Zielkonten, um die gewünschten Berechtigungen zu definieren.

    Konkret handelt es sich bei den beiden erforderlichen Rollen um:

    • AWSCloudFormationStackSetAdministrationRole— Diese Rolle wird für das Administratorkonto bereitgestellt.

    • AWSCloudFormationStackSetExecutionRole— Diese Rolle wird für alle Konten bereitgestellt, in denen Sie Stack-Instances erstellen.

Erteilen Sie allen Benutzern des Administratorkontos die Berechtigung, Stacks in allen Zielkonten zu verwalten

In diesem Abschnitt erfahren Sie, wie Sie Berechtigungen einrichten, damit alle Benutzer und Gruppen des Administratorkontos Stack-Set-Operationen in allen Zielkonten ausführen können. Er führt Sie durch die Erstellung der erforderlichen IAM Servicerollen in Ihren Administrator- und Zielkonten. Jeder Benutzer des Administratorkontos kann dann alle Stacks in allen Zielkonten erstellen, aktualisieren oder löschen.

Durch diese Strukturierung von Berechtigungen geben Benutzer beim Erstellen oder Aktualisieren von Stack-Sets keine Administratorrolle weiter.

Jeder Benutzer im Administratorkonto kann dann nach dem Einrichten einer Vertrauensbeziehung ein beliebiges Stack-Set in Zielkonten erstellen.
Administrator account

Erstellen Sie im Administratorkonto eine IAM Rolle mit dem Namen AWSCloudFormationStackSetAdministrationRole.

Sie können dies tun, indem Sie einen Stack aus der CloudFormation Vorlage erstellen, die unter https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetAdministrationRole.yml verfügbar ist.

Beispiel für eine Berechtigungsrichtlinie

Die mit der vorherigen Vorlage erstellte Administratorrolle umfasst die folgende Berechtigungsrichtlinie.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole" ], "Effect": "Allow" } ] }
Beispiel für eine Vertrauensrichtlinie 1

Die vorherige Vorlage enthält auch die folgende Vertrauensrichtlinie, die dem Dienst die Berechtigung erteilt, die Administratorrolle und die mit der Rolle verknüpften Berechtigungen zu verwenden.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Beispiel für eine Vertrauensrichtlinie 2

Um Stack-Instances in einem Zielkonto bereitzustellen, das sich in einer Region befindet, die standardmäßig deaktiviert ist, müssen Sie auch den regionalen Dienstprinzipal für diese Region angeben. Jede standardmäßig deaktivierte Region verfügt über einen eigenen regionalen Service-Prinzipal.

Das folgende Beispiel für eine Vertrauensrichtlinie gewährt dem Dienst die Erlaubnis, die Administratorrolle in der Region Asien-Pazifik (Hongkong) (ap-east-1) zu verwenden, einer Region, die standardmäßig deaktiviert ist.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "cloudformation.amazonaws.com", "cloudformation.ap-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Weitere Informationen finden Sie unter Ausführen von Stackset-Operationen mit Regionen, die standardmäßig deaktiviert sind. Eine Liste der Regionscodes finden Sie im AWS Allgemeinen Referenzhandbuch unter Regionale Endpunkte.

Target accounts

Erstellen Sie in jedem Zielkonto eine Servicerolle mit dem Namen AWSCloudFormationStackSetExecutionRole, dass dem Administratorkonto vertraut. Die Rolle muss genau diesen Namen haben. Sie können dies tun, indem Sie einen Stack aus der CloudFormation Vorlage erstellen, die unter https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/AWSCloudFormationStackSetExecutionRole.yml verfügbar ist. Wenn Sie diese Vorlage verwenden, werden Sie aufgefordert, die Konto-ID des Administratorkontos anzugeben, zu dem Ihr Zielkonto eine Vertrauensbeziehung haben muss.

Wichtig

Beachten Sie, dass diese Vorlage Administratorzugriff gewährt. Nachdem Sie die Vorlage verwendet haben, um eine Ausführungsrolle für ein Zielkonto zu erstellen, müssen Sie die Berechtigungen in der Richtlinienanweisung auf die Ressourcentypen beschränken, die Sie verwenden StackSets.

Für die Servicerolle des Zielkontos sind Berechtigungen erforderlich, um alle in Ihrer CloudFormation Vorlage angegebenen Vorgänge ausführen zu können. Wenn Ihre Vorlage beispielsweise einen S3-Bucket erstellt, benötigen Sie Berechtigungen zum Erstellen neuer Objekte für S3. Ihr Zielkonto benötigt immer volle CloudFormation Berechtigungen, zu denen auch Berechtigungen zum Erstellen, Aktualisieren, Löschen und Beschreiben von Stacks gehören.

Beispiel für eine Berechtigungsrichtlinie 1

Die mit dieser Vorlage erstellte Rolle aktiviert die folgende Richtlinie in einem Zielkonto.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" } ] }
Beispiel für eine Berechtigungsrichtlinie 2

Das folgende Beispiel zeigt eine Richtlinienanweisung mit den Mindestberechtigungen für StackSets die Arbeit. Um Stapel in Zielkonten zu erstellen, die Ressourcen von anderen Diensten als verwenden CloudFormation, müssen Sie diese Dienstaktionen und Ressourcen zur AWSCloudFormationStackSetExecutionRoleRichtlinienerklärung für jedes Zielkonto hinzufügen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ] }
Beispiel für eine Vertrauensrichtlinie

Die folgende Vertrauensbeziehung wird durch die Vorlage erstellt. Die ID des Administratorkontos wird als angezeigt admin_account_id.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:root" }, "Action": "sts:AssumeRole" } ] }

Sie können die Vertrauensbeziehung einer vorhandenen Ausführungsrolle für ein Zielkonto so konfigurieren, dass sie einer bestimmten Rolle im Administratorkonto vertraut. Wenn Sie die Rolle im Administratorkonto löschen und eine neue erstellen, um sie zu ersetzen, müssen Sie die Vertrauensbeziehungen Ihres Zielkontos mit der neuen Administratorkontorolle konfigurieren, dargestellt durch admin_account_id im vorherigen Beispiel.

Einrichten von erweiterten Berechtigungsoptionen für Operationen für Stack-Sets

Wenn Sie eine genauere Kontrolle über die Stack-Sets benötigen, die Benutzer und Gruppen über ein einziges Administratorkonto erstellen, können Sie mithilfe von IAM Rollen Folgendes angeben:

  • Welche Benutzer und Gruppen Stack-Set-Operationen in welchen Zielkonten erstellen können

  • Welche Ressourcen Benutzer und Gruppen in ihre Stack-Sets einschließen können

  • Welche Stack-Set-Operationen bestimmte Benutzer und Gruppen ausführen können

Steuern Sie, welche Benutzer Stack-Set-Operationen in bestimmten Zielkonten ausführen können

Verwenden Sie benutzerdefinierte Administratorrollen, um zu steuern, welche Benutzer und Gruppen Stack-Set-Operationen in welchen Zielkonten ausführen können. Sie können steuern, welche Benutzer des Administratorkontos Stack-Set-Operationen in bestimmten Zielkonten ausführen können. Zu diesem Zweck erstellen Sie eine Vertrauensbeziehung zwischen jedem Zielkonto und einer bestimmten benutzerdefinierten Administratorrolle, anstatt die AWSCloudFormationStackSetAdministrationRoleServicerolle im Administratorkonto selbst zu erstellen. Dann erteilen Sie bestimmten Benutzern und Gruppen die Berechtigung, die benutzerdefinierte Administratorrolle beim Ausführen von Stack-Set-Vorgängen in einem bestimmten Zielkonto zu verwenden.

Sie können beispielsweise in Ihrem Administratorkonto die Rollen A und B erstellen. Rolle A erhält die Berechtigung zum Zugriff auf Zielkonto 1 über Konto 8. Rolle B erhält die Berechtigung zum Zugriff auf Zielkonto 9 über Konto 16.

Eine Vertrauensbeziehung zwischen einer benutzerdefinierten Administratorrolle und Zielkonten, die es Benutzern ermöglicht, ein Stack-Set zu erstellen.

Das Einrichten der erforderlichen Berechtigungen umfasst die Definition einer benutzerdefinierten Administratorrolle, die Erstellung einer Servicerolle für das Zielkonto und die Erteilung der Erlaubnis, den Benutzern die benutzerdefinierte Administratorrolle bei der Ausführung von Stackset-Vorgängen zu übergeben.

Im Allgemeinen funktioniert das wie folgt, sobald Sie über die erforderlichen Berechtigungen verfügen: Beim Erstellen eines Stack-Sets muss der Benutzer eine benutzerdefinierte Administratorrolle angeben. Der Benutzer muss über die Berechtigung verfügen, die Rolle an ihn weiterzugeben CloudFormation. Darüber hinaus muss die benutzerdefinierte Administratorrolle über eine Vertrauensbeziehung zu den für das Stack-Set angegebenen Zielkonten verfügen. CloudFormation erstellt das Stack-Set und ordnet ihm die benutzerdefinierte Administratorrolle zu. Beim Aktualisieren eines Stack-Sets muss der Benutzer explizit eine benutzerdefinierte Administratorrolle angeben, auch wenn es sich um dieselbe benutzerdefinierte Administratorrolle handelt, die zuvor für dieses Stack-Set verwendet wurde. CloudFormation verwendet diese Rolle, um den Stack zu aktualisieren, sofern die oben genannten Anforderungen erfüllt sind.

Administrator account
Beispiel für eine Berechtigungsrichtlinie

Erstellen Sie für jedes Stack-Set eine benutzerdefinierte Administratorrolle mit der Berechtigung, die Ausführungsrolle des Zielkontos zu übernehmen.

Der Name der Ausführungsrolle für das Zielkonto muss in jedem Zielkonto identisch sein. Wenn der Rollenname lautet AWSCloudFormationStackSetExecutionRole, wird er automatisch StackSets verwendet, wenn ein Stack-Set erstellt wird. Wenn Sie einen benutzerdefinierten Rollennamen angeben, müssen Benutzer den Namen der Ausführungsrolle angeben, wenn sie ein Stack-Set erstellen.

Erstellen Sie eine IAMServicerolle mit einem benutzerdefinierten Namen und der folgenden Berechtigungsrichtlinie. In den folgenden Beispielen custom_execution_role bezieht sich auf die Ausführungsrolle in den Zielkonten.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::target_account_id:role/custom_execution_role" ], "Effect": "Allow" } ] }

Um mehrere Konten in einem einzigen Kontoauszug anzugeben, trennen Sie sie durch Kommas.

"Resource": [ "arn:aws:iam::target_account_id_1:role/custom_execution_role", "arn:aws:iam::target_account_id_2:role/custom_execution_role" ]

Sie können alle Zielkonten angeben, indem Sie anstelle einer Konto-ID einen Platzhalter (*) verwenden.

"Resource": [ "arn:aws:iam::*:role/custom_execution_role" ]
Beispiel für Vertrauensrichtlinie 1

Sie müssen eine Vertrauensrichtlinie für die Servicerolle angeben, um zu definieren, welche IAM Prinzipale die Rolle übernehmen können.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Beispiel für eine Vertrauensrichtlinie 2

Um Stack-Instances in einem Zielkonto bereitzustellen, das sich in einer Region befindet, die standardmäßig deaktiviert ist, müssen Sie auch den regionalen Dienstprinzipal für diese Region angeben. Jede standardmäßig deaktivierte Region verfügt über einen eigenen regionalen Service-Prinzipal.

Das folgende Beispiel für eine Vertrauensrichtlinie gewährt dem Dienst die Erlaubnis, die Administratorrolle in der Region Asien-Pazifik (Hongkong) (ap-east-1) zu verwenden, einer Region, die standardmäßig deaktiviert ist.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "cloudformation.amazonaws.com", "cloudformation.ap-east-1.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Weitere Informationen finden Sie unter Ausführen von Stackset-Operationen mit Regionen, die standardmäßig deaktiviert sind. Eine Liste der Regionscodes finden Sie im AWS Allgemeinen Referenzhandbuch unter Regionale Endpunkte.

Beispiel für eine Pass-Rollenrichtlinie

Sie benötigen außerdem eine IAM Berechtigungsrichtlinie für Ihre IAM Benutzer, die es dem Benutzer ermöglicht, die benutzerdefinierte Administratorrolle zu übergeben, wenn er Stack-Set-Operationen ausführt. Weitere Informationen finden Sie unter Erteilen von Benutzerberechtigungen zur Übergabe einer Rolle an einen AWS -Service.

Im folgenden Beispiel customized_admin_role bezieht sich auf die Administratorrolle, die der Benutzer bestehen muss.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/customized_admin_role" } ] }
Target accounts

Erstellen Sie in jedem Zielkonto eine Servicerolle, die der benutzerdefinierten Administratorrolle vertraut, die Sie mit diesem Konto verwenden möchten.

Für die Zielkontorolle sind Berechtigungen erforderlich, um alle in Ihrer CloudFormation Vorlage angegebenen Vorgänge ausführen zu können. Wenn Ihre Vorlage beispielsweise einen S3-Bucket erstellt, benötigen Sie Berechtigungen zum Erstellen neuer Objekte in S3. Ihr Zielkonto benötigt immer volle CloudFormation Berechtigungen, zu denen auch Berechtigungen zum Erstellen, Aktualisieren, Löschen und Beschreiben von Stacks gehören.

Der Rollenname des Zielkontos muss in jedem Zielkonto identisch sein. Wenn der Rollenname lautet AWSCloudFormationStackSetExecutionRole, wird er automatisch StackSets verwendet, wenn ein Stack-Set erstellt wird. Wenn Sie einen benutzerdefinierten Rollennamen angeben, müssen Benutzer den Namen der Ausführungsrolle angeben, wenn sie ein Stack-Set erstellen.

Beispiel für eine Berechtigungsrichtlinie

Das folgende Beispiel zeigt eine Richtlinienanweisung mit den Mindestberechtigungen für StackSets die Arbeit. Um Stacks in Zielkonten zu erstellen, die Ressourcen von anderen Diensten als verwenden CloudFormation, müssen Sie diese Dienstaktionen und Ressourcen zur Berechtigungsrichtlinie hinzufügen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" } ] }
Beispiel für eine Vertrauensrichtlinie

Sie müssen die folgende Vertrauensrichtlinie angeben, wenn Sie die Rolle zur Definition der Vertrauensbeziehung erstellen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:role/customized_admin_role" }, "Action": "sts:AssumeRole" } ] }

Steuern Sie die Ressourcen, die Benutzer in bestimmte Stack-Sets aufnehmen können

Verwenden Sie benutzerdefinierte Ausführungsrollen, um zu steuern, welche Stack-Ressourcen Benutzer und Gruppen in ihre Stack-Sets aufnehmen können. Sie können beispielsweise eine Gruppe einrichten, die nur Amazon S3-bezogene Ressourcen in die Stack-Sets aufnehmen können, die sie erstellen, während für ein anderes Team nur DynamoDB-Ressourcen erlaubt sind. Zu diesem Zweck erstellen Sie eine Vertrauensbeziehung zwischen der benutzerdefinierten Administratorrolle für jede Gruppe und einer benutzerdefinierten Ausführungsrolle für jeden Satz von Ressourcen. Die benutzerdefinierte Ausführungsrolle definiert, welche Stack-Ressourcen in Stack-Sets aufgenommen werden können. Die benutzerdefinierte Administratorrolle befindet sich im Administratorkonto, während sich die benutzerdefinierte Ausführungsrolle in jedem Zielkonto befindet, in dem Sie Stacksets mithilfe der definierten Ressourcen erstellen möchten. Dann erteilen Sie bestimmten Benutzern und Gruppen die Berechtigung, die benutzerdefinierte Administratorrolle beim Ausführen von Stack-Set-Vorgängen zu aktivieren.

Sie können beispielsweise benutzerdefinierte Administratorrollen A, B und C im Administratorkonto erstellen. Benutzer und Gruppen mit der Berechtigung zum Verwenden von Rolle A können Stack-Sets mit den Stack-Ressourcen erstellen, die speziell in der benutzerdefinierten Ausführungsrolle X, jedoch nicht in der Rolle Y oder Z oder einer Ressource aufgelistet sind, die nicht in einer Ausführungsrolle enthalten ist.

Eine Vertrauensbeziehung zwischen einer benutzerdefinierten Administratorrolle und einer benutzerdefinierten Ausführungsrolle in Zielkonten, sodass Benutzer ein Stack-Set erstellen können.

Bei der Aktualisierung eines Stack-Sets muss der Benutzer explizit eine benutzerdefinierte Administratorrolle angeben, auch wenn es sich um dieselbe benutzerdefinierte Administratorrolle handelt, die zuvor für dieses Stack-Set verwendet wurde. CloudFormation führt das Update mit der angegebenen benutzerdefinierten Administratorrolle durch, sofern der Benutzer berechtigt ist, Operationen an diesem Stack-Set durchzuführen.

Entsprechend kann der Benutzer auch eine benutzerdefinierte Ausführungsrolle angeben. Wenn sie eine benutzerdefinierte Ausführungsrolle angeben, CloudFormation verwendet diese Rolle, um den Stack zu aktualisieren, sofern die oben genannten Anforderungen erfüllt sind. Wenn der Benutzer keine benutzerdefinierte Ausführungsrolle angibt, CloudFormation führt er das Update unter Verwendung der benutzerdefinierten Ausführungsrolle durch, die zuvor dem Stack-Set zugeordnet war, sofern der Benutzer berechtigt ist, Operationen an diesem Stack-Set auszuführen.

Administrator account

Erstellen Sie eine benutzerdefinierte Administratorrolle in Ihrem Administratorkonto, wie unter beschriebenSteuern Sie, welche Benutzer Stack-Set-Operationen in bestimmten Zielkonten ausführen können. Fügen Sie eine Vertrauensstellung zwischen der benutzerdefinierten Administratorrolle und den benutzerdefinierten Ausführungsrollen hinzu, die sie verwenden soll.

Beispiel für eine Berechtigungsrichtlinie

Das folgende Beispiel ist eine Berechtigungsrichtlinie sowohl für die für das Zielkonto AWSCloudFormationStackSetExecutionRoledefinierten als auch für eine benutzerdefinierte Ausführungsrolle.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487980684000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::*:role/AWSCloudFormationStackSetExecutionRole", "arn:aws:iam::*:role/custom_execution_role" ] } ] }
Target accounts

Erstellen Sie in den Zielkonten, in denen Sie Ihre Stack-Sets erstellen möchten, eine benutzerdefinierte Ausführungsrolle, die Berechtigungen für die Services und Ressourcen erteilt, die Benutzer und Gruppen in den Stack-Sets aufnehmen dürfen.

Beispiel für eine Berechtigungsrichtlinie

Das folgende Beispiel gibt die Mindestberechtigungen für Stack-Sets sowie die Berechtigung zum Erstellen von Amazon-DynamoDB-Tabellen an.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "dynamoDb:createTable" ], "Resource": "*" } ] }
Beispiel für eine Vertrauensrichtlinie

Sie müssen die folgende Vertrauensrichtlinie angeben, wenn Sie die Rolle zur Definition der Vertrauensbeziehung erstellen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::admin_account_id:role/customized_admin_role" }, "Action": "sts:AssumeRole" } ] }

Einrichten von Berechtigungen für bestimmte Stack-Set-Operationen

Darüber hinaus können Sie Berechtigungen für Benutzer und Gruppen einrichten, die bestimmte Stack-Set-Operationen durchführen können, wie z. B. das Erstellen, Aktualisieren und Löschen von Stack-Sets oder Stack-Instances. Weitere Informationen finden Sie CloudFormation im IAMBenutzerhandbuch unter Aktionen, Ressourcen und Bedingungsschlüssel für.

Richten Sie globale Schlüssel ein, um Confused-Deputy-Probleme zu mindern.

Das Problem des verwirrten Stellvertreters ist ein Sicherheitsproblem, bei dem eine Entität, die keine Berechtigung zur Durchführung einer Aktion hat, eine privilegiertere Entität zur Durchführung der Aktion zwingen kann. In AWS kann ein dienstübergreifendes Identitätswechsels zum Problem des verwirrten Stellvertreters führen. Ein serviceübergreifender Identitätswechsel kann auftreten, wenn ein Service (der Anruf-Service) einen anderen Service anruft (den aufgerufenen Service). Der Anruf-Service kann so manipuliert werden, dass er seine Berechtigungen verwendet, um auf die Ressourcen eines anderen Kunden zu reagieren, auf die er sonst nicht zugreifen dürfte. Um dies zu verhindern, AWS bietet Tools, mit denen Sie Ihre Daten für alle Dienste mit Dienstprinzipalen schützen können, denen Zugriff auf Ressourcen in Ihrem Konto gewährt wurde.

Wir empfehlen, die Kontextschlüssel aws:SourceArnund die aws:SourceAccountglobalen Bedingungsschlüssel in Ressourcenrichtlinien zu verwenden, um die Berechtigungen einzuschränken, AWS CloudFormation StackSets die der Ressource einen anderen Dienst gewähren. Wenn Sie beide globalen Bedingungskontextschlüssel verwenden, müssen der aws:SourceAccount-Wert und das Konto im aws:SourceArn-Wert dieselbe Konto-ID verwenden, wenn sie in derselben Richtlinienanweisung verwendet werden.

Der effektivste Schutz vor dem Problem mit dem verwirrten Deputy ist die Verwendung des Kontextschlüssels für aws:SourceArn globale Bedingungen mit ARN der gesamten Ressource. Wenn Sie die gesamte ARN Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den aws:SourceArn globalen Kontextbedingungsschlüssel mit Platzhaltern (*) für die unbekannten Teile von. ARN Beispiel, arn:aws:cloudformation::123456789012:*. Verwenden Sie nach Möglichkeit aws:SourceArn, da es spezifischer ist. Verwenden Sie diese aws:SourceAccount Option nur, wenn Sie das richtige ARN ARN ODER-Muster nicht ermitteln können.

Wenn die Administratorrolle in Ihrem Administratorkonto StackSets annimmt, StackSets füllt Ihre Administratorkonto-ID und Ihren StackSets Amazon-Ressourcennamen (ARN) aus. Sie können daher Bedingungen für die globalen Schlüssel aws:SourceAccount und aws:SourceArn in den Vertrauensbeziehungen definieren, um Confused-Deputy-Probleme zu vermeiden. Das folgende Beispiel zeigt, wie Sie die Kontextschlüssel aws:SourceArn und die aws:SourceAccount globale Bedingung verwenden können, StackSets um das Problem des verwirrten Stellvertreters zu vermeiden.

Administrator account
Beispiel Globale Schlüssel für aws:SourceAccount und aws:SourceArn

Definieren Sie bei der Verwendung StackSets die globalen Schlüssel aws:SourceAccount und aws:SourceArn in Ihrer AWSCloudFormationStackSetAdministrationRoleVertrauensrichtlinie, um Probleme mit verwirrenden Stellvertretern zu vermeiden.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:cloudformation:*:111122223333:stackset/*" } } } ] }
Beispiel StackSets ARNs

Geben Sie StackSets ARNs für eine genauere Kontrolle Ihren zugehörigen Namen an.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudformation.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": [ "arn:aws:cloudformation:STACKSETS-REGION:111122223333:stackset/STACK-SET-ID-1", "arn:aws:cloudformation:STACKSETS-REGION:111122223333:stackset/STACK-SET-ID-2", ] } } } ] }