Verwenden Sie Skripts, um Ihre Richtlinien massenweise zu migrieren und detaillierte Aktionen zu verwenden IAM - AWS Fakturierung

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

Verwenden Sie Skripts, um Ihre Richtlinien massenweise zu migrieren und detaillierte Aktionen zu verwenden IAM

Anmerkung

Die folgenden AWS Identity and Access Management (IAM) Aktionen haben im Juli 2023 das Ende des Standard-Supports erreicht:

  • Namespace aws-portal

  • purchase-orders:ViewPurchaseOrders

  • purchase-orders:ModifyPurchaseOrders

Wenn Sie verwenden AWS Organizations, können Sie die Bulk Policy Migrator-Skripte oder den Bulk Policy Migrator verwenden, um Richtlinien von Ihrem Zahlerkonto aus zu aktualisieren. Sie können auch die Referenz zur Zuordnung von Vorgängen zu detaillierten Aktionen verwenden, um zu überprüfen, welche IAM Aktionen hinzugefügt werden müssen.

Wenn Sie eine Aktion haben oder Teil einer sind AWS-Konto, die am oder nach dem 6. März 2023, 11:00 Uhr (PDT) AWS Organizations erstellt wurde, sind die detaillierten Aktionen in Ihrer Organisation bereits wirksam.

Um Ihre IAM Richtlinien zur Verwendung neuer Aktionen, sogenannter detaillierter Aktionen, zu migrieren, können Sie Skripts von der Samples-Website verwenden.AWS

Sie führen diese Skripts vom Zahlerkonto Ihrer Organisation aus, um die folgenden betroffenen Richtlinien in Ihrer Organisation zu identifizieren, die die alten Aktionen verwenden: IAM

  • Vom Kunden verwaltete Richtlinien IAM

  • IAMInline-Richtlinien für Rollen, Gruppen und Benutzer

  • Richtlinien zur Dienstkontrolle (SCPs) (gilt nur für das Konto des Zahlers)

  • Berechtigungssätze

Die Skripte generieren Vorschläge für neue Aktionen, die existierenden Aktionen entsprechen, die in der Richtlinie verwendet werden. Anschließend überprüfen Sie die Vorschläge und fügen mithilfe der Skripte die neuen Aktionen für alle betroffenen Richtlinien in Ihrer Organisation hinzu. Sie müssen weder verwaltete noch AWS verwaltete Richtlinien SCPs (z. B. AWS Control Tower und AWS Organizations SCPs) aktualisieren. AWS

Sie verwenden diese Skripte, um:

  • Optimieren Sie die Richtlinienaktualisierungen, damit Sie die betroffenen Richtlinien vom Konto des Zahlers aus verwalten können.

  • Reduzieren Sie den Zeitraum, den Sie für die Aktualisierung der Richtlinien benötigen. Sie müssen sich nicht bei jedem Mitgliedskonto anmelden und die Richtlinien manuell aktualisieren.

  • Gruppieren Sie identische Richtlinien aus verschiedenen Mitgliedskonten. Sie können dann dieselben Updates für alle identischen Richtlinien überprüfen und anwenden, anstatt sie einzeln zu überprüfen.

  • Stellen Sie sicher, dass der Benutzerzugriff auch nach der AWS Einstellung der alten IAM Aktionen am 6. Juli 2023 nicht beeinträchtigt wird.

Weitere Informationen zu Richtlinien und Richtlinien zur Dienststeuerung (SCPs) finden Sie in den folgenden Themen:

Übersicht

Halten Sie sich an dieses Thema, um die folgenden Schritte auszuführen:

Voraussetzungen

Bevor Sie beginnen, müssen Sie Folgendes tun:

  • Python 3 herunterladen und installieren

  • Melden Sie sich bei Ihrem Zahlerkonto an und vergewissern Sie sich, dass Sie über einen IAM Auftraggeber verfügen, der über die folgenden IAM Berechtigungen verfügt:

    "iam:GetAccountAuthorizationDetails", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetUserPolicy", "iam:GetGroupPolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:CreatePolicyVersion", "iam:DeletePolicyVersion", "iam:ListAttachedRolePolicies", "iam:ListPolicyVersions", "iam:PutUserPolicy", "iam:PutGroupPolicy", "iam:PutRolePolicy", "iam:SetDefaultPolicyVersion", "organizations:ListAccounts", "organizations:ListPolicies", "organizations:DescribePolicy", "organizations:UpdatePolicy", "organizations:DescribeOrganization", "sso:DescribePermissionSet", "sso:DescribePermissionSetProvisioningStatus", "sso:GetInlinePolicyForPermissionSet", "sso:ListInstances", "sso:ListPermissionSets", "sso:ProvisionPermissionSet", "sso:PutInlinePolicyToPermissionSet", "sts:AssumeRole"
