Verhindern von Aktualisierungen der Stack-Ressourcen - AWS CloudFormation

Verhindern von Aktualisierungen der Stack-Ressourcen

Wenn Sie ein Stack erstellen, sind alle Aktualisierungsaktionen für alle Ressourcen zulässig. Standardmäßig können alle Personen, die berechtigt sind, Stack-Aktualisierungen vorzunehmen, alle Ressourcen im Stack aktualisieren. Während einer Aktualisierung müssen einige Ressourcen möglicherweise unterbrochen oder vollständig ersetzt werden, was zu neuen physischen IDs oder völlig neuem Speicher führt. Sie können mithilfe einer Stack-Richtlinie verhindern, dass Stack-Ressourcen während einer Stack-Aktualisierung unabsichtlich aktualisiert oder gelöscht werden. Eine Stack-Richtlinie ist ein JSON-Dokument, in dem die Aktualisierungsaktionen definiert werden, die für designierte Ressourcen ausgeführt werden können.

Nachdem Sie eine Stack-Richtlinie festgelegt haben, sind alle Ressourcen im Stack standardmäßig geschützt. Um Aktualisierungen für bestimmte Ressourcen zuzulassen, geben Sie in der Stack-Richtlinie eine explizite Allow-Anweisung für diese Ressourcen an. Sie können nur eine Stack-Richtlinie pro Stack definieren, aber mehrere Ressourcen in einer einzelnen Richtlinie schützen. Eine Stack-Richtlinie gilt für alle CloudFormation-Benutzer, die versuchen, den Stack zu aktualisieren. Sie können unterschiedlichen Benutzern keinen verschiedenen Stack-Richtlinien zuordnen.

Eine Stack-Richtlinie gilt nur während Stack-Aktualisierungen. Sie bietet keine Zugriffskontrollen wie eine AWS Identity and Access Management (IAM)-Richtlinie. Verwenden Sie eine Stack-Richtlinie nur als ausfallsicheren Mechanismus, um versehentliche Aktualisierungen bestimmter Stack-Ressourcen zu verhindern. Zur Steuerung des Zugriffs auf AWS-Ressourcen oder -Aktionen verwenden Sie IAM.

Beispiel-Stack-Richtlinie

Die folgende Beispiel-Stack-Richtlinie verhindert Aktualisierungen an der ProductionDatabase-Ressource:

