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.
Themen
- Aufgabe 1: Vertrauensrichtlinien und vom Kunden verwaltete Richtliniendateien im JSON-Format erstellen
- Aufgabe 2: Erstellen und verifizieren einer benutzerdefinierten Servicerolle für Wartungsfenster mithilfe der AWS CLI
- Aufgabe 3: Bestimmten Benutzern die Berechtigung erteilen, Wartungsfensteraufgaben über die AWS CLI zu registrieren
- Aufgabe 4: Verhindern Sie, dass bestimmte Benutzer Aufgaben im Wartungsfenster registrieren, indem Sie AWS CLI nutzen
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
-
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" } ] }
-
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" ] } } } ] }
-
Ändern Sie den Inhalt von
mw-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
- undssm: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
undcloudformation: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 Berechtigungec2: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
-
Öffnen Sie AWS CLI und führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem Sie
mw-role-custom-policy.json
undmw-role-trust-policy.json
platziert haben. Der Befehl erstellt eine Wartungsfenster-Servicerolle namensmy-maintenance-window-role
und fügt ihr die Vertrauensrichtlinie hinzu.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
undArn
. Sie brauchen diese Informationen im nächsten Befehl. -
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. -
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" } } }
-
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
-
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 Ressourcearn:aws:iam::
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üraccount-id
:role/arn:aws:iam::
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.account-id
:role/aws-service-role/ssm.amazonaws.com/ -
Öffnen Sie die AWS CLI.
-
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:
Geben Sie für
user-name
den Benutzer an, der Wartungsfenstern Aufgaben zuweist. Geben Sie fürpolicy-name (Richtlinienname)
den Namen zum Identifizieren der Richtlinie an, beispielsweisemy-iam-passrole-policy
. Geben Sie alspath-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 RichtlinieAmazonSSMFullAccess
zuzuweisen. -
Für eine IAM-Gruppe:
Geben Sie für
group-name
die Gruppe ein, deren Mitglieder Wartungsfenstern Aufgaben zuweisen. Geben Sie fürpolicy-name (Richtlinienname)
den Namen zum Identifizieren der Richtlinie an, beispielsweisemy-iam-passrole-policy
. Geben Sie alspath-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.
-
-
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Richtlinie der Gruppe zugewiesen wurde.
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
-
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": "*" } ] }
-
Öffnen Sie die AWS CLI.
-
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:
Geben Sie für
user-name
den Benutzer an, der daran gehindert werden soll, den Wartungsfenstern Aufgaben zuzuweisen. Geben Sie fürpolicy-name (Richtlinienname)
den Namen zum Identifizieren der Richtlinie an, beispielsweisemy-deny-mw-tasks-policy
. Geben Sie alspath-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:
Geben Sie für
user-name
geben Sie die Gruppe an, deren Zuordnung von Aufgaben zu Wartungsfenstern verhindert werden soll. Geben Sie fürpolicy-name (Richtlinienname)
den Namen zum Identifizieren der Richtlinie an, beispielsweisemy-deny-mw-tasks-policy
. Geben Sie alspath-to-document
den Pfad zur in Schritt 1 gespeicherten Datei an. Zum Beispiel:file://C:\Temp\deny-mw-tasks-policy.json
-
-
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob die Richtlinie der Gruppe zugewiesen wurde.