Zugriffssteuerung mit AWS Identity and Access Management - AWS CloudFormation

Zugriffssteuerung mit AWS Identity and Access Management

Mit AWS Identity and Access Management (IAM) können Sie IAM-Benutzer erstellen, um zu steuern, wer Zugriff auf welche Ressourcen in Ihrem AWS-Konto hat. Sie können IAM mit AWS CloudFormation verwenden, um zu steuern, was Benutzer mit AWS CloudFormation tun können, z. B. ob sie Stack-Vorlagen anzeigen, Stacks erstellen oder Stacks löschen können.

Zusätzlich zu AWS CloudFormation-Aktionen können Sie verwalten, welche AWS-Services und -Ressourcen jedem Benutzer zur Verfügung stehen. So können Sie steuern, auf welche Ressourcen Benutzer zugreifen können, wenn sie AWS CloudFormation verwenden. Sie können beispielsweise festlegen, welche Benutzer Amazon EC2-Instances erstellen, Datenbank-Instances beenden oder VPCs aktualisieren. Die gleichen Berechtigungen werden immer dann angewendet, wenn sie diese Aktionen mit AWS CloudFormation durchführen.

Weitere Informationen zu all den Services, auf die Sie den Zugriff steuern können, finden Sie unter AWS-Services, die IAM unterstützen in IAM-Benutzerhandbuch.

AWS CloudFormation-Aktionen

Wenn Sie in Ihrem AWS-Konto eine Gruppe oder einen IAM-Benutzer erstellen, können Sie mit dieser Gruppe oder diesem Benutzer eine IAM-Richtlinie verknüpfen, welche die Berechtigungen angibt, die Sie gewähren möchten. Nehmen wir beispielsweise an, Sie haben eine Gruppe von Entwicklern mit wenig Erfahrung. Sie können eine Junior application developers-Gruppe erstellen, die Entwickler mit wenig Erfahrung umfasst. Dann verknüpfen Sie eine Richtlinie mit dieser Gruppe, die Benutzern nur das Anzeigen von AWS CloudFormation-Stacks erlaubt. In diesem Szenario haben Sie möglicherweise eine Richtlinie wie die folgende:

Beispiel Ein Beispiel für eine Richtlinie, die Anzeigeberechtigungen für Stacks gewährt

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResource", "cloudformation:DescribeStackResources" ], "Resource":"*" }] }

Die Richtlinie gewährt Berechtigungen für alle DescribeStack-API-Funktionen, die im Action-Element aufgeführt sind.

Wichtig

Wenn Sie in Ihrer Anweisung keinen Stack-Namen oder keine Stack-ID angeben, müssen Sie unter Verwendung des *-Platzhalters für das Resource-Element auch die Berechtigung zur Nutzung aller Ressourcen für die Aktion gewähren.

Zusätzlich zu AWS CloudFormation-Aktionen benötigen IAM-Benutzer, die Stacks erstellen oder löschen, zusätzliche Berechtigungen, die von den Stack-Vorlagen abhängen. Wenn Sie zum Beispiel eine Vorlage haben, die eine Amazon SQS-Warteschlange beschreibt, muss der Benutzer über die entsprechenden Berechtigungen für Amazon SQS-Aktionen verfügen, um den Stack erfolgreich zu erstellen, wie in der folgenden Musterrichtlinie dargestellt:

Beispiel Ein Musterrichtlinie, die Aktionen zum Erstellen und Anzeigen von Stacks und alle Amazon SQS-Aktionen gewährt

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "sqs:*", "cloudformation:CreateStack", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResources", "cloudformation:GetTemplate", "cloudformation:ValidateTemplate" ], "Resource":"*" }] }

Eine Liste aller AWS CloudFormation-Aktionen, die Sie erlauben oder ablehnen können, finden Sie im AWS CloudFormation API Reference.

Konsolenspezifische AWS CloudFormation-Aktionen