{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" }, { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "LogicalResourceId/ProductionDatabase" } ] }

Wenn Sie eine Stack-Richtlinie festlegen, sind alle Ressourcen standardmäßig geschützt. Um Aktualisierungen für alle Ressourcen zuzulassen, fügen wir eine Allow-Anweisung hinzu, die alle Aktionen für alle Ressourcen zulässt. Zwar gibt die Allow-Anweisung alle Ressourcen an, jedoch überschreibt die explizite Deny-Anweisung diese Anweisung für die Ressource mit der logischen ID ProductionDatabase. Diese Deny-Anweisung verhindert sämtliche Aktualisierungsaktionen, wie z. B. Ersetzung oder Löschung, für die ProductionDatabase-Ressource.

Das Principal-Element ist erforderlich, unterstützt aber nur den Platzhalter (*), was bedeutet, dass die Anweisung für alle Prinzipale gilt.

Anmerkung

Während einer Stack-Aktualisierung aktualisiert CloudFormation automatisch Ressourcen, die von anderen aktualisierten Ressourcen abhängen. Zum Beispiel aktualisiert CloudFormation eine Ressource, die auf eine aktualisierte Ressource verweist. CloudFormation nimmt an automatisch aktualisierten Ressourcen keine physischen Änderungen vor, wie z. B. die ID der Ressource. Wenn jedoch eine Stack-Richtlinie mit diesen Ressourcen verknüpft ist, müssen Sie die Erlaubnis haben, sie zu aktualisieren.

Definieren einer Stack-Richtlinie

Wenn Sie ein Stack erstellen, ist keine Stack-Richtlinie festgelegt, sodass alle Aktualisierungsaktionen für alle Ressourcen zulässig sind. Um Stack-Ressourcen vor Aktualisierungsaktionen zu schützen, definieren Sie eine Stack-Richtlinie und legen Sie diese dann für den Stack fest. Eine Stack-Richtlinie ist ein JSON-Dokument, das die CloudFormation Stack-Update-Aktionen definiert, die CloudFormation-Benutzer durchführen können, sowie die Ressourcen, für die die Aktionen gelten. Sie legen die Stack-Richtlinie bei der Erstellung eines Stacks fest, indem Sie eine Textdatei mit der Stack-Richtlinie angeben oder diese eingeben. Wenn Sie eine Stack-Richtlinie für den Stack festlegen, werden Aktualisierungen, die nicht ausdrücklich zugelassen sind, standardmäßig verweigert.

Sie definieren eine Stack-Richtlinie mit fünf Elemente: Effect, Action, Principal, Resource und Condition. Der folgende Pseudocode veranschaulicht die Stack-Richtlinien-Syntax.

{ "Statement" : [ { "Effect" : "Deny_or_Allow", "Action" : "update_actions", "Principal" : "*", "Resource" : "LogicalResourceId/resource_logical_ID", "Condition" : { "StringEquals_or_StringLike" : { "ResourceType" : [resource_type, ...] } } } ] }
Effect

Bestimmt, ob die Aktionen, die Sie angeben, für die angegebene(n) Ressource(n) verweigert oder zugelassen werden. Sie können nur Deny oder Allow festlegen, wie z. B.:

"Effect" : "Deny"
Wichtig

Wenn eine Stack-Richtlinie überlappende Anweisungen enthält (Zulassen und Verweigern von Aktualisierungen für eine Ressource), wird eine Deny-Anweisung immer durch eine Allow-Anweisung überschrieben. Um sicherzustellen, dass eine Ressource geschützt ist, verwenden Sie eine Deny-Anweisung für die betreffende Ressource.

Aktion

Gibt die Aktualisierungsaktionen an, die verweigert oder zugelassen werden:

Update:Modify

Gibt Aktualisierungsaktionen an, während denen Ressourcen möglicherweise nicht unterbrochen oder unterbrochen werden, während Änderungen angewendet werden. Alle Ressourcen behalten ihre physischen IDs.

Update:Replace

Gibt Aktualisierungsaktionen an, bei denen Ressourcen neu erstellt werden. CloudFormation erstellt eine neue Ressource mit den angegebenen Aktualisierungen und löscht dann die alte Ressource. Da die Ressource neu erstellt wird, hat die neue Ressourcen möglicherweise eine andere physische ID.

Update:Delete

Gibt Aktualisierungsaktionen an, während denen Ressourcen entfernt werden. Aktualisierungen, durch die Ressourcen vollständig aus einer Stack-Vorlage entfernt werden, erfordern diese Aktion.

Update:*

Gibt alle Aktualisierungsaktionen an. Das Sternchen ist ein Platzhalter, der für alle Aktualisierungsaktionen steht.

Im folgenden Beispiel wird gezeigt, wie Sie nur die Ersetzungs- und Löschungsaktionen angeben:

"Action" : ["Update:Replace", "Update:Delete"]

Um alle Aktualisierungsaktionen außer einer zuzulassen, verwenden Sie NotAction. Um beispielsweise alle Aktualisierungsaktionen außer Update:Delete zuzulassen, verwenden Sie NotAction, wie im folgenden Beispiel veranschaulicht:

{ "Statement" : [ { "Effect" : "Allow", "NotAction" : "Update:Delete", "Principal": "*", "Resource" : "*" } ] }
Auftraggeber

Das Principal-Element gibt die Entität an, für die die Richtlinie gilt. Dieses Element ist erforderlich, unterstützt aber nur den Platzhalter (*), was bedeutet, dass die Richtlinie für alle Prinzipale gilt.

Ressource

Gibt die logischen IDs der Ressourcen an, für die die Richtlinie gilt. Um Arten von Ressourcen anzugeben, verwenden Sie das Condition-Element.

Um eine einzelne Ressource anzugeben, verwenden Sie deren logische ID. Zum Beispiel:

"Resource" : ["LogicalResourceId/myEC2instance"]

Sie können einen Platzhalter mit logischen IDs verwenden. Wenn Sie beispielsweise ein gängiges logisches ID-Präfix für alle verwandten Ressourcen verwenden, können Sie alle mit einem Platzhalter angeben:

"Resource" : ["LogicalResourceId/CriticalResource*"]

Sie können auch ein Not-Element mit Ressourcen verwenden. Um beispielsweise Aktualisierungen für alle Ressourcen außer einer zuzulassen, verwenden Sie ein NotResource-Element, um diese Ressource zu schützen:

{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "NotResource" : "LogicalResourceId/ProductionDatabase" } ] }

