Steuern des Zugriffs auf Wartungsfenster mithilfe der AWS CLI - AWS Systems Manager

Steuern des Zugriffs auf Wartungsfenster mithilfe der AWS CLI

Im Folgenden wird beschrieben, wie Sie die AWS Command Line Interface (AWS CLI) für das Erstellen der erforderlichen Rollen und Berechtigungen für die Maintenance Windows-Funktion, eine Funktion von AWS Systems Manager, verwenden.

Aufgabe 1: Vertrauensrichtlinien und vom Kunden verwaltete Richtliniendateien im JSON-Format erstellen

Wartungsfenster-Aufgaben erfordern eine IAM-Rolle, um die Berechtigungen bereitzustellen, die für die Ausführung für die Zielressourcen erforderlich sind. Die Berechtigungen werden durch eine IAM-Richtlinie bereitgestellt, die der Rolle angefügt wird. Die Arten von Aufgaben, die Sie ausführen, und Ihre anderen betrieblichen Anforderungen bestimmen den Inhalt dieser Richtlinie. Wir bieten eine Basisrichtlinie an, die Sie Ihren Bedürfnissen anpassen können. Abhängig von den Aufgaben und Arten von Aufgaben, die Ihre Wartungsfenster ausführen, benötigen Sie möglicherweise nicht alle Berechtigungen in dieser Richtlinie und müssen möglicherweise zusätzliche Berechtigungen einschließen.

In dieser Aufgabe geben Sie die Berechtigungen, die für Ihre benutzerdefinierte Rolle im Wartungsfenster erforderlich sind, in einem Paar von JSON-Dateien an. Sie hängen diese Richtlinie an die Rolle an, die Sie später in Aufgabe 2: Erstellen und verifizieren einer benutzerdefinierten Servicerolle für Wartungsfenster mithilfe der AWS CLI erstellen.

Um Vertrauensrichtlinien und vom Kunden verwaltete Richtliniendateien zu erstellen
  1. Kopieren Sie die folgende Vertrauensrichtlinie in eine Textdatei. Speichen Sie diese Datei mit folgendem Namen und folgender Dateierweiterung: mw-role-trust-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ssm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Kopieren Sie die folgende JSON-Richtlinie und fügen Sie sie in eine andere Textdatei ein. Speichern Sie diese Datei in demselben Verzeichnis, in dem Sie die erste Datei erstellt haben, mit dem folgenden Namen und der folgenden Dateierweiterung: mw-role-custom-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:SendCommand", "ssm:CancelCommand", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetCommandInvocation", "ssm:GetAutomationExecution", "ssm:StartAutomationExecution", "ssm:ListTagsForResource", "ssm:GetParameters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StartExecution" ], "Resource": [ "arn:aws:states:*:*:execution:*:*", "arn:aws:states:*:*:stateMachine:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*" ] }, { "Effect": "Allow", "Action": [ "resource-groups:ListGroups", "resource-groups:ListGroupResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ssm.amazonaws.com" ] } } } ] }
  3. Ändern Sie den Inhalt vonmw-role-custom-policy.json nach Bedarf für die Wartungsaufgaben, die Sie in Ihrem Konto ausführen. Die Änderungen, die Sie vornehmen, beziehen sich auf Ihre geplanten Abläufe.

    Beispielsweise:

    • Sie können Amazon-Ressourcenname (ARN) für bestimmte Funktionen und Zustandsmaschinen angeben, anstatt Platzhalter-Kennzeichner (*) zu verwenden.

    • Wenn Sie keine AWS Step Functions-Aufgaben ausführen möchten, können Sie die states-Berechtigungen und (ARNs) entfernen.

    • Wenn Sie keine AWS Lambda-Aufgaben ausführen möchten, können Sie die lambda-Berechtigungen und ARNs entfernen.

    • Wenn Sie keine Automatisierungs-Aufgaben ausführen möchten, können Sie die ssm:GetAutomationExecution- und ssm:StartAutomationExecution-Berechtigungen entfernen.

    • Fügen Sie zusätzliche Berechtigungen hinzu, die möglicherweise für die Ausführung der Aufgaben erforderlich sind. Manche Automatisierungsaktionen basieren z. B. auf AWS CloudFormation-Stacks. Aus diesem Grund sind die Berechtigungen cloudformation:CreateStack, cloudformation:DescribeStacks und cloudformation:DeleteStack erforderlich.

      Als weiteres Beispiel benötigt das Automation-Runbook AWS-CopySnapshot Berechtigungen zum Erstellen eines Amazon Elastic Block Store (Amazon EBS)-Snapshots. Daher benötigt die Servicerolle die Berechtigung ec2:CreateSnapshot.

      Informationen zu den Rollenberechtigungen, die von Automation-Runbooks benötigt werden, finden Sie in den Runbook-Beschreibungen in der Referenz zum AWS Systems Manager-Automation-Runbook..

    Speichern Sie die Datei erneut, nachdem Sie alle erforderlichen Änderungen vorgenommen haben.