IAM-Benutzer, welche die AWS CloudFormation-Konsole verwenden, benötigen zusätzliche Berechtigungen, die für die Verwendung der AWS Command Line Interface- oder AWS CloudFormation-APIs nicht erforderlich sind. Im Vergleich zur CLI und API bietet die Konsole zusätzliche Funktionen, für die zusätzliche Berechtigungen erforderlich sind, wie z. B. Vorlagen-Uploads in Amazon S3-Buckets und Dropdown-Listen für AWS-spezifische Parametertypen.

Gewähren Sie für alle folgenden Aktionen Berechtigungen für alle Ressourcen; beschränken Sie Aktionen nicht auf bestimmte Stacks oder Buckets.

Die folgende erforderliche Aktion wird nur von der AWS CloudFormation-Konsole verwendet und ist nicht in der API-Referenz dokumentiert. Die Aktion erlaubt Benutzern, Vorlagen zu Amazon S3-Buckets hochzuladen.

cloudformation:CreateUploadBucket

Wenn Benutzer Vorlagen hochladen, benötigen sie die folgenden Amazon S3-Berechtigungen:

s3:PutObject s3:ListBucket s3:GetObject s3:CreateBucket

Für Vorlagen mit AWS-spezifischen Parametertypen benötigen Benutzer Berechtigungen zur Durchführung der entsprechenden Describe-API-Aufrufe. Wenn eine Vorlage beispielsweise den AWS::EC2::KeyPair::KeyName-Parametertyp enthält, benötigen Benutzer die Berechtigung zum Aufrufen der EC2-DescribeKeyPairs-Aktion (wenn die Konsole auf diese Weise Werte für die Parameter-Dropdown-Liste abruft). Die folgenden Beispiele sind Aktionen, die Benutzer für andere Parametertypen benötigen:

ec2:DescribeSecurityGroups (for the AWS::EC2::SecurityGroup::Id parameter type) ec2:DescribeSubnets (for the Subnet::Id parameter type) ec2:DescribeVpcs (for the AWS::EC2::VPC::Id parameter type)

AWS CloudFormation-Ressourcen

AWS CloudFormation unterstützt Berechtigungen auf Ressourcenebene, damit Sie Aktionen für einen bestimmten Stack angeben können, wie in der folgenden Richtlinie dargestellt:

Beispiel Eine Musterrichtlinie, welche die Aktionen zum Löschen und Aktualisieren von Stacks für den MyProductionStack verweigert