Wenn Sie eine Stack-Richtlinie festlegen, werden Aktualisierungen, die nicht ausdrücklich zugelassen sind, verweigert. Wenn Sie Aktualisierungen für alle Ressourcen außer der ProductionDatabase-Ressource zulassen, verweigern Sie Aktualisierungen der ProductionDatabase-Ressource.

Bedingungen

Gibt den Ressourcentyp an, für den die Richtlinie gilt. Um die logischen IDs bestimmter Ressourcen anzugeben, verwenden Sie das Resource-Element.

Sie können einen Ressourcentyp festlegen, z. B. alle EC2 Instances und RDS-DB-Instances, wie im folgenden Beispiel veranschaulicht:

{ "Statement" : [ { "Effect" : "Deny", "Principal" : "*", "Action" : "Update:*", "Resource" : "*", "Condition" : { "StringEquals" : { "ResourceType" : ["AWS::EC2::Instance", "AWS::RDS::DBInstance"] } } }, { "Effect" : "Allow", "Principal" : "*", "Action" : "Update:*", "Resource" : "*" } ] }

Die Allow-Anweisung erteilt Aktualisierungsberechtigungen für alle Ressourcen und die Deny-Anweisung verweigert Aktualisierungen für EC2 Instances und RDS-DB-Instances. Die Deny-Anweisung überschreibt immer Zulassungsaktionen.

Sie können einen Platzhalter mit Ressourcentypen verwenden. Sie können beispielsweise Aktualisierungsberechtigungen für alle Amazon EC2-Ressourcen verweigern, z. B. Instances, Sicherheitsgruppen und Subnetze, indem Sie wie im folgenden Beispiel einen Platzhalter verwenden:

"Condition" : { "StringLike" : { "ResourceType" : ["AWS::EC2::*"] } }

Sie müssen die StringLike-Bedingung verwenden, wenn Sie Platzhalter verwenden.

Festlegen einer Stack-Richtlinie

Sie können die Konsole oder die AWS CLI verwenden, um eine Stack-Richtlinie anzuwenden, wenn Sie einen Stack erstellen. Sie können die AWS CLI auch verwenden, um eine Stack-Richtlinie auf einen vorhandenen Stack anzuwenden. Nachdem Sie eine Stack-Richtlinie angewendet haben, können Sie sie nicht mehr aus dem Stack entfernen, Sie können sie aber über die AWS CLI ändern.

Stack-Richtlinien gelten für alle CloudFormation-Benutzer, die versuchen, den Stack zu aktualisieren. Sie können unterschiedlichen Benutzern keinen verschiedenen Stack-Richtlinien zuordnen.

Informationen zum Schreiben von Stack-Richtlinien finden Sie unter Definieren einer Stack-Richtlinie.

