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-Dienstrollen, die für die kontenübergreifende Bereitstellung und AWS-Regionen mit StackSets selbstverwalteten Berechtigungen erforderlich sind. Diese Rollen sind erforderlich, um eine vertrauenswürdige Beziehung zwischen dem Konto, von dem StackSet aus Sie die Daten verwalten, und dem Konto, für das Sie Stack-Instances bereitstellen, herzustellen. Wenn Sie dieses Berechtigungsmodell verwenden, StackSets können Sie die Bereitstellung für alle Benutzer AWS-Konto durchführen, für die Sie die Berechtigung zum Erstellen einer IAM-Rolle haben.
Informationen zur Verwendung von vom Dienst verwalteten Berechtigungen finden Sie stattdessen unterAktivieren Sie den vertrauenswürdigen Zugriff.
Übersicht über selbstverwaltete Berechtigungen
Bevor Sie eine StackSet mit selbstverwalteten Berechtigungen erstellen, müssen Sie in jedem Konto IAM-Dienstrollen erstellt haben.
Die grundlegenden Schritte sind:
-
Ermitteln Sie, welches AWS-Konto das Administratorkonto ist.
StackSets werden in diesem Administratorkonto erstellt. Ein Zielkonto ist das Konto, in dem Sie einzelne Stacks erstellen, die zu einem StackSet gehören.
-
Bestimmen Sie, wie Sie die Berechtigungen für die StackSet strukturieren möchten.
Bei der einfachsten (und großzügigsten) Berechtigungskonfiguration geben Sie allen Benutzern und Gruppen im Administratorkonto die Möglichkeit, alle über dieses Konto StackSets verwalteten Berechtigungen zu erstellen und zu aktualisieren. Wenn Sie eine feinere Kontrolle benötigen, können Sie Berechtigungen einrichten, die Folgendes angeben:
-
Welche Benutzer und Gruppen können StackSet Operationen in welchen Zielkonten ausführen?
-
Welche Ressourcen Benutzer und Gruppen in ihre aufnehmen können StackSets.
-
Welche StackSet Operationen bestimmte Benutzer und Gruppen ausführen können.
-
Erstellen Sie die erforderlichen IAM-Servicerollen in Ihrem Administrator- und Ziel-Konto, um die gewünschten Berechtigungen zu definieren.
Insbesondere sind die beiden Rollen erforderlich:
-
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 StackSet 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 übergeben Benutzer keine Administratorrolle, wenn sie eine erstellen oder aktualisieren. StackSet
- 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.
Die folgende Beispiel-Vertrauensrichtlinie erteilt 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 Bereiten Sie sich auf die Ausführung von StackSet Vorgängen vor AWS-Regionen , die standardmäßig deaktiviert sind. Eine Liste der Regionscodes finden Sie im Allgemeine AWS-Referenz
Handbuch unter Regionale Endpunkte.
- Target accounts
-
Erstellen Sie in jedem Zielkonto eine Servicerolle mit dem Namen AWSCloudFormationStackSetExecutionRole, der 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.
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 vollständige CloudFormation -Berechtigungen, darunter die Berechtigungen zum Erstellen, Aktualisieren, Löschen und Beschreiben von Stacks.
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 angezeigtadmin_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 Vertrauensstellung Ihres Zielkontos mit der neuen Administratorkontorolle konfigurieren, die admin_account_id
im vorherigen Beispiel durch dargestellt wird.
Richten Sie erweiterte Berechtigungsoptionen für StackSet Operationen ein
Wenn Sie eine genauere Kontrolle darüber benötigen StackSets , was Benutzer und Gruppen über ein einziges Administratorkonto erstellen, können Sie mithilfe von IAM-Rollen Folgendes angeben:
-
Welche Benutzer und Gruppen StackSet Operationen in welchen Zielkonten ausführen können.
-
Welche Ressourcen Benutzer und Gruppen in ihre aufnehmen können StackSets.
-
Welche StackSet Operationen bestimmte Benutzer und Gruppen ausführen können.
Steuern Sie, welche Benutzer StackSet Operationen in bestimmten Zielkonten ausführen können
Verwenden Sie benutzerdefinierte Administratorrollen, um zu steuern, welche Benutzer und Gruppen StackSet Operationen in welchen Zielkonten ausführen können. Möglicherweise möchten Sie steuern, welche Benutzer des Administratorkontos StackSet Operationen in welchen 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. Anschließend aktivieren Sie bestimmte Benutzer und Gruppen, um die benutzerdefinierte Administratorrolle bei der Ausführung von StackSet 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.
Das Einrichten der erforderlichen Berechtigungen umfasst das Definieren einer benutzerdefinierten Administratorrolle, das Erstellen einer Servicerolle für das Zielkonto und das Erteilen der Berechtigungen für Benutzer, 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 einer StackSet muss der Benutzer eine benutzerdefinierte Administratorrolle angeben. Der Benutzer benötigt die Berechtigung zum Übergeben der Rolle an CloudFormation. Darüber hinaus muss die benutzerdefinierte Administratorrolle über eine Vertrauensbeziehung zu den Zielkonten verfügen, die für die angegeben sind StackSet. CloudFormation erstellt die benutzerdefinierte Verwaltungsrolle StackSet und ordnet ihr die benutzerdefinierte Administratorrolle zu. Beim Aktualisieren einer StackSet muss der Benutzer explizit eine benutzerdefinierte Administratorrolle angeben, auch wenn es sich um dieselbe benutzerdefinierte Administratorrolle handelt, die StackSet zuvor für diese Rolle verwendet wurde. CloudFormationverwendet 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 jede StackSet Rolle 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 beim Erstellen eines StackSets verwendet StackSet. Wenn Sie einen benutzerdefinierten Rollennamen angeben, müssen Benutzer den Namen der Ausführungsrolle beim Erstellen einer angeben StackSet.
Erstellen Sie eine IAM-Dienstrolle mit einem benutzerdefinierten Namen und der folgenden Berechtigungsrichtlinie. In den folgenden Beispielen custom_execution_role
bezieht sich dies 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.
Die folgende Beispiel-Vertrauensrichtlinie erteilt 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 Bereiten Sie sich auf die Ausführung von StackSet Vorgängen vor AWS-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, bei der Ausführung StackSet von Vorgängen die benutzerdefinierte Administratorrolle zu übergeben. Weitere Informationen finden Sie unter Erteilen von Benutzerberechtigungen zur Übergabe einer Rolle an einen AWS
-Service.
Im folgenden Beispiel customized_admin_role
bezieht sich dies 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 beim Erstellen eines StackSets verwendet StackSet. Wenn Sie einen benutzerdefinierten Rollennamen angeben, müssen Benutzer den Namen der Ausführungsrolle beim Erstellen einer angeben StackSet.
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 bestimmten Fällen einbeziehen können StackSets
Verwenden Sie benutzerdefinierte Ausführungsrollen, um zu steuern, welche Stack-Ressourcen Benutzer und Gruppen in ihre Rollen aufnehmen können StackSets. Beispielsweise möchten Sie möglicherweise eine Gruppe einrichten, die nur Amazon S3-bezogene Ressourcen in die von StackSets ihnen erstellten Dateien einbeziehen kann, während ein anderes Team nur DynamoDB-Ressourcen einbeziehen kann. Zu diesem Zweck erstellen Sie eine Vertrauensbeziehung zwischen der benutzerdefinierten Administratorrolle für jede Gruppe und einer benutzerdefinierten Ausführungsrolle für jeden Ressourcensatz. Die benutzerdefinierte Ausführungsrolle definiert, in welche Stack-Ressourcen aufgenommen werden können StackSets. 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 etwas erstellen möchten. Anschließend aktivieren Sie bestimmte Benutzer und Gruppen, um die benutzerdefinierte Administratorrolle bei der Ausführung StackSets von Vorgängen zu verwenden.
Sie können beispielsweise benutzerdefinierte Administratorrollen A, B und C im Administratorkonto erstellen. Benutzer und Gruppen mit der Berechtigung zur Verwendung von Rolle A können Ressourcen erstellen, die die Stack-Ressourcen StackSets enthalten, die speziell in der benutzerdefinierten Ausführungsrolle X aufgeführt sind, aber nicht die Ressourcen in den Rollen Y oder Z oder Ressourcen, die in keiner Ausführungsrolle enthalten sind.
Bei der Aktualisierung einer StackSet muss der Benutzer explizit eine benutzerdefinierte Administratorrolle angeben, auch wenn es sich um dieselbe benutzerdefinierte Administratorrolle handelt, die StackSet zuvor für diese Rolle verwendet wurde. CloudFormation führt das Update mit der angegebenen benutzerdefinierten Administratorrolle durch, sofern der Benutzer über die entsprechenden Berechtigungen verfügt StackSet.
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 mithilfe der benutzerdefinierten Ausführungsrolle durch, die zuvor mit der verknüpft war StackSet, sofern der Benutzer berechtigt ist, Operationen an dieser Rolle auszuführen StackSet.
- Administrator account
-
Erstellen Sie eine benutzerdefinierte Administratorrolle in Ihrem Administratorkonto, wie unter beschriebenSteuern Sie, welche Benutzer StackSet 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 erstellen möchten StackSets, eine benutzerdefinierte Ausführungsrolle, die Berechtigungen für die Dienste und Ressourcen gewährt, zu denen Benutzer und Gruppen berechtigt sein sollen StackSets.
Beispiel für eine Berechtigungsrichtlinie
Das folgende Beispiel bietet die Mindestberechtigungen für StackSets sowie die Berechtigung zum Erstellen von Amazon DynamoDB-Tabellen.
{
"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"
}
]
}
Richten Sie Berechtigungen für bestimmte StackSet Operationen ein
Darüber hinaus können Sie Berechtigungen einrichten, mit denen Benutzer und Gruppen bestimmte StackSet Operationen ausführen können, z. B. Instanzen erstellen, aktualisieren, löschen StackSets oder stapeln können. Weitere Informationen finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für CloudFormation in der Service-Autorisierungs-Referenz.
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. Bei einem AWS dienstübergreifenden Identitätswechsel kann es zu einem Problem mit dem verwirrten Stellvertreter kommen. 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 Weg, um sich vor dem Confused-Deputy-Problem zu schützen, ist die Verwendung des globalen Bedingungskontext-Schlüssels aws:SourceArn
mit dem vollständigen ARN der Ressource. Wenn Sie den vollständigen ARN der Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den globalen Bedingungskontext-Schlüssel aws:SourceArn
mit Platzhaltern (*
) für die unbekannten Teile des ARN. Beispiel, arn:aws:cloudformation
::123456789012
:*
. Verwenden Sie nach Möglichkeit aws:SourceArn
, da es spezifischer ist. Verwenden Sie aws:SourceAccount
nur wenn Sie den richtigen ARN oder das ARN-Muster nicht ermitteln können.
When StackSets übernimmt die Administratorrolle in Ihrem Administratorkonto und 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
",
]
}
}
}
]
}