Aufgabe 2: Erstellen und verifizieren einer benutzerdefinierten Servicerolle für Wartungsfenster mithilfe der AWS CLI

Die Richtlinie, die Sie in der vorherigen Aufgabe erstellt haben, ist an die Wartungsfenster-Servicerolle angehängt, die Sie in dieser Aufgabe erstellen. Wenn Benutzer eine Wartungsfenster-Aufgabe registrieren, geben sie diese IAM-Rolle als Teil der Aufgabenkonfiguration an. Die Berechtigungen in dieser Rolle ermöglichen es Systems Manager, Wartungsfenster-Aufgaben in Ihrem Namen auszuführen.

Wichtig

Zuvor bot Ihnen die Systems-Manager-Konsole die Möglichkeit, die von AWS verwaltete serviceverknüpfte IAM-Rolle AWSServiceRoleForAmazonSSM als Wartungsrolle für Ihre Aufgaben zu verwenden. Die Verwendung dieser Rolle und der zugehörigen Richtlinie, AmazonSSMServiceRolePolicy, für Wartungsfenster-Aufgaben wird nicht mehr empfohlen. Wenn Sie diese Rolle jetzt für Wartungsfenster-Aufgaben verwenden, empfehlen wir Ihnen, sie nicht mehr zu verwenden. Erstellen Sie stattdessen Ihre eigene IAM-Rolle, die die Kommunikation zwischen Systems Manager und anderen AWS-Services ermöglicht, wenn Ihre Wartungsfenster-Aufgaben ausgeführt werden.

In dieser Aufgabe führen Sie CLI-Befehle aus, um Ihre Windows-Wartungsservicerolle zu erstellen, und fügen dabei den Richtlinieninhalt aus den von Ihnen erstellten JSON-Dateien hinzu.