Tipp

Zu Beginn empfehlen wir Ihnen, eine Teilmenge eines Kontos zu verwenden, z. B. ein Testkonto, um zu überprüfen, ob die vorgeschlagenen Änderungen erwartet werden.

Anschließend können Sie die Skripte für die verbleibenden Konten in Ihrer Organisation erneut ausführen.

Schritt 1: Einrichten Ihrer Umgebung

Laden Sie zunächst die erforderlichen Dateien von der AWS -Samples-Website herunter. Anschließend führen Sie Befehle aus, um Ihre Umgebung einzurichten.

Einrichten Ihrer Umgebung
  1. Klonen Sie das Repository von der AWS -Samples-Website. Führen Sie im Befehlszeilen-Fenster den folgenden Befehl aus:

    git clone https://github.com/aws-samples/bulk-policy-migrator-scripts-for-account-cost-billing-consoles.git
  2. Navigieren Sie zu dem Verzeichnis, in das Sie die Dateien heruntergeladen haben. Sie können folgenden Befehl verwenden:

    cd bulk-policy-migrator-scripts-for-account-cost-billing-consoles

    Im Repository können Sie die folgenden Skripte und Ressourcen finden:

    • billing_console_policy_migrator_role.json— Die CloudFormation Vorlage, mit der die BillingConsolePolicyMigratorRole IAM Rolle in den Mitgliedskonten Ihrer Organisation erstellt wird. Diese Rolle ermöglicht es den Skripten, die Rolle zu übernehmen und dann die betroffenen Richtlinien zu lesen und zu aktualisieren.

    • action_mapping_config.json— Enthält die one-to-many Zuordnung der alten Aktionen zu den neuen Aktionen. Die Skripte verwenden diese Datei, um die neuen Aktionen für jede betroffene Richtlinie vorzuschlagen, die die alten Aktionen enthält.

      Jede alte Aktion entspricht mehreren detaillierten Aktionen. Die in der Datei vorgeschlagenen neuen Aktionen bieten Benutzern AWS-Services vor der Migration Zugriff auf dieselben.

    • identify_affected_policies.py – Scannt und identifiziert die betroffenen Richtlinien in Ihrer Organisation. Dieses Skript generiert eine affected_policies_and_suggestions.json-Datei, in der die betroffenen Richtlinien zusammen mit den vorgeschlagenen neuen Aktionen aufgeführt sind.

      Betroffene Richtlinien, die dieselben alten Aktionen verwenden, sind in der JSON Datei zusammengefasst, sodass Sie die vorgeschlagenen neuen Aktionen überprüfen oder aktualisieren können.

    • update_affected_policies.py – Aktualisiert die betroffenen Richtlinien in Ihrer Organisation. Das Skript gibt die affected_policies_and_suggestions.json-Datei ein und fügt dann die vorgeschlagenen neuen Aktionen zu den Richtlinien hinzu.

    • rollback_affected_policies.py – (Optional) Macht Änderungen rückgängig, die an den betroffenen Richtlinien vorgenommen wurden. Dieses Skript entfernt die neuen, detaillierten Aktionen aus den betroffenen Richtlinien.

  3. Sie können die folgenden Befehle ausführen, um die virtuelle Umgebung einzurichten und zu aktivieren.

    python3 -m venv venv
    source venv/bin/activate
  4. Führen Sie den folgenden Befehl aus, um die AWS SDK for Python (Boto3) Abhängigkeit zu installieren.

    pip install -r requirements.txt
    Anmerkung

    Sie müssen Ihre AWS Anmeldeinformationen für die Verwendung von AWS Command Line Interface (AWS CLI) konfigurieren. Weitere Informationen finden Sie unter AWS SDK for Python (Boto3).

Weitere Informationen finden Sie in der README.md-Datei.

Schritt 2: Erstellen Sie die CloudFormation StackSet