So legen Sie eine Stack-Richtlinie beim Erstellen eines Stacks fest (Konsole)
  1. Öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie in der Navigationsleiste am oberen Rand des Bildschirms das Feld AWS-Region, in dem Sie den Stapel erstellen möchten.

  3. Wählen Sie auf der Seite CloudFormation Stacks (CloudFormation-Stacks) die Option Create Stack (Stack erstellen) aus.

  4. Erweitern Sie im Assistenten für das Erstellen eines Stacks auf der Seite Configure stack options (Stack-Optionen konfigurieren) den Abschnitt Advanced (Erweitert) und wählen Sie dann Stack policy (Stack-Richtlinie) aus.

  5. Geben Sie die Stack-Richtlinie an:

    • Um eine Richtlinie direkt in der Konsole zu schreiben, wählen Sie Enter stack policy (Stack-Richtlinie eingeben) aus und geben Sie die Stack-Richtlinie direkt in das Textfeld ein.

    • Um eine Richtlinie zu verwenden, die in einer separaten Datei definiert ist, wählen Sie Upload a file (Datei hochladen) und dann Choose file (Datei auswählen) aus, um die Datei auszuwählen, die die Stack-Richtlinie enthält.

So legen Sie eine Stack-Richtlinie beim Erstellen eines Stacks fest (AWS CLI)
  • Verwenden Sie den Befehl create-stack mit der Option --stack-policy-body zur Eingabe einer geänderten Richtlinie oder die Option --stack-policy-url zur Angabe einer Datei, die die Richtlinie enthält.

So legen Sie eine Stack-Richtlinie für einen vorhandenen Stack fest (nur AWS CLI)
  • Verwenden Sie den Befehl set-stack-policy mit der Option --stack-policy-body zur Eingabe einer geänderten Richtlinie oder die Option --stack-policy-url zur Angabe einer Datei, die die Richtlinie enthält.

    Anmerkung

    Um eine Richtlinie zu einem bestehenden Stack hinzuzufügen, müssen Sie über die Berechtigung für die CloudFormation SetStackPolicy-Aktion verfügen.

Aktualisieren geschützter Ressourcen

Um geschützte Ressourcen zu aktualisieren, erstellen Sie eine temporäre Richtlinie, die die Stack-Richtlinie überschreibt und Aktualisierungen für diese Ressourcen zulässt. Geben Sie die Überschreibungsrichtlinie ab, wenn Sie den Stack aktualisieren. Die Überschreibungsrichtlinie ändert die Stack-Richtlinie nicht dauerhaft.

Um geschützte Ressourcen zu aktualisieren, müssen Sie über die Berechtigung zur Verwendung der CloudFormation SetStackPolicy-Aktion verfügen. Informationen zum Festlegen von CloudFormation-Berechtigungen finden Sie unter Steuern Sie den Zugriff auf CloudFormation mit AWS Identity and Access Management..

Anmerkung

Während einer Stack-Aktualisierung aktualisiert CloudFormation automatisch Ressourcen, die von anderen aktualisierten Ressourcen abhängen. Zum Beispiel aktualisiert CloudFormation eine Ressource, die auf eine aktualisierte Ressource verweist. CloudFormation nimmt an automatisch aktualisierten Ressourcen keine physischen Änderungen vor, z. B. an der ID der Ressourcen. Wenn jedoch eine Stack-Richtlinie mit diesen Ressourcen verknüpft ist, müssen Sie die Erlaubnis haben, sie zu aktualisieren.