Erstellen einer benutzerdefinierten Servicerolle für Wartungsfenster mithilfe der AWS CLI
  1. Öffnen Sie AWS CLI und führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem Sie mw-role-custom-policy.json und mw-role-trust-policy.json platziert haben. Der Befehl erstellt eine Wartungsfenster-Servicerolle namens my-maintenance-window-role und fügt ihr die Vertrauensrichtlinie hinzu.

    Linux & macOS
    aws iam create-role \ --role-name "my-maintenance-window-role" \ --assume-role-policy-document file://mw-role-trust-policy.json
    Windows
    aws iam create-role ^ --role-name "my-maintenance-window-role" ^ --assume-role-policy-document file://mw-role-trust-policy.json

    Die vom System zurückgegebenen Informationen ähneln den Folgenden.

    {
        "Role": {
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Action": "sts:AssumeRole",
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "ssm.amazonaws.com"
                        }
                    }
                ]
            },
            "RoleId": "AROAIIZKPBKS2LEXAMPLE",
            "CreateDate": "2024-08-19T03:40:17.373Z",
            "RoleName": "my-maintenance-window-role",
            "Path": "/",
            "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role"
        }
    }
    Anmerkung

    Notieren Sie sich die Werte für RoleName und Arn. Sie brauchen diese Informationen im nächsten Befehl.

  2. Führen Sie den folgenden Befehl aus, um der Rolle die vom Kunden verwaltete Richtlinie anzufügen. Ersetzen Sie den Platzhalter account-id durch Ihre eigene AWS-Konto-ID.

    Linux & macOS
    aws iam attach-role-policy \ --role-name "my-maintenance-window-role" \ --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
    Windows
    aws iam attach-role-policy ^ --role-name "my-maintenance-window-role" ^ --policy-arn "arn:aws:iam::account-id:policy/mw-role-custom-policy.json"
  3. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Ihre Rolle erstellt wurde und ob die Vertrauensrichtlinie angefügt wurde.

    aws iam get-role --role-name my-maintenance-window-role

    Die vom System zurückgegebenen Informationen ähneln den Folgenden:

    {
        "Role": {
            "Path": "/",
            "RoleName": "my-maintenance-window-role",
            "RoleId": "AROA123456789EXAMPLE",
            "Arn": "arn:aws:iam::123456789012:role/my-maintenance-window-role",
            "CreateDate": "2024-08-19T14:13:32+00:00",
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "ssm.amazonaws.com"
                        },
                        "Action": "sts:AssumeRole"
                    }
                ]
            },
            "MaxSessionDuration": 3600,
            "RoleLastUsed": {
                "LastUsedDate": "2024-08-19T14:30:44+00:00",
                "Region": "us-east-2"
            }
        }
    }
  4. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die vom Kunden verwaltete Richtlinie der Rolle angefügt wurde.

    aws iam list-attached-role-policies --role-name my-maintenance-window-role

    Die vom System zurückgegebenen Informationen ähneln den Folgenden:

    {
        "AttachedPolicies": [
            {
                "PolicyName": "mw-role-custom-policy",
                "PolicyArn": "arn:aws:iam::123456789012:policy/mw-role-custom-policy"
            }
        ]
    }

Aufgabe 3: Bestimmten Benutzern die Berechtigung erteilen, Wartungsfensteraufgaben über die AWS CLI zu registrieren

Wenn Sie Benutzern Berechtigungen für den Zugriff auf die Servicerolle des benutzerdefinierten Wartungsfensters erteilen, können sie sie mit ihren Wartungsfenstern verwenden. Dies gilt zusätzlich zu den Berechtigungen, die Sie ihnen bereits zur Arbeit mit den Systems-Manager-API-Befehlen für die Funktion Maintenance Windows aus. Diese IAM-Rolle vermittelt, dass Berechtigungen zum Ausführen einer Wartungsfenster-Aufgabe erforderlich sind. Infolgedessen kann ein Benutzer einem Wartungsfenster mithilfe Ihrer benutzerdefinierten Servicerolle keine Aufgaben registrieren, ohne diese IAM-Berechtigungen übergeben zu können.

Wenn Sie eine Aufgabe bei einem Wartungsfenster registrieren, geben Sie eine Servicerolle an, um die eigentlichen Aufgabenvorgänge auszuführen. Hierbei handelt es sich um die Rolle, die vom Service angenommen wird, wenn Aufgaben in Ihrem Namen ausgeführt werden. Um die Aufgabe selbst zu registrieren, weisen Sie zuvor die IAM-PassRole-Richtlinie einer IAM-Entität (z. B. einem Benutzer oder einer Gruppe) zu. Dadurch kann die IAM Entität als Teil der Registrierung dieser Aufgaben im Wartungsfenster die Rolle angeben, die beim Ausführen der Aufgaben verwendet werden soll. Weitere Informationen finden Sie unter Erteilen von Berechtigungen, mit denen ein Benutzer eine Rolle an einen AWS-Service übergeben kann im IAM-Benutzerhandbuch.

