Schritt 5: (Optional) Beschränken des Zugriffs auf Befehle in einer Sitzung - AWS Systems Manager

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.

Schritt 5: (Optional) Beschränken des Zugriffs auf Befehle in einer Sitzung

Sie können die Befehle einschränken, die ein Benutzer in einer AWS Systems Manager Session Manager Sitzung ausführen kann, indem Sie ein Dokument mit benutzerdefiniertem Session Typ AWS Systems Manager (SSM) verwenden. In dem Dokument definieren Sie den Befehl, der ausgeführt wird, wenn der Benutzer eine Sitzung startet, und die Parameter, die der Benutzer dem Befehl übergeben kann. Die Session des schemaVersion-Dokuments muss 1.0 und der sessionType des Dokuments muss InteractiveCommands lauten. Anschließend können Sie AWS Identity and Access Management (IAM)-Richtlinien erstellen, die es den Benutzern ermöglichen, nur auf die von Ihnen definierten Session-Dokumente zuzugreifen. Weitere Informationen zur Verwendung von IAM-Richtlinien zum Beschränken des Zugriffs auf Befehle in einer Sitzung finden Sie unter IAM-Richtlinienbeispiele für interaktive Befehle.

Dokumente mit dem Zeichen sessionType von InteractiveCommands werden nur für Sitzungen unterstützt, die mit AWS Command Line Interface (AWS CLI) gestartet wurden. Der Benutzer gibt den Namen des benutzerdefinierten Dokuments als --document-name-Parameterwert an und gibt alle Befehlsparameterwerte über die Option --parameters an. Weitere Informationen zur Ausführung interaktiver Befehle finden Sie unter Starten einer Sitzung (interaktive und nicht interaktive Befehle).

Gehen Sie wie folgt vor, um ein SSM-Dokument vom benutzerdefinierten Typ Session zu erstellen, das den Befehl definiert, den ein Benutzer ausführen darf.

Beschränken des Zugriffs auf Befehle in einer Sitzung (Konsole)

So beschränken Sie die Befehle, die ein Benutzer in einer Session Manager-Sitzung ausführen kann (Konsole)
  1. Öffnen Sie die AWS Systems Manager Konsole unter https://console.aws.amazon.com/systems-manager/.

  2. Wählen Sie im Navigationsbereich die Option Documents (Dokumente) aus.

  3. Wählen Sie Create command or session (Befehl oder Sitzung erstellen) aus.

  4. Geben Sie unter Name einen aussagekräftigen Namen für das Dokument ein.

  5. Wählen Sie für Document type (Dokumenttyp) die Option Session document (Sitzungsdokument) aus.

  6. Geben Sie mithilfe von JSON oder YAML Ihren Dokumentinhalt ein, der den Befehl definiert, den ein Benutzer in einer Session Manager-Sitzung ausführen kann, wie im folgenden Beispiel gezeigt.

    YAML
    --- schemaVersion: '1.0' description: Document to view a log file on a Linux instance sessionType: InteractiveCommands parameters: logpath: type: String description: The log file path to read. default: "/var/log/amazon/ssm/amazon-ssm-agent.log" allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$" properties: linux: commands: "tail -f {{ logpath }}" runAsElevated: true
    JSON
    { "schemaVersion": "1.0", "description": "Document to view a log file on a Linux instance", "sessionType": "InteractiveCommands", "parameters": { "logpath": { "type": "String", "description": "The log file path to read.", "default": "/var/log/amazon/ssm/amazon-ssm-agent.log", "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$" } }, "properties": { "linux": { "commands": "tail -f {{ logpath }}", "runAsElevated": true } } }
  7. Wählen Sie Create document (Dokument erstellen) aus.

Beschränken des Zugriffs auf Befehle in einer Sitzung (Befehlszeile)

Bevor Sie beginnen

Falls Sie es noch nicht getan haben, installieren und konfigurieren Sie die AWS Command Line Interface (AWS CLI) oder die AWS Tools for PowerShell. Weitere Informationen finden Sie unter Installieren oder Aktualisieren der neuesten Version der AWS CLI und Installieren des AWS Tools for PowerShell.