{ "Version":"2012-10-17", "Statement":[{ "Effect":"Deny", "Action":[ "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource":"arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/*" }] }

Die Richtlinie oben verwendet einen Platzhalter am Ende des Stack-Namens, sodass Aktionen zum Löschen und Aktualisieren von Stacks für die gesamte Stack-ID (z. B. arn:aws:cloudformation:us-east-1:123456789012:stack/MyProductionStack/abc9dbf0-43c2-11e3-a6e8-50fa526be49c) und für den Stack-Namen (z. B. MyProductionStack) verweigert werden.

Um AWS::Serverless-Transformationen das Erstellen eines Änderungssatzes zu erlauben, muss die Richtlinie die arn:aws:cloudformation:<region>:aws:transform/Serverless-2016-10-31-Berechtigungen auf Ressourcenebene enthalten, wie in der folgenden Richtlinie zu sehen:

Beispiel Eine Beispielrichtlinie, die der Transformation das Erstellen eines Änderungssatzes erlaubt

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": "arn:aws:cloudformation:us-west-2:aws:transform/Serverless-2016-10-31" }] }

Beispielrichtlinie, die serviceverwaltete Stack-Set-Berechtigungen gewährt

Im Folgenden finden Sie ein Beispiel für eine IAM-Richtlinie, die einer Prinzipalentität (Benutzer, Rolle oder Gruppe) serviceverwaltete Stack-Set-Berechtigungen gewährt. Ein Benutzer mit dieser Richtlinie kann nur Operationen an Stack-Sets mit Vorlagen durchführen, die Amazon S3-Ressourcentypen (AWS::S3::*) oder den AWS::SES::ConfigurationSet-Ressourcentyp enthalten. Wenn der Benutzer mit der ID 123456789012 am Verwaltungskonto der Organisation angemeldet ist, kann er auch nur Operationen an Stack-Sets durchführen, die für die OU mit der ID ou-1fsfsrsrsdsfrewr gelten, und kann nur Operationen an dem Stack-Set mit der ID stack-set-id durchführen, die für das Konto AWS mit der ID 987654321012 gelten.

Stack-Set-Vorgänge schlagen fehl, wenn die Stack-Set-Vorlage andere Ressourcentypen als die in der Richtlinie angegebenen enthält oder wenn die Bereitstellungsziele andere OU- oder Konto-IDs sind, als die in der Richtlinie für die entsprechenden Verwaltungskonten und Stack-Sets angegebenen.

Diese Richtlinieneinschränkungen gelten nur, wenn Stack-Set-Operationen auf die Regionen us-east-1, us-west-2 oder eu-west-2 abzielen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*" ], "Resource": [ "arn:aws:cloudformation:*:*:stackset/*", "arn:aws:cloudformation:*::type/resource/AWS-S3-*", "arn:aws:cloudformation:us-west-2::type/resource/AWS-SES-ConfigurationSet", "arn:aws:cloudformation::123456789012:stackset-target/*/ou-1fsfsrsdsfrewr", "arn:aws:cloudformation::123456789012:stackset-target/stack-set-id/987654321012" ], "Condition": { "ForAllValues:StringEqualsIgnoreCase": { "cloudformation:TargetRegion": [ "us-east-1", "us-west-2", "eu-west-1" ] } } } ] }

AWS CloudFormation-Bedingungen

In einer IAM-Richtlinie können Sie optional Bedingungen angeben, mit denen gesteuert wird, wann eine Richtlinie in Kraft tritt. Sie können beispielsweise eine Richtlinie definieren, die IAM-Benutzern erlaubt, einen Stack nur dann zu erstellen, wenn sie eine bestimmte URL-Vorlage angeben. Sie können AWS CloudFormation-spezifische Bedingungen und AWS-weite Bedingungen angeben, z. B. DateLessThan, die angibt, wann eine Richtlinie nicht mehr wirksam ist. Weitere Informationen und eine Liste von AWS-weiten Bedingungen finden Sie unter „Condition“ in der IAM Policy Elements Reference im IAM-Benutzerhandbuch.

Anmerkung

Verwenden Sie nicht die aws:SourceIp AWS-weite Bedingung. AWS CloudFormation stellt Ressourcen unter Verwendung seiner eigenen IP-Adresse, nicht der IP-Adresse der ursprünglichen Anforderung bereit. Beispiel: Wenn Sie einen Stack erstellen, stellt AWS CloudFormation Anforderungen zum Starten einer EC2-Instance oder zum Erstellen eines S3-Buckets über seine IP-Adresse, nicht über die IP-Adresse des CreateStack-Aufrufs oder des aws cloudformation create-stack-Befehls.

In der folgenden Liste werden die AWS CloudFormation-spezifischen Bedingungen beschrieben. Diese Bedingungen werden nur angewendet, wenn Benutzer Stacks erstellen oder aktualisieren:

cloudformation:ChangeSetName

Ein AWS CloudFormation-Änderungssatzname, den Sie einer Richtlinie zuordnen möchten. Verwenden Sie diese Bedingung, um zu steuern, welche Änderungssätze IAM-Benutzer ausführen oder löschen können.

cloudformation:ImportResourceTypes

Die Vorlagenressourcentypen, die Sie einer Richtlinie zuordnen möchten, z. B. AWS::EC2::Instance. Verwenden Sie diese Bedingung, um zu steuern, mit welchen Ressourcentypen IAM-Benutzer arbeiten können, wenn sie Ressourcen in einen Stack importieren. Diese Bedingung wird anhand der Ressourcentypen geprüft, die Benutzer im ResourcesToImport-Parameter deklarieren, der aktuell nur für CLI- und API-Anforderungen unterstützt wird. Wenn Sie diesen Parameter verwenden, müssen Sie alle Ressourcentypen angeben, die Benutzer während des Importvorgangs steuern sollen. Weitere Informationen zum ResourcesToImport-Parameter finden Sie in der CreateChangeSet-Aktion im AWS CloudFormation API Reference.

Eine Liste der möglichen ResourcesToImport finden Sie unter Ressourcen, die Importvorgänge unterstützen.

Verwenden Sie die dreiteilige Ressourcennamenskonvention, um anzugeben, mit welchen Ressourcentypen Benutzer arbeiten können, von allen Ressourcen innerhalb einer Organisation bis hinunter zu einem einzelnen Ressourcentyp.

organization::*

Geben Sie alle Ressourcentypen für eine bestimmte Organisation an.

organization::service_name::*

Geben Sie alle Ressourcentypen für den angegebenen Service innerhalb einer bestimmten Organisation an.

organization::service_name::resource_type

Geben Sie einen bestimmten Ressourcentyp an.

Beispiel:

AWS::*

Geben Sie alle unterstützten AWS-Ressourcentypen an.

AWS::service_name::*

Geben Sie alle unterstützten Ressourcen für einen bestimmten AWS-Service an.

AWS::service_name::resource_type

Geben Sie einen bestimmten AWS-Ressourcentyp an, wie z. B. AWS::EC2::Instance (alle EC2-Instances).

cloudformation:ResourceTypes

Die Vorlagenressourcentypen wie z. B. AWS::EC2::Instance, die Sie einer Richtlinie zuordnen möchten. Verwenden Sie diese Bedingung, um zu steuern, welche Ressourcentypen IAM-Benutzern zur Verfügung stehen, wenn sie einen Stack erstellen oder aktualisieren. Diese Bedingung wird anhand der Ressourcentypen geprüft, die Benutzer im ResourceTypes-Parameter deklarieren, der aktuell nur für CLI- und API-Anforderungen unterstützt wird. Bei Verwendung dieses Parameters müssen Benutzer alle Ressourcentypen angeben, die sich in ihrer Vorlage befinden. Weitere Informationen zum ResourceTypes-Parameter finden Sie in der CreateStack-Aktion im AWS CloudFormation API Reference.

Eine Liste von Ressourcentypen finden Sie unter AWS-Ressourcen- und Eigenschaftstypen – Referenz.

Verwenden Sie die dreiteilige Ressourcennamenskonvention, um anzugeben, mit welchen Ressourcentypen Benutzer arbeiten können, von allen Ressourcen innerhalb einer Organisation bis hinunter zu einem einzelnen Ressourcentyp.

organization::*

Geben Sie alle Ressourcentypen für eine bestimmte Organisation an.

organization::service_name::*

Geben Sie alle Ressourcentypen für den angegebenen Service innerhalb einer bestimmten Organisation an.

organization::service_name::resource_type

Geben Sie einen bestimmten Ressourcentyp an.

Beispiel:

AWS::*

Geben Sie alle unterstützten AWS-Ressourcentypen an.

AWS::service_name::*

Geben Sie alle unterstützten Ressourcen für einen bestimmten AWS-Service an.

AWS::service_name::resource_type

Geben Sie einen bestimmten AWS-Ressourcentyp an, wie z. B. AWS::EC2::Instance (alle EC2-Instances).

Alexa::ASK::*

Geben Sie alle Ressourcentypen im Alexa Skill Kit an.

Alexa::ASK::Skill

Geben Sie den individuellen Skill-Ressourcentyp an.

Custom::*

Geben Sie alle benutzerdefinierten Ressourcen an.

Weitere Informationen zu benutzerdefinierten Ressourcen finden Sie unter Benutzerdefinierte Ressourcen.

Custom::resource_type

Geben Sie einen bestimmten benutzerdefinierten Ressourcentyp an.

Weitere Informationen zu benutzerdefinierten Ressourcen finden Sie unter Benutzerdefinierte Ressourcen.

cloudformation:RoleARN

Der Amazon-Ressourcenname (ARN) einer IAM-Servicerolle, die Sie einer Richtlinie zuordnen möchten. Verwenden Sie diese Bedingung, um zu steuern, welche Servicerolle IAM-Benutzer verwenden können, wenn sie mit Stacks oder Änderungssätzen arbeiten.

cloudformation:StackPolicyUrl

Eine Amazon S3-Stack-Richtlinien-URL, die Sie einer Richtlinie zuordnen möchten. Verwenden Sie diese Bedingung, um zu steuern, welche Stack-Richtlinien IAM-Benutzer einem Stack während einer Aktion zum Erstellen oder Aktualisieren von Stacks zuordnen können. Weitere Informationen zu Stack-Richtlinien finden Sie unter Verhindern von Aktualisierungen der Stack-Ressourcen.

Anmerkung

Um sicherzustellen, dass IAM-Benutzer Stacks nur mit den von Ihnen hochgeladenen Stack-Richtlinien erstellen oder aktualisieren können, legen Sie den S3-Bucket für diese Benutzer auf read only fest.

cloudformation:TemplateUrl

Eine Amazon S3-Vorlagen-URL, die Sie einer Richtlinie zuordnen möchten. Verwenden Sie diese Bedingung, um zu steuern, welche Vorlagen IAM-Benutzer verwenden können, wenn sie Stacks erstellen oder aktualisieren.

Anmerkung

Um sicherzustellen, dass IAM-Benutzer Stacks nur mit den von Ihnen hochgeladenen Vorlagen erstellen oder aktualisieren können, legen Sie den S3-Bucket für diese Benutzer auf read only fest.

Anmerkung

Die folgenden AWS CloudFormation-spezifischen Bedingungen gelten für die gleichnamigen API-Parameter:

  • cloudformation:ChangeSetName

  • cloudformation:RoleARN

  • cloudformation:StackPolicyUrl

  • cloudformation:TemplateUrl

Beispielsweise gilt cloudformation:TemplateUrl nur für den TemplateUrl-Parameter für CreateStack, UpdateStack und CreateChangeSet-APIs.

Beispiele

Die folgende Beispielrichtlinie erlaubt Benutzern, zum Erstellen oder Aktualisieren eines Stacks nur die https://s3.amazonaws.com/testbucket/test.template-Vorlagen-URL zu verwenden.

Beispiel Vorlagen-URL-Bedingung

{ "Version":"2012-10-17", "Statement":[ { "Effect" : "Allow", "Action" : [ "cloudformation:CreateStack", "cloudformation:UpdateStack" ], "Resource" : "*", "Condition" : { "ForAllValues:StringEquals" : { "cloudformation:TemplateUrl" : [ "https://s3.amazonaws.com/testbucket/test.template" ] } } } ] }

Mit der folgenden Beispielrichtlinie können Benutzer alle AWS CloudFormation-Vorgänge mit Ausnahme von Importvorgängen abschließen.

Beispiel Bedingung für den Import von Ressourcentypen

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAllStackOperations", "Effect": "Allow", "Action": "cloudformation:*", "Resource": "*" }, { "Sid": "DenyImport", "Effect": "Deny", "Action": "cloudformation:*", "Resource": "*", "Condition": { "ForAnyValue:StringLike": { "cloudformation:ImportResourceTypes": [ "*" ] } } } ] }

Die folgende Beispielrichtlinie erlaubt alle Stack-Vorgänge sowie Importvorgänge nur für bestimmte Ressourcen (in diesem Beispiel AWS::S3::Bucket.

Beispiel Bedingung für den Import von Ressourcentypen

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowImport", "Effect": "Allow", "Action": "cloudformation:*", "Resource": "*" "Condition": { "ForAllValues:StringEqualsIgnoreCase": { "cloudformation:ImportResourceTypes": [ "AWS::S3::Bucket" ] } } } ] }

Die folgende Beispielrichtlinie erlaubt Benutzern, Stacks zu erstellen, lehnt Anfragen aber ab, wenn die Vorlage des Stacks eine Ressource aus dem IAM-Service enthält. Die Richtlinie erfordert außerdem, dass Benutzer den ResourceTypes-Parameter angeben, der nur für CLI- und API-Anforderungen verfügbar ist. Diese Richtlinie verwendet explizite Zugriffsverweigerungsanweisungen, sodass diese Richtlinie immer wirksam ist, wenn eine andere Richtlinie zusätzliche Berechtigungen gewährt (eine explizite Zugriffsverweigerungsanweisung setzt eine explizite Zugriffserlaubnisanweisung immer außer Kraft).

Beispiel Ressourcentypbedingung

{ "Version":"2012-10-17", "Statement":[ { "Effect" : "Allow", "Action" : [ "cloudformation:CreateStack" ], "Resource" : "*" }, { "Effect" : "Deny", "Action" : [ "cloudformation:CreateStack" ], "Resource" : "*", "Condition" : { "ForAnyValue:StringLikeIfExists" : { "cloudformation:ResourceTypes" : [ "AWS::IAM::*" ] } } }, { "Effect": "Deny", "Action" : [ "cloudformation:CreateStack" ], "Resource": "*", "Condition": { "Null": { "cloudformation:ResourceTypes": "true" } } } ] }

Die folgende Beispielrichtlinie ähnelt dem vorherigen Beispiel. Die Richtlinie erlaubt Benutzern, einen Stack zu erstellen, außer die Vorlage des Stacks enthält eine Ressource aus dem IAM-Service. Sie erfordert außerdem, dass Benutzer den ResourceTypes-Parameter angeben, der nur für CLI- und API-Anforderungen verfügbar ist. Diese Richtlinie ist einfacher, verwendet aber keine expliziten Zugriffsverweigerungsanweisungen. Andere Richtlinien, die zusätzliche Berechtigungen gewähren, könnten diese Richtlinie außer Kraft setzen.

Beispiel Ressourcentypbedingung

{ "Version":"2012-10-17", "Statement":[ { "Effect" : "Allow", "Action" : [ "cloudformation:CreateStack" ], "Resource" : "*", "Condition" : { "ForAllValues:StringNotLikeIfExists" : { "cloudformation:ResourceTypes" : [ "AWS::IAM::*" ] }, "Null":{ "cloudformation:ResourceTypes": "false" } } } ] }

Bestätigen von IAM-Ressourcen in AWS CloudFormation-Vorlagen

Bevor Sie einen Stack erstellen können, validiert AWS CloudFormation die Vorlage. Während der Validierung prüft AWS CloudFormation die Vorlage für IAM-Ressourcen, die es möglicherweise erstellt. IAM-Ressourcen, wie z. B. ein IAM-Benutzer mit Vollzugriff, können auf jede Ressource in Ihrem AWS-Konto zugreifen und diese ändern. Daher wird empfohlen, die mit den einzelnen IAM-Ressourcen verknüpften Berechtigungen zu prüfen, bevor Sie fortfahren, damit Sie nicht versehentlich Ressourcen mit eskalierten Berechtigungen erstellen. Um sicherzustellen, dass Sie dies getan haben, müssen Sie bestätigen, dass die Vorlage diese Ressourcen enthält, wodurch AWS CloudFormation vor der Stack-Erstellung die angegebenen Fähigkeiten erhält.

Sie können die Fähigkeiten von AWS CloudFormation-Vorlagen mithilfe der AWS CloudFormation-Konsole, der AWS Command Line Interface (CLI) oder der API bestätigen:

  • Wählen Sie in der AWS CloudFormation-Konsole auf der Seite Review des Stack-Erstellungs- oder Stack-Aktualisierungs-Assistenten die Option I acknowledge that this template may create IAM resources aus.

  • Geben Sie in der CLI bei Verwendung der Befehle aws cloudformation create-stack und aws cloudformation update-stack den Wert CAPABILITY_IAM oder CAPABILITY_NAMED_IAM Wert für den --capabilities-Parameter an. Wenn Ihre Vorlage IAM-Ressourcen enthält, können Sie jede der beiden Fähigkeiten angeben. Wenn Ihre Vorlage benutzerdefinierte Namen für IAM-Ressourcen enthält, müssen Sie CAPABILITY_NAMED_IAM angeben.

  • Geben Sie in der API bei Verwendung der Aktionen CreateStack und UpdateStack Capabilities.member.1=CAPABILITY_IAM oder Capabilities.member.1=CAPABILITY_NAMED_IAM an. Wenn Ihre Vorlage IAM-Ressourcen enthält, können Sie jede der beiden Fähigkeiten angeben. Wenn Ihre Vorlage benutzerdefinierte Namen für IAM-Ressourcen enthält, müssen Sie CAPABILITY_NAMED_IAM angeben.

Wichtig

Wenn Ihre Vorlage benutzerdefinierte benannte IAM-Ressourcen enthält, erstellen Sie unter Wiederverwendung der gleichen Vorlage nicht mehrere Stacks. IAM-Ressourcen müssen innerhalb Ihres Kontos global eindeutig sein. Wenn Sie dieselbe Vorlage verwenden, um mehrere Stacks in verschiedenen Regionen zu erstellen, teilen sich Ihre Stacks möglicherweise dieselben IAM-Ressourcen, anstatt dass jeder eine eindeutige hat. Die gemeinsame Verwendung von Ressourcen durch Stacks kann unbeabsichtigte Folgen haben, die nicht rückgängig gemacht werden können. Wenn Sie beispielsweise gemeinsam verwendete IAM-Ressourcen löschen oder aktualisieren, ändern Sie versehentlich die Ressourcen anderer Stacks.

Verwalten von Anmeldeinformationen für Anwendungen auf Amazon EC2-Instances

Wenn Sie eine Anwendung haben, die auf einer Amazon EC2-Instance ausgeführt wird und die Anforderungen an AWS-Ressourcen wie Amazon S3-Buckets oder eine DynamoDB-Tabelle stellen muss, benötigt die Anwendung AWS-Sicherheitsanmeldeinformationen. Allerdings stellt die Verteilung und Einbettung langfristiger Sicherheitsanmeldeinformationen in jede Instance, die Sie starten, eine Herausforderung und ein potenzielles Sicherheitsrisiko dar. Anstelle von langfristigen Anmeldeinformationen, wie z. B. IAM-Benutzeranmeldeinformationen, empfehlen wir, eine IAM-Rolle zu erstellen, die einer Amazon EC2-Instance zugeordnet wird, wenn die Instance gestartet wird. Eine Anwendung kann dann von der Amazon EC2-Instance temporäre Sicherheitsanmeldeinformationen abrufen. Sie müssen auf der Instance keine langfristigen Anmeldeinformationen einbetten. Um die Verwaltung von Anmeldeinformationen zu erleichtern, können Sie für mehrere Amazon EC2-Instances auch nur eine Rolle angeben; Sie müssen nicht für jede Instance eindeutige Anmeldeinformationen erstellen.

Einen Vorlagenausschnitt, der zeigt, wie eine Instance mit einer Rolle gestartet wird, finden Sie unter Vorlagenbeispiele für IAM-Rollen.

Anmerkung

Anwendungen auf Instances, die temporäre Sicherheitsanmeldeinformationen verwenden, können jede beliebige AWS CloudFormation-Aktion aufrufen. Da AWS CloudFormation mit vielen anderen AWS-Services interagiert, müssen Sie allerdings überprüfen, ob alle Services, die Sie verwenden möchten, temporäre Sicherheitsanmeldeinformationen unterstützen. Weitere Informationen finden Sie unter AWS-Services, die mit AWS funktionieren.

Gewähren von temporärem Zugriff (Zugriff für Verbundbenutzer)

In einigen Fällen möchten Sie Benutzern möglicherweise keine AWS-Anmeldeinformationen für temporären Zugriff auf Ihr AWS-Konto gewähren. Verwenden Sie AWS Security Token Service (AWS STS), wenn Sie temporären Zugriff gewähren möchten, anstatt langfristige Anmeldeinformationen zu erstellen und zu löschen. Sie können beispielsweise IAM-Rollen verwenden. Von einer IAM-Rolle aus können Sie programmgesteuert viele temporäre Sicherheitsanmeldeinformationen (einschließlich eines Zugriffsschlüssels, eines geheimen Zugriffsschlüssels und eines Sicherheits-Tokens) erstellen und dann verteilen. Diese Anmeldeinformationen haben eine begrenzte Laufzeit, sodass damit nach deren Ablauf nicht auf Ihr AWS-Konto zugegriffen werden kann. Sie können auch mehrere IAM-Rollen erstellen, um einzelnen Benutzern verschiedene Ebenen von Berechtigungen zu gewähren. IAM-Rollen sind nützlich für Szenarien wie verbundene Identitäten und Single Sign-On.

Ein Identitätsverbund ist eine unabhängige Identität, die Sie für mehrere Systeme verwenden können. Bei Enterprise-Benutzern mit einem festgelegten unternehmensinternen Identitätssystem (wie LDAP oder Active Directory) kann die gesamte Authentifizierung mit Ihrem lokalen Identitätssystem erfolgen. Nachdem ein Benutzer authentifiziert wurde, stellen Sie aus dem entsprechenden IAM-Benutzer oder der entsprechenden IAM-Rolle temporäre Sicherheitsanmeldeinformationen bereit. Sie können beispielsweise eine administrators-Rolle und eine developers-Rolle erstellen, bei der Administratoren Vollzugriff auf das AWS-Konto haben und Entwickler nur Berechtigungen zum Arbeiten mit AWS CloudFormation-Stacks besitzen. Nachdem ein Administrator authentifiziert wurde, wird der Administrator autorisiert, temporäre Sicherheitsanmeldeinformationen von der administrators-Rolle zu erhalten. Entwickler können temporäre Sicherheitsanmeldeinformationen allerdings von der developers-Rolle erhalten.

Sie können auch verbundenen Benutzern Zugriff auf die AWS Management Console gewähren. Nachdem sich Benutzer bei Ihrem lokalen Identitätssystem authentifiziert haben, können Sie programmgesteuert eine temporäre URL erstellen, die direkten Zugriff auf die AWS Management Console bietet. Wenn Benutzer die temporäre URL verwenden, müssen sie sich nicht bei AWS anmelden, da sie bereits authentifiziert wurden (Single Sign-On). Da die URL außerdem aus den temporären Sicherheitsanmeldeinformationen des Benutzers erstellt wurde, bestimmen die mit diesen Anmeldeinformationen verfügbaren Berechtigungen, welche Berechtigungen Benutzer in der AWS Management Console besitzen.

Sie können mehrere verschiedene AWS STS-APIs verwenden, um temporäre Sicherheitsanmeldeinformationen zu generieren. Weitere Informationen dazu, welche API verwendet werden soll, finden Sie unter Möglichkeiten, temporäre Sicherheitsanmeldeinformationen zu erhalten im Using Temporary Security Credentials.

Wichtig

Sie können IAM nicht verwenden, wenn Sie temporäre Sicherheitsanmeldeinformationen verwenden, die über die GetFederationToken-API generiert wurden. Wenn Sie IAM verwenden müssen, verwenden Sie stattdessen temporäre Sicherheitsanmeldeinformationen aus einer Rolle.

AWS CloudFormation interagiert mit vielen anderen AWS-Services. Wenn Sie temporäre Sicherheitsanmeldeinformationen mit AWS CloudFormation verwenden, stellen Sie sicher, dass alle Services, die Sie verwenden möchten, temporäre Sicherheitsanmeldeinformationen unterstützen. Weitere Informationen finden Sie unter AWS-Services, die mit AWS funktionieren.

Weitere Informationen finden Sie in folgenden verwandten Ressourcen im Using Temporary Security Credentials.