Gehen Sie wie folgt vor, um ein CloudFormation Stack-Set zu erstellen. Dieses Stack-Set erstellt dann die BillingConsolePolicyMigratorRole IAM Rolle für alle Mitgliedskonten in Ihrer Organisation.

Anmerkung

Sie müssen diesen Schritt nur einmal vom Verwaltungskonto (Zahlerkonto) aus ausführen.

Um das zu erstellen CloudFormation StackSet
  1. Öffnen Sie die billing_console_policy_migrator_role.json Datei in einem Texteditor und ersetzen Sie jede Instanz von <management_account> mit der Konto-ID des Zahlerkontos (zum Beispiel 123456789012).

  2. Speichern Sie die Datei.

  3. Melden Sie sich mit dem Konto AWS Management Console als Zahler an.

  4. Erstellen Sie in der CloudFormation Konsole ein Stack-Set mit der billing_console_policy_migrator_role.json Datei, die Sie aktualisiert haben.

    Weitere Informationen finden Sie im AWS CloudFormation Benutzerhandbuch unter Erstellen eines Stack-Sets auf der AWS CloudFormation Konsole.

Nach CloudFormation der Erstellung des Stack-Sets hat jedes Mitgliedskonto in Ihrer Organisation eine BillingConsolePolicyMigratorRole IAM Rolle.

Die IAM Rolle enthält die folgenden Berechtigungen:

"iam:GetAccountAuthorizationDetails", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetUserPolicy", "iam:GetGroupPolicy", "iam:GetRolePolicy", "iam:CreatePolicyVersion", "iam:DeletePolicyVersion", "iam:ListPolicyVersions", "iam:PutUserPolicy", "iam:PutGroupPolicy", "iam:PutRolePolicy", "iam:SetDefaultPolicyVersion"
Hinweise
  • Für jedes Mitgliedskonto rufen die Skripts den AssumeRoleAPIVorgang auf, um temporäre Anmeldeinformationen für die Übernahme der BillingConsolePolicyMigratorRole IAM Rolle abzurufen.

  • Die Skripts rufen den ListAccountsAPIVorgang auf, um alle Mitgliedskonten abzurufen.

  • Die Skripts rufen auch IAM API Operationen auf, um die Lese- und Schreibberechtigungen für die Richtlinien zu erteilen.

Schritt 3: Identifizieren der betroffenen Richtlinien

Nachdem Sie das Stack-Set erstellt und die Dateien heruntergeladen haben, führen Sie das identify_affected_policies.py-Skript aus. Dieses Skript übernimmt die BillingConsolePolicyMigratorRole IAM Rolle für jedes Mitgliedskonto und identifiziert dann die betroffenen Richtlinien.

So identifizieren Sie die betroffenen Richtlinien
  1. Navigieren Sie zu dem Verzeichnis, in das Sie die Skripte heruntergeladen haben.

    cd policy_migration_scripts/scripts
  2. Führen Sie das identify_affected_policies.py-Skript aus.

Sie können auch die folgenden Eingabeparameter verwenden:

  • AWS-Konten dass das Skript scannen soll. Verwenden Sie die folgenden Eingabeparameter, um Konten anzugeben:

    • --all – Scannt alle Mitgliedskonten Ihrer Organisation.

      python3 identify_affected_policies.py --all
    • --accounts – Scannt eine Teilgruppe der Mitgliedskonten Ihrer Organisation.

      python3 identify_affected_policies.py --accounts 111122223333, 444455556666, 777788889999
    • --exclude-accounts – Schließt bestimmte Mitgliedskonten Ihrer Organisation aus.

      python3 identify_affected_policies.py --all --exclude-accounts 111111111111, 222222222222, 333333333333
  • –-action-mapping-config-file – (Optional) Gibt den Pfad zur action_mapping_config.json-Datei an. Das Skript verwendet diese Datei, um Vorschläge für Aktualisierungen der betroffenen Richtlinien zu generieren. Wenn Sie den Pfad nicht angeben, verwendet das Skript die action_mapping_config.json-Datei im Ordner.

    python3 identify_affected_policies.py –-action-mapping-config-file c:\Users\username\Desktop\Scripts\action_mapping_config.json –-all
Anmerkung

Mit diesem Skript können Sie keine Organisationseinheiten (OUs) angeben.

Nachdem Sie das Skript ausgeführt haben, erstellt es zwei JSON Dateien in einem Affected_Policies_<Timestamp> Ordner:

  • affected_policies_and_suggestions.json

  • detailed_affected_policies.json