So aktualisieren Sie eine geschützte Ressource (Konsole)
  1. Öffnen Sie die CloudFormation-Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie den Stack aus, den Sie aktualisieren möchten. Wählen Sie Stack actions (Stack-Aktionen) und anschließend Update Stack (Stack aktualisieren) aus.

  3. Wenn Sie die Stack-Vorlage nicht geändert haben, wählen Sie Use current template (Aktuelle Vorlage verwenden) aus und klicken Sie dann auf Next (Weiter). Wenn Sie die Vorlage geändert haben, wählen Sie Replace current template (Aktuelle Vorlage ersetzen) aus und geben Sie den Speicherort der aktualisierten Vorlage im Abschnitt Specify template (Vorlage angeben) an:

    • Für eine lokal auf Ihrem Computer gespeicherte Vorlage wählen Sie Upload a template file (Vorlagendatei hochladen) aus. Wählen Sie Choose File, um zur Datei zu navigieren. Wählen Sie die Datei aus und klicken Sie auf Weiter.

    • Für eine in einem Amazon S3-Bucket gespeicherte Vorlage wählen Sie Amazon S3-URL aus. Geben Sie die URL für die Vorlage ein und klicken Sie dann auf Weiter.

      Wenn Sie eine Vorlage in einem Bucket mit Versionskontrolle haben, können Sie eine bestimmte Version der Vorlage angeben, indem Sie ?versionId=version-id an die URL anhängen. Weitere Informationen finden Sie unter Arbeiten mit Objekten in einem versionierungsfähigen Bucket im Amazon Simple Storage Service User Guide.

  4. Wenn Ihre Vorlage Parameter enthält, geben Sie auf der Seite Specify stack details (Stack-Details angeben) die Parameterwerte ein oder ändern Sie sie und wählen Sie dann Next (Weiter) aus.

    CloudFormation füllt jeden Parameter mit dem Wert, der aktuell im Stack eingestellt ist, außer für Parameter, die mit dem Attribut NoEcho deklariert sind. Sie können die aktuellen Werte für diese Parameter verwenden, indem Sie Use existing value (Existierenden Wert verwenden) auswählen.

    Weitere Informationen über die Verwendung von NoEcho zur Maskierung sensibler Informationen sowie über die Verwendung dynamischer Parameter zur Verwaltung von Geheimnissen finden Sie in der bewährten Vorgehensweise Keine Anmeldeinformationen in Vorlagen einbetten .

  5. Geben Sie eine Überschreibungs-Stack-Richtlinie an.

    1. Wählen Sie auf der Seite Configure stack options (Stack-Optionen konfigurieren) im Abschnitt Advanced options (Erweiterte Optionen) die Option Stack policy (Stack-Richtlinie) aus.

    2. Wählen Sie Upload a file (Datei hochladen) aus.

    3. Klicken Sie auf Choose File (Datei auswählen) und navigieren Sie zu der Datei, die die überschreibende Stack-Richtlinie enthält, oder geben Sie eine Richtlinie ein.

    4. Wählen Sie Weiter aus.

    Die Überschreibungsrichtlinie muss eine Allow-Anweisung für die geschützten Ressourcen angeben, die Sie aktualisieren möchten. Um beispielsweise alle geschützten Ressourcen zu aktualisieren, geben Sie eine temporäre Überschreibungsrichtlinie an, die alle Aktualisierungen zulässt:

    { "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }
    Anmerkung

    CloudFormation wendet die Überschreibungsrichtlinie nur während dieser Aktualisierung an. Die Überschreibungsrichtlinie ändert die Stack-Richtlinie nicht dauerhaft. Informationen zum Ändern einer Stack-Richtlinie finden Sie unter Ändern einer Stack-Richtlinie .

  6. Überprüfen Sie die Stack-Informationen und die Änderungen, die Sie übermittelt haben.

    Überprüfen Sie, ob Sie die richtigen Informationen gesendet haben, z. B. die richtigen Parameterwerte oder die richtige Vorlagen-URL. Wenn Ihre Vorlage IAM-Ressourcen enthält, wählen Sie I acknowledge that this template may create IAM resources, um anzugeben, dass Sie IAM-Ressourcen in der Vorlage verwenden möchten. Weitere Informationen finden Sie unter Erkennen von IAM-Ressourcen in CloudFormation-Vorlagen.

    Prüfen Sie im Abschnitt Vorschau auf Ihre Änderungen, ob CloudFormation alle Änderungen vornimmt, die Sie erwarten. Prüfen Sie zum Beispiel, ob CloudFormation die Ressourcen hinzufügt, entfernt und ändert, die Sie hinzufügen, entfernen oder ändern wollten. CloudFormation erzeugt diese Vorschau, indem es einen Änderungssatz für den Stack erstellt. Weitere Informationen finden Sie unter Aktualisieren Sie CloudFormation Stacks mit Änderungsgruppen.

  7. Wenn Sie mit Ihren Änderungen zufrieden sind, klicken Sie auf Update (Aktualisieren).

    Anmerkung

    An dieser Stelle haben Sie auch die Möglichkeit, den Änderungssatz anzusehen, um Ihre vorgeschlagenen Updates sorgfältiger zu überprüfen. Um dies zu tun, klicken Sie auf View change set (Änderungssatz anzeigen) anstelle von Update (Aktualisieren). CloudFormation zeigt den Änderungssatz an, der basierend auf Ihren Aktualisierungen generiert wurde. Wenn Sie bereit sind, den Stack zu aktualisieren, klicken Sie auf Execute (Ausführen).

    CloudFormation zeigt die Seite Stack details (Stack-Details) für Ihren Stack an. Ihr Stapel hat jetzt den Status UPDATE_IN_PROGRESS. Nachdem CloudFormation die Aktualisierung des Stacks erfolgreich abgeschlossen hat, setzt es den Stack-Status auf UPDATE_COMPLETE.

    Sollte die Aktualisierung des Stacks fehlschlagen, führt CloudFormation automatisch ein Rollback der Änderungen durch und setzt den Status des Stacks auf UPDATE_ROLLBACK_COMPLETE.

So aktualisieren Sie eine geschützte Ressource (AWS CLI)
  • Verwenden Sie den Befehl update-stack mit der Option --stack-policy-during-update-body zur Eingabe einer geänderten Richtlinie oder die Option --stack-policy-during-update-url zur Angabe einer Datei, die die Richtlinie enthält.

    Anmerkung

    CloudFormation wendet die Überschreibungsrichtlinie nur während dieser Aktualisierung an. Die Überschreibungsrichtlinie ändert die Stack-Richtlinie nicht dauerhaft. Informationen zum Ändern einer Stack-Richtlinie finden Sie unter Ändern einer Stack-Richtlinie .

Ändern einer Stack-Richtlinie

Um zusätzliche Ressourcen zu schützen oder Schutz von Ressourcen zu entfernen, ändern Sie die Stack-Richtlinie. Wenn Sie beispielsweise eine Datenbank, die Sie schützen möchten, zu einem Stack hinzufügen, fügen Sie der Stack-Richtlinie eine Deny-Anweisung für diese Datenbank hinzu. Um die Richtlinie zu ändern, müssen Sie über die Berechtigung zur Verwendung der Aktion SetStackPolicy verfügen.

Verwenden Sie die AWS CLI zum Ändern von Stack-Richtlinien.

So ändern Sie eine Stack-Richtlinie (AWS CLI)
  • Verwenden Sie den Befehl set-stack-policy mit der Option --stack-policy-body zur Eingabe einer geänderten Richtlinie oder die Option --stack-policy-url zur Angabe einer Datei, die die Richtlinie enthält.

Stack-Richtlinien können nicht gelöscht werden. Zum Entfernen des gesamten Schutzes von allen Ressourcen, ändern Sie die Richtlinie, sodass alle Aktionen für alle Ressourcen ausdrücklich zugelassen werden. Mit der folgenden Richtlinie können alle Aktualisierungen für alle Ressourcen durchgeführt werden:

{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }

Weitere Beispiel-Stack-Richtlinien

Die folgenden Beispielrichtlinien zeigen, wie Sie Aktualisierungen aller Stack-Ressourcen und spezifischer Ressourcen verhindern und wie Sie bestimmte Arten von Aktualisierungen verhindern.

Verhindern von Aktualisierungen aller Stack-Ressourcen

Um Aktualisierungen aller Stack-Ressourcen zu verhindern, gibt die folgende Richtlinie eine Deny-Anweisung für alle Aktualisierungsaktionen für alle Ressourcen an.

{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }

Verhindern von Aktualisierungen an einer einzelnen Ressource

Mit der folgenden Richtlinie werden alle Aktualisierungsaktionen in der Datenbank mit der logischen ID MyDatabase verweigert. Es werden alle Aktualisierungsaktionen für alle anderen Stack-Ressourcen mit einer Allow-Anweisung zugelassen. Die Allow-Anweisung gilt nicht für die MyDatabase-Ressource, da die Deny-Anweisung immer Zulassungsaktionen überschreibt.

{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "LogicalResourceId/MyDatabase" }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }

Sie können dasselbe Ergebnis wie im vorherigen Beispiel erzielen, wenn Sie eine Standardverweigerung verwenden. Wenn Sie eine Stapelrichtlinie festlegen, verweigert CloudFormation jede Aktualisierung, die nicht ausdrücklich erlaubt ist. Die folgende Richtlinie lässt Aktualisierungen für alle Ressourcen zu, außer für die ProductionDatabase-Ressource, die standardmäßig verweigert wird.

{ "Statement" : [ { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "NotResource" : "LogicalResourceId/ProductionDatabase" } ] }
Wichtig

Es gibt Risiken bei der Verwendung einer Standardverweigerung. Wenn es an einer anderen Stelle in der Richtlinie eine Allow-Anweisung gibt (z. B. eine Allow-Anweisung, die einen Platzhalter verwendet), können Sie unwissentlich Aktualisierungsberechtigungen für Ressourcen erteilen, die Sie gar nicht aktualisieren möchten. Da eine ausdrückliche Verweigerung sämtliche Zulassungsaktionen überschreibt, können Sie sicherstellen, dass eine Ressource durch Verwendung einer Deny-Anweisung geschützt wird.

Verhindern von Aktualisierungen aller Instances eines Ressourcentyps

Mit der folgenden Richtlinie werden alle Aktualisierungsaktionen für den RDS-DB-Instance-Ressourcentyp verweigert. Es werden alle Aktualisierungsaktionen für alle anderen Stack-Ressourcen mit einer Allow-Anweisung zugelassen. Die Allow-Anweisung gilt nicht für die RDS-DB-Instance-Ressourcen, da eine Deny-Anweisung immer Zulassungsaktionen überschreibt.