So beschränken Sie die Befehle, die ein Benutzer in einer Session Manager-Sitzung ausführen kann (Befehlszeile)
  1. Erstellen Sie eine JSON- oder YAML-Datei für Ihren Dokumentinhalt, der den Befehl definiert, den ein Benutzer in einer Session Manager-Sitzung ausführen kann, wie im folgenden Beispiel gezeigt.

    YAML
    --- schemaVersion: '1.0' description: Document to view a log file on a Linux instance sessionType: InteractiveCommands parameters: logpath: type: String description: The log file path to read. default: "/var/log/amazon/ssm/amazon-ssm-agent.log" allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$" properties: linux: commands: "tail -f {{ logpath }}" runAsElevated: true
    JSON
    { "schemaVersion": "1.0", "description": "Document to view a log file on a Linux instance", "sessionType": "InteractiveCommands", "parameters": { "logpath": { "type": "String", "description": "The log file path to read.", "default": "/var/log/amazon/ssm/amazon-ssm-agent.log", "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$" } }, "properties": { "linux": { "commands": "tail -f {{ logpath }}", "runAsElevated": true } } }
  2. Führen Sie die folgenden Befehle aus, um ein SSM-Dokument unter Verwendung Ihres Inhalts zu erstellen, der den Befehl definiert, den ein Benutzer in einer Session Manager-Sitzung ausführen kann.

    Linux & macOS
    aws ssm create-document \ --content file://path/to/file/documentContent.json \ --name "exampleAllowedSessionDocument" \ --document-type "Session"
    Windows
    aws ssm create-document ^ --content file://C:\path\to\file\documentContent.json ^ --name "exampleAllowedSessionDocument" ^ --document-type "Session"
    PowerShell
    $json = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String New-SSMDocument ` -Content $json ` -Name "exampleAllowedSessionDocument" ` -DocumentType "Session"

Interaktive Befehlsparameter und AWS CLI

Sie können interaktive Befehlsparameter bereitstellen, wenn Sie die AWS CLI verwenden. Je nach Betriebssystem (OS) Ihres Client-Computers, mit dem Sie eine Verbindung zu verwalteten Knoten herstellen, kann die Syntax AWS CLI, die Sie für Befehle angeben, die Sonder- oder Escape-Zeichen enthalten, unterschiedlich sein. Die folgenden Beispiele zeigen einige der verschiedenen Möglichkeiten, wie Sie Befehlsparameter angeben können, wenn Sie die verwenden AWS CLI, und wie mit Sonder- oder Escape-Zeichen umgegangen wird.

Auf Parameter, die in gespeichert sind, Parameter Store kann in den AWS CLI Befehlsparametern verwiesen werden, wie im folgenden Beispiel gezeigt.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["{{ssm:mycommand}}"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["{{ssm:mycommand}}"]}'

Das folgende Beispiel zeigt, wie Sie mit der AWS CLI eine Kurzschriftsyntax verwenden, um Parameter zu übergeben.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters command="ifconfig"
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters command="ipconfig"

Sie können auch optionale Parameter in JSON angeben, wie im folgenden Beispiel dargestellt.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["ifconfig"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["ipconfig"]}'

Parameter können auch in einer JSON-Datei gespeichert und für die bereitgestellt werden, AWS CLI wie im folgenden Beispiel gezeigt. Weitere Informationen zur Verwendung von AWS CLI -Parametern aus einer Datei finden Sie unter Laden von AWS CLI -Parametern aus einer Datei im AWS Command Line Interface -Benutzerhandbuch.

{ "command": [ "my command" ] }
Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters file://complete/path/to/file/parameters.json
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters file://complete/path/to/file/parameters.json

Sie können auch ein AWS CLI Skelett aus einer JSON-Eingabedatei generieren, wie im folgenden Beispiel gezeigt. Weitere Informationen zum Generieren von AWS CLI Skeletten aus JSON-Eingabedateien finden Sie im Benutzerhandbuch unter Generieren von AWS CLI Skeletten und Eingabeparametern aus einer JSON- oder YAML-Eingabedatei.AWS Command Line Interface

{ "Target": "instance-id", "DocumentName": "MyInteractiveCommandDocument", "Parameters": { "command": [ "my command" ] } }
Linux & macOS
aws ssm start-session \ --cli-input-json file://complete/path/to/file/parameters.json
Windows
aws ssm start-session ^ --cli-input-json file://complete/path/to/file/parameters.json

Um Zeichen in Anführungszeichen zu maskieren, müssen Sie den Escapezeichen zusätzliche umgekehrte Schrägstriche hinzufügen, wie im folgenden Beispiel gezeigt.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["printf \"abc\\\\tdef\""]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["printf \"abc\\\\tdef\""]}'

Informationen zum Verwenden von Anführungszeichen bei Befehlsparametern in AWS CLI finden Sie unter Verwenden von Anführungszeichen mit Zeichenfolgen in der AWS CLI im AWS Command Line Interface -Benutzerhandbuch.

IAM-Richtlinienbeispiele für interaktive Befehle

Sie können IAM-Richtlinien erstellen, mit denen Benutzer nur auf die von Ihnen definierten Session-Dokumente zugreifen können. Dadurch werden die Befehle, die ein Benutzer in einer Session Manager-Sitzung ausführen kann, nur auf die Befehle beschränkt, die in Ihren benutzerdefinierten SSM-Dokumenten vom Typ Session definiert sind.

Einem Benutzer erlauben, einen interaktiven Befehl auf einem einzelnen verwalteten Knoten auszuführen
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:region:987654321098:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:region:987654321098:document/exampleAllowedSessionDocument" ], "Condition":{ "BoolIfExists":{ "ssm:SessionDocumentAccessCheck":"true" } } } ] }
Einem Benutzer erlauben, einen interaktiven Befehl auf allen verwalteten Knoten auszuführen
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:us-west-2:987654321098:instance/*", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument" ], "Condition":{ "BoolIfExists":{ "ssm:SessionDocumentAccessCheck":"true" } } } ] }
Einem Benutzer erlauben, mehrere interaktive Befehle auf allen verwalteten Knoten auszuführen
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:us-west-2:987654321098:instance/*", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument2" ], "Condition":{ "BoolIfExists":{ "ssm:SessionDocumentAccessCheck":"true" } } } ] }