affected_policies_and_suggestions.json

Listet die betroffenen Richtlinien mit den vorgeschlagenen neuen Maßnahmen auf. Betroffene Richtlinien, die dieselben alten Aktionen verwenden, sind in der Datei zusammengefasst.

Diese Datei enthält die folgenden Abschnitte:

  • Metadaten, die einen Überblick über die Konten bieten, die Sie im Skript angegeben haben, einschließlich:

    • Gescannte Konten und der für das identify_affected_policies.py-Skript verwendete Eingabeparameter

    • Anzahl der betroffenen Konten

    • Anzahl der betroffenen Policen

    • Anzahl ähnlicher Richtliniengruppen

  • Ähnliche Richtliniengruppen – Enthält die Liste der Konten und Richtlinienndetails, einschließlich der folgenden Abschnitte:

    • ImpactedPolicies – Gibt an, welche Richtlinien betroffen und in der Gruppe enthalten sind

    • ImpactedPolicyStatements – Stellt Informationen zu den Sid-Blöcken bereit, die derzeit die alten Aktionen in der betroffenen Richtlinie verwenden. Dieser Abschnitt enthält die alten Aktionen und IAM Elemente wieEffect,Principal, NotPrincipalNotAction, undCondition.

  • SuggestedPolicyStatementsToAppend – Stellt die vorgeschlagenen neuen Aktionen bereit, die als neuer SID-Block hinzugefügt werden.

    Wenn Sie die Richtlinien aktualisieren, wird dieser Block an das Ende der Richtlinien angehängt.

Beispiel affected_policies_and_suggestions.json-Beispieldatei

In dieser Datei werden Richtlinien zusammengefasst, die sich auf der Grundlage der folgenden Kriterien ähneln:

  • Es werden dieselben alten Aktionen verwendet – Richtlinien, die in allen SID-Blöcken dieselben alten Aktionen haben.

  • Übereinstimmende Details — Zusätzlich zu den betroffenen Aktionen enthalten die Richtlinien identische IAM Elemente, wie z. B.:

    • Effect (Allow/Deny)

    • Principal (wem wird der Zugriff gewährt oder verweigert)

    • NotAction (welche Aktionen sind nicht erlaubt)

    • NotPrincipal (wem wird der Zugriff explizit verweigert)

    • Resource(für welche AWS Ressourcen die Richtlinie gilt)

    • Condition (alle spezifischen Bedingungen, unter denen die Richtlinie gilt)

Anmerkung

Weitere Informationen finden Sie unter Beispiele für IAM-Richtlinien.

Beispiel-affected_policies_and_suggestions.json
[{ "AccountsScanned": [ "111111111111", "222222222222" ], "TotalAffectedAccounts": 2, "TotalAffectedPolicies": 2, "TotalSimilarPolicyGroups": 2 }, { "GroupName": "Group1", "ImpactedPolicies": [{ "Account": "111111111111", "PolicyType": "UserInlinePolicy", "PolicyName": "Inline-Test-Policy-Allow", "PolicyIdentifier": "1111111_1-user:Inline-Test-Policy-Allow" }, { "Account": "222222222222", "PolicyType": "UserInlinePolicy", "PolicyName": "Inline-Test-Policy-Allow", "PolicyIdentifier": "222222_1-group:Inline-Test-Policy-Allow" } ], "ImpactedPolicyStatements": [ [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccounts" ], "Resource": "*" }] ], "SuggestedPolicyStatementsToAppend": [{ "Sid": "BillingConsolePolicyMigrator0", "Effect": "Allow", "Action": [ "account:GetAccountInformation", "account:GetAlternateContact", "account:GetChallengeQuestions", "account:GetContactInformation", "billing:GetContractInformation", "billing:GetIAMAccessPreference", "billing:GetSellerOfRecord", "payments:ListPaymentPreferences" ], "Resource": "*" }] }, { "GroupName": "Group2", "ImpactedPolicies": [{ "Account": "111111111111", "PolicyType": "UserInlinePolicy", "PolicyName": "Inline-Test-Policy-deny", "PolicyIdentifier": "1111111_2-user:Inline-Test-Policy-deny" }, { "Account": "222222222222", "PolicyType": "UserInlinePolicy", "PolicyName": "Inline-Test-Policy-deny", "PolicyIdentifier": "222222_2-group:Inline-Test-Policy-deny" } ], "ImpactedPolicyStatements": [ [{ "Sid": "VisualEditor0", "Effect": "deny", "Action": [ "aws-portal:ModifyAccount" ], "Resource": "*" }] ], "SuggestedPolicyStatementsToAppend": [{ "Sid": "BillingConsolePolicyMigrator1", "Effect": "Deny", "Action": [ "account:CloseAccount", "account:DeleteAlternateContact", "account:PutAlternateContact", "account:PutChallengeQuestions", "account:PutContactInformation", "billing:PutContractInformation", "billing:UpdateIAMAccessPreference", "payments:UpdatePaymentPreferences" ], "Resource": "*" }] } ]
detailed_affected_policies.json

Enthält die Definition aller betroffenen Richtlinien, die das identify_affected_policies.py-Skript für Mitgliedskonten identifiziert hat.

In der Datei werden ähnliche Richtlinien zusammengefasst. Sie können diese Datei als Referenz verwenden, sodass Sie Richtlinienänderungen überprüfen und verwalten können, ohne sich bei jedem Mitgliedskonto anmelden zu müssen, um die Aktualisierungen für jede Richtlinie und jedes Konto einzeln zu überprüfen.

Sie können die Datei nach dem Richtliniennamen durchsuchen (z. B. YourCustomerManagedReadOnlyAccessBillingUser) und dann die betroffenen Richtliniendefinitionen überprüfen.

Beispiel: detailed_affected_policies.json
[{ "Account": "111111111111", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalviewAccount", "PolicyIdentifier": "arn:aws:iam::111111111111:policy/AwsPortalviewAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount" ], "Resource": "*" }] } }, { "Account": "222222222222", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalviewAccount", "PolicyIdentifier": "arn:aws:iam::222222222222:policy/AwsPortalviewAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount" ], "Resource": "*" }] } }, { "Account": "111111111111", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalModifyAccount", "PolicyIdentifier": "arn:aws:iam::111111111111:policy/AwsPortalModifyAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "aws-portal:ModifyAccount" ], "Resource": "*" }] } }, { "Account": "222222222222", "PolicyType": "CustomerManagedPolicy", "PolicyName": "AwsPortalModifyAccount", "PolicyIdentifier": "arn:aws:iam::222222222222:policy/AwsPortalModifyAccount", "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "aws-portal:ModifyAccount" ], "Resource": "*" }] } } ]

Schritt 4: Überprüfen der vorgeschlagenen Änderungen

Nachdem das Skript die affected_policies_and_suggestions.json-Datei erstellt hat, überprüfen Sie sie und nehmen alle Änderungen vor.

So überprüfen Sie die betroffenen Richtlinien
  1. Öffnen Sie die Datei affected_policies_and_suggestions.json in einem Texteditor.

  2. Stellen Sie in dem AccountsScanned-Abschnitt sicher, dass die Anzahl ähnlicher Gruppen, die in den gescannten Konten identifiziert wurden, erwartet wird.

  3. Prüfen Sie die vorgeschlagenen detaillierten Maßnahmen, die zu den betroffenen Richtlinien hinzugefügt werden.

  4. Aktualisieren Sie Ihre Datei nach Bedarf und speichern Sie sie dann.

Beispiel 1: Aktualisieren der action_mapping_config.json-Datei

Sie können die vorgeschlagenen Zuordnungen in der action_mapping_config.json aktualisieren. Nachdem Sie die Datei aktualisiert haben, können Sie das identify_affected_policies.py-Skript erneut ausführen. Dieses Skript generiert aktualisierte Vorschläge für die betroffenen Richtlinien.

Sie können mehrere Versionen der action_mapping_config.json-Datei erstellen, um die Richtlinien für verschiedene Konten mit unterschiedlichen Berechtigungen zu ändern. Sie könnten beispielsweise eine Datei mit dem Namen action_mapping_config_testing.json erstellen, um die Berechtigungen für Ihre Testkonten und action_mapping_config_production.json für Ihre Produktionskonten zu migrieren.

Beispiel 2: Aktualisieren der affected_policies_and_suggestions.json-Datei

Um Änderungen an den vorgeschlagenen Ersetzungen für eine bestimmte betroffene Richtliniengruppe vorzunehmen, können Sie den Abschnitt „Ersatzvorschläge“ in der affected_policies_and_suggestions.json-Datei direkt bearbeiten.

Alle Änderungen, die Sie in diesem Abschnitt vornehmen, werden auf alle Richtlinien innerhalb der jeweiligen betroffenen Richtliniengruppe angewendet.

Beispiel 3: Anpassen einer bestimmten Richtlinie

Wenn Sie feststellen, dass eine Richtlinie innerhalb einer betroffenen Richtliniengruppe andere Änderungen als die vorgeschlagenen Aktualisierungen benötigt, können Sie wie folgt vorgehen:

  • Schließt bestimmte Konten aus dem identify_affected_policies.py-Skript aus. Sie können diese ausgeschlossenen Konten dann separat überprüfen.

  • Aktualisieren Sie die betroffenen Sid-Blöcke, indem Sie die betroffenen Richtlinien und Konten entfernen, für die unterschiedliche Berechtigungen erforderlich sind. Erstellen Sie einen JSON Block, der nur die spezifischen Konten umfasst oder sie von der Ausführung der Richtlinie ausschließt, von der das aktuelle Update betroffen ist.

    Wenn Sie das identify_affected_policies.py-Skript erneut ausführen, werden nur die entsprechenden Konten im aktualisierten Block angezeigt. Anschließend können Sie die Ersatzvorschläge für diesen bestimmten Sid-Block verfeinern.

Schritt 5: Aktualisieren der betroffenen Richtlinien

Nachdem Sie die Ersatzvorschläge überprüft und verfeinert haben, führen Sie das update_affected_policies.py-Skript aus. Das Skript verwendet die affected_policies_and_suggestions.json-Datei als Eingabe. Dieses Skript übernimmt die BillingConsolePolicyMigratorRole IAM Rolle, die betroffenen Richtlinien zu aktualisieren, die in der affected_policies_and_suggestions.json Datei aufgeführt sind.

So aktualisieren Sie die betroffenen Richtlinien
  1. Wenn Sie dies noch nicht getan haben, öffnen Sie ein Befehlszeilenfenster für die AWS CLI.

  2. Geben Sie den folgenden Befehl ein, um das update_affected_policies.py-Skript auszuführen. Sie können die folgenden Eingabeparameter eingeben:

  • Der Verzeichnispfad der affected_policies_and_suggestions.json-Datei, die eine Liste der betroffenen Richtlinien enthält, die aktualisiert werden sollen. Diese Datei ist eine Ausgabe des vorherigen Schritts.

python3 update_affected_policies.py --affected-policies-directory Affected_Policies_<Timestamp>

Das update_affected_policies.py-Skript aktualisiert die betroffenen Richtlinien in der affected_policies_and_suggestions.json-Datei mit den vorgeschlagenen neuen Aktionen. Das Skript fügt den Richtlinien einen Sid Block hinzu, der als gekennzeichnet istBillingConsolePolicyMigrator#, wobei # entspricht einem inkrementellen Zähler (z. B. 1, 2, 3).

Wenn die betroffene Richtlinie beispielsweise mehrere Sid-Blöcke enthält, die alte Aktionen verwenden, fügt das Skript mehrere Sid-Blöcke hinzu, die als BillingConsolePolicyMigrator# erscheinen, um jedem Sid-Block zu entsprechen.

Wichtig
  • Das Skript entfernt weder alte IAM Aktionen aus den Richtlinien noch ändert es bestehende Sid Blöcke in den Richtlinien. Stattdessen werden Sid-Blöcke erstellt und an das Ende der Richtlinie angehängt. Diese neuen Sid Blöcke enthalten die vorgeschlagenen neuen Aktionen aus der JSON Datei. Dadurch wird sichergestellt, dass die Berechtigungen der ursprünglichen Richtlinien nicht geändert werden.

  • Wir raten davon ab, den Namen der BillingConsolePolicyMigrator#-Sid-Blöcke zu ändern, falls Sie Ihre Änderungen rückgängig machen müssen.

Beispiel: Richtlinie mit angehängten Sid-Blöcken

Sehen Sie sich die angefügten Sid-Blöcke in den BillingConsolePolicyMigrator1- und BillingConsolePolicyMigrator2-Blöcken an.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "ce:*", "aws-portal:ViewAccount" ], "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111111111111:BillingRole" }, "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "true" } } }, { "Sid": "BillingConsolePolicyMigrator1", "Effect": "Allow", "Action": [ "account:GetAccountInformation", "account:GetAlternateContact", "account:GetChallengeQuestions", "account:GetContactInformation", "billing:GetContractInformation", "billing:GetIAMAccessPreference", "billing:GetSellerOfRecord", "payments:ListPaymentPreferences" ], "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111111111111:BillingRole" }, "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "true" } } }, { "Sid": "BillingConsolePolicyMigrator2", "Effect": "Deny", "Action": [ "account:CloseAccount", "account:DeleteAlternateContact", "account:PutAlternateContact", "account:PutChallengeQuestions", "account:PutContactInformation", "billing:PutContractInformation", "billing:UpdateIAMAccessPreference", "payments:UpdatePaymentPreferences" ], "Resource": "*" } ] }