So konfigurieren Sie Berechtigungen für Benutzer, die Wartungsfensteraufgaben registrieren dürfen mithilfe von AWS CLI
  1. Kopieren Sie die folgende AWS Identity and Access Management (IAM)-Richtlinie und fügen Sie sie in einen Text-Editor ein und speichern Sie sie mit dem folgenden Namen und Dateierweiterung: mw-passrole-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/my-maintenance-window-role" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/" }, { "Effect": "Allow", "Action": "iam:ListRoles", "Resource": "arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/" } ] }

    Ersetzen Sie my-maintenance-window-role mit dem Namen der benutzerdefinierten Wartungsfensterrolle, die Sie zuvor erstellt haben.

    Ersetzen Sie account-id durch die ID Ihres AWS-Konto. Wenn Sie diese Berechtigung für die Ressource arn:aws:iam::account-id:role/ hinzufügen, können Benutzer in der Gruppe Kundenrollen in der Konsole anzeigen und auswählen, wenn sie eine Wartungsfensteraufgabe erstellen. Wenn Sie diese Berechtigung für arn:aws:iam::account-id:role/aws-service-role/ssm.amazonaws.com/ hinzufügen, können Benutzer in der Gruppe die mit dem Systems Manager-Service verknüpfte Rolle in der Konsole auswählen, wenn sie eine Wartungsfensteraufgabe erstellen.

  2. Öffnen Sie die AWS CLI.

  3. Je nachdem, ob Sie die Berechtigung einer IAM-Entität (Benutzer oder Gruppe) zuweisen, führen Sie einen der folgenden Befehle aus.

    • Für eine IAM-Entität:

      Linux & macOS
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-user-policy ^ --user-name "user-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Geben Sie für user-name den Benutzer an, der Wartungsfenstern Aufgaben zuweist. Geben Sie für policy-name (Richtlinienname) den Namen zum Identifizieren der Richtlinie an, beispielsweise my-iam-passrole-policy. Geben Sie als path-to-document den Pfad zur in Schritt 1 gespeicherten Datei an. Zum Beispiel: file://C:\Temp\mw-passrole-policy.json

      Anmerkung

      Um einem Benutzer Zugriff zum Registrieren von Aufgaben für Wartungsfenster über die Systems-Manager-Konsole zu gewähren, müssen Sie auch die Richtlinie AmazonSSMFullAccess Ihrem Benutzer zuweisen (oder eine IAM-Richtlinie, die eine kleinere Gruppe von Zugriffsberechtigungen für Systems Manager bereitstellt, die die Aufgaben im Wartungsfenster abdeckt). Führen Sie den folgenden Befehl aus, um Ihrem Benutzer die Richtlinie AmazonSSMFullAccess zuzuweisen.

      Linux & macOS
      aws iam attach-user-policy \ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" \ --user-name "user-name"
      Windows
      aws iam attach-user-policy ^ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" ^ --user-name "user-name"
    • Für eine IAM-Gruppe:

      Linux & macOS
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-group-policy ^ --group-name "group-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Geben Sie für group-name die Gruppe ein, deren Mitglieder Wartungsfenstern Aufgaben zuweisen. Geben Sie für policy-name (Richtlinienname) den Namen zum Identifizieren der Richtlinie an, beispielsweise my-iam-passrole-policy. Geben Sie als path-to-document den Pfad zur in Schritt 1 gespeicherten Datei an. Zum Beispiel: file://C:\Temp\mw-passrole-policy.json

      Anmerkung

      Um Mitgliedern einer Gruppe Zugriff zum Registrieren von Aufgaben für Wartungsfenster über die Systems Manager-Konsole zu gewähren, müssen Sie die Richtlinie AmazonSSMFullAccess auch Ihrer Gruppe zuweisen. Führen Sie den folgenden Befehl aus, um Ihrer Gruppe diese Richtlinie zuzuweisen.

      Linux & macOS
      aws iam attach-group-policy \ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" \ --group-name "group-name"
      Windows
      aws iam attach-group-policy ^ --policy-arn "arn:aws:iam::aws:policy/AmazonSSMFullAccess" ^ --group-name "group-name"
  4. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Richtlinie der Gruppe zugewiesen wurde.

    Linux & macOS
    aws iam list-group-policies \ --group-name "group-name"
    Windows
    aws iam list-group-policies ^ --group-name "group-name"