{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "*", "Condition" : { "StringEquals" : { "ResourceType" : ["AWS::RDS::DBInstance"] } } }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }

Verhindern von Ersetzungsaktualisierungen für eine Instance

Mit der folgenden Richtlinie werden Aktualisierungen verweigert, die zu einer Ersetzung der Instance mit der logischen ID MyInstance führen würden. Es werden alle Aktualisierungsaktionen für alle anderen Stack-Ressourcen mit einer Allow-Anweisung zugelassen. Die Allow-Anweisung gilt nicht für die MyInstance-Ressource, da die Deny-Anweisung immer Zulassungsaktionen überschreibt.

{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:Replace", "Principal": "*", "Resource" : "LogicalResourceId/MyInstance" }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }

Verhindern von Aktualisierungen an verschachtelten Stacks

Die folgende Richtlinie verweigert alle Aktualisierungsaktionen für den Ressourcentyp CloudFormation-Stack (verschachtelte Stacks). Es werden alle Aktualisierungsaktionen für alle anderen Stack-Ressourcen mit einer Allow-Anweisung zugelassen. Die Anweisung Allow gilt nicht für die CloudFormation Stack-Ressourcen, da die Anweisung Deny immer die erlaubten Aktionen außer Kraft setzt.

{ "Statement" : [ { "Effect" : "Deny", "Action" : "Update:*", "Principal": "*", "Resource" : "*", "Condition" : { "StringEquals" : { "ResourceType" : ["AWS::CloudFormation::Stack"] } } }, { "Effect" : "Allow", "Action" : "Update:*", "Principal": "*", "Resource" : "*" } ] }