Das Skript generiert einen Statusbericht, der erfolglose Operationen enthält, und gibt die JSON Datei lokal aus.

Beispiel: Statusbericht
[{ "Account": "111111111111", "PolicyType": "Customer Managed Policy" "PolicyName": "AwsPortalViewPaymentMethods", "PolicyIdentifier": "identifier", "Status": "FAILURE", // FAILURE or SKIPPED "ErrorMessage": "Error message details" }]
Wichtig
  • Wenn Sie die identify_affected_policies.py- und update_affected_policies.py -Skripte erneut ausführen, überspringen sie alle Richtlinien, die den BillingConsolePolicyMigratorRole#-Sid-Block enthalten. Die Skripte gehen davon aus, dass diese Richtlinien zuvor gescannt und aktualisiert wurden und dass keine zusätzlichen Updates erforderlich sind. Dadurch wird verhindert, dass das Skript dieselben Aktionen in der Richtlinie dupliziert.

  • Nachdem Sie die betroffenen Richtlinien aktualisiert haben, können Sie die neuen IAM mithilfe des Tools für die betroffenen Richtlinien verwenden. Wenn Sie Probleme feststellen, können Sie das Tool verwenden, um zu den vorherigen Aktionen zurückzukehren. Sie können auch ein Skript verwenden, um Ihre Richtlinienaktualisierungen rückgängig zu machen.

    Weitere Informationen finden Sie unter Wie Sie das Tool für betroffene Richtlinien verwenden und im Blogbeitrag Änderungen an den Berechtigungen für AWS Fakturierung, Kostenmanagement und Kontokonsolen.

  • Um Ihre Aktualisierungen zu verwalten, können Sie:

    • Die Skripte für jedes Konto einzeln ausführen.

    • Das Skript stapelweise für ähnliche Konten ausführen, z. B. für Test-, QA- und Produktionskonten.

    • Das Skript für alle Konten ausführen.

    • Wählen Sie eine Mischung aus der stapelweisen Aktualisierung einiger Konten und der anschließenden einzelnen Aktualisierung anderer Konten.

Schritt 6: Ihre Änderungen rückgängig machen (optional)

Das rollback_affected_policies.py-Skript macht die Änderungen rückgängig, die auf jede betroffene Richtlinie für die angegebenen Konten angewendet wurden. Das Skript entfernt alle Sid-Blöcke, die das update_affected_policies.py-Skript angehängt hat. Diese Sid-Blöcke haben das BillingConsolePolicyMigratorRole#-Format.

So machen Sie Ihre Änderungen rückgängig
  1. Wenn Sie dies noch nicht getan haben, öffnen Sie ein Befehlszeilenfenster für die AWS CLI.

  2. Geben Sie den folgenden Befehl ein, um das rollback_affected_policies.py-Skript auszuführen. Sie können die folgenden Eingabeparameter eingeben:

  • --accounts

    • Gibt eine durch Kommas getrennte Liste der Elemente an AWS-Konto IDs, die Sie in das Rollback aufnehmen möchten.

    • Das folgende Beispiel scannt die Richtlinien in der angegebenen Liste und entfernt alle Anweisungen AWS-Konten, die den Block enthalten. BillingConsolePolicyMigrator# Sid

      python3 rollback_affected_policies.py –-accounts 111122223333, 555555555555, 666666666666
  • --all

    • Schließt alle AWS-Konto IDs in Ihrer Organisation ein.

    • Im folgenden Beispiel werden die Richtlinien in Ihrer Organisation gescannt und alle Anweisungen entfernt, die den BillingConsolePolicyMigratorRole#-Sid-Block enthalten.

    python3 rollback_affected_policies.py –-all
  • --exclude-accounts

    • Gibt eine durch Kommas getrennte Liste der Elemente an AWS-Konto IDs, die Sie vom Rollback ausschließen möchten.

      Sie können diesen Parameter nur verwenden, wenn Sie auch den --all-Parameter angeben.

    • Im folgenden Beispiel werden die Richtlinien für alle AWS-Konten in Ihrer Organisation gescannt, mit Ausnahme der angegebenen Konten.

      python3 rollback_affected_policies.py --all --exclude-accounts 777777777777, 888888888888, 999999999999

Beispiele für IAM-Richtlinien

Richtlinien gelten als ähnlich, wenn Folgendes identisch ist:

  • Betroffene Aktionen in allen Sid-Blöcken.

  • Einzelheiten zu den folgenden IAM Elementen:

    • Effect (Allow/Deny)

    • Principal (wem wird der Zugriff gewährt oder verweigert)

    • NotAction (welche Aktionen sind nicht erlaubt)

    • NotPrincipal (wem wird der Zugriff explizit verweigert)

    • Resource(für welche AWS Ressourcen die Richtlinie gilt)

    • Condition (alle spezifischen Bedingungen, unter denen die Richtlinie gilt)

Die folgenden Beispiele zeigen Richtlinien, die aufgrund der Unterschiede zwischen ihnen als ähnlich angesehen werden IAM könnten oder auch nicht.

Beispiel 1: Richtlinien werden als ähnlich angesehen

Jeder Richtlinientyp ist anders, aber beide Richtlinien enthalten einen Sid-Block mit derselben betroffenen Action.

Policy 1: Group inline IAM policy
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
Policy 2: Customer managed IAM policy
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
Beispiel 2: Richtlinien werden als ähnlich angesehen

Beide Richtlinien enthalten einen Sid-Block mit derselben betroffenen Action. Richtlinie 2 enthält zusätzliche Aktionen, aber diese Aktionen sind nicht betroffen.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing", "athena:*" ], "Resource": "*" }] }
Beispiel 3: Richtlinien werden als ähnlich angesehen

Beide Richtlinien enthalten einen Sid-Block mit derselben betroffenen Action. Richtlinie 2 enthält jedoch ein Condition-Element, das in Richtlinie 1 nicht vorhanden ist.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing" ], "Resource": "*" }] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:ViewAccount", "aws-portal:*Billing", "athena:*" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "true" } } }] }
Beispiel 4: Richtlinien werden als ähnlich angesehen