Aufgabe 4: Verhindern Sie, dass bestimmte Benutzer Aufgaben im Wartungsfenster registrieren, indem Sie AWS CLI nutzen

Sie können die ssm:RegisterTaskWithMaintenanceWindow-Berechtigung für die Benutzer in Ihrem AWS-Konto verweigern, denen Sie keine Aufgaben mit Wartungsfenstern registrieren möchten. Dies bietet eine zusätzliche Verhinderungsebene für Benutzer, die keine Wartungsfenster-Aufgaben registrieren sollten.

Je nachdem, ob Sie die ssm:RegisterTaskWithMaintenanceWindow-Berechtigung für einen einzelnen Benutzer oder eine Gruppe verweigern, verwenden Sie eines der folgenden Verfahren, um zu verhindern, dass Benutzer Aufgaben mit einem Wartungsfenster registrieren können.

So konfigurieren Sie Berechtigungen für Benutzer, die keine Wartungsfensteraufgaben registrieren dürfen mithilfe von AWS CLI
  1. Kopieren Sie die folgende IAM-Richtlinie und fügen Sie sie in einen Text-Editor ein und speichern Sie sie mit dem folgenden Namen und Dateierweiterung: deny-mw-tasks-policy.json.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ssm:RegisterTaskWithMaintenanceWindow", "Resource": "*" } ] }
  2. Öffnen Sie die AWS CLI.

  3. Je nachdem, ob Sie die Berechtigung einer IAM-Entität (Benutzer oder Gruppe) zuweisen, führen Sie einen der folgenden Befehle aus.

    • Für einen Benutzer:

      Linux & macOS
      aws iam put-user-policy \ --user-name "user-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-user-policy ^ --user-name "user-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Geben Sie für user-name den Benutzer an, der daran gehindert werden soll, den Wartungsfenstern Aufgaben zuzuweisen. Geben Sie für policy-name (Richtlinienname) den Namen zum Identifizieren der Richtlinie an, beispielsweise my-deny-mw-tasks-policy. Geben Sie als path-to-document den Pfad zur in Schritt 1 gespeicherten Datei an. Zum Beispiel: file://C:\Temp\deny-mw-tasks-policy.json

    • Für eine Gruppe:

      Linux & macOS
      aws iam put-group-policy \ --group-name "group-name" \ --policy-name "policy-name" \ --policy-document file://path-to-document
      Windows
      aws iam put-group-policy ^ --group-name "group-name" ^ --policy-name "policy-name" ^ --policy-document file://path-to-document

      Geben Sie für user-name geben Sie die Gruppe an, deren Zuordnung von Aufgaben zu Wartungsfenstern verhindert werden soll. Geben Sie für policy-name (Richtlinienname) den Namen zum Identifizieren der Richtlinie an, beispielsweise my-deny-mw-tasks-policy. Geben Sie als path-to-document den Pfad zur in Schritt 1 gespeicherten Datei an. Zum Beispiel: file://C:\Temp\deny-mw-tasks-policy.json

  4. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Richtlinie der Gruppe zugewiesen wurde.

    Linux & macOS
    aws iam list-group-policies \ --group-name "group-name"
    Windows
    aws iam list-group-policies ^ --group-name "group-name"