Richtlinie 1 hat einen einzigen Sid-Block mit einer betroffenen Action. Richtlinie 2 hat mehrere Sid-Blöcke, aber die betroffene Action erscheint nur in einem Block.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }] }}
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "cloudtrail:Get*" ], "Resource": "*" } ] }
Beispiel 5: Richtlinien werden als ähnlich angesehen

Richtlinie 1 hat einen einzigen Sid-Block mit einer betroffenen Action. Richtlinie 2 besteht aus mehreren Sid-Blöcken, und die betroffenen Action werden in mehreren Blöcken angezeigt.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:View*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Deny", "Action": [ "aws-portal:Modify*" ], "Resource": "*" } ] }
Beispiel 6: Richtlinien werden als ähnlich angesehen

Beide Richtlinien bestehen aus mehreren Sid-Blöcken, und in jedem Sid-Block befindet sich dieselbe betroffene Action.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:*Account", "iam:Get*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Deny", "Action": [ "aws-portal:Modify*", "iam:Update*" ], "Resource": "*" } ] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:*Account", "athena:Get*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Deny", "Action": [ "aws-portal:Modify*", "athena:Update*" ], "Resource": "*" } ] }
Beispiel 7

Die folgenden beiden Richtlinien werden nicht als ähnlich angesehen.

Richtlinie 1 hat einen einzigen Sid-Block mit einer betroffenen Action. Richtlinie 2 hat einen Sid-Block mit derselben betroffenen Action. Richtlinie 2 enthält jedoch auch einen weiteren Sid-Block mit unterschiedlichen Aktionen.

Policy 1
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:*Account", "iam:Get*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Deny", "Action": [ "aws-portal:Modify*", "iam:Update*" ], "Resource": "*" } ] }
Policy 2
{ "Version": "2012-10-17", "Statement": [{ "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "aws-portal:*Account", "athena:Get*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Deny", "Action": [ "aws-portal:*Billing", "athena:Update*" ], "Resource": "*" } ] }