Wie konfiguriere ich einen zentralen Amazon S3-Bucket für die Session Manager-Protokollierung von mehreren Konten aus?

Lesedauer: 7 Minute
0

Ich möchte die zentrale Amazon Simple Storage Service (Amazon S3)-Protokollierung für Session Manager, eine Funktion von AWS Systems Manager, für meine AWS-Konten konfigurieren.

Kurzbeschreibung

In Systems Manager können Sie die Amazon S3-Protokollierung für Session Manager identifizieren und konfigurieren.

Erste Schritte

Der AWS Systems Manager Agent (SSM Agent) verwendet dieselbe AWS-Rolle für das Identitäts- und Zugriffsmanagement (IAM), um sich selbst zu aktivieren und Protokolle auf Amazon S3 hochzuladen. Sie können entweder ein IAM-Instance-Profil verwenden, das an eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance angehängt ist, oder die IAM-Rolle, die für die Standard-Hostverwaltungskonfiguration konfiguriert ist.

Sie benötigen die folgenden Berechtigungen, um die Konfiguration abzuschließen:

  • Das Konto, dem der IAM-Prinzipal gehört, der für Berechtigungen verwendet wird, muss die Amazon S3-Berechtigungen über eine IAM-Richtlinie gewähren.
  • Der Besitzer des S3-Buckets muss außerdem allen Konten Berechtigungen über eine Bucket-Richtlinie oder eine Zugriffskontrollliste (ACL) gewähren.
  • Wenn der Bucket mit einem AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt ist, müssen Sie eine IAM-Richtlinie erstellen und verwenden.

Hinweis:

  • Sie müssen die IAM-Richtlinie an die Rolle anhängen, die dem SSM-Agenten Berechtigungen gewährt.
  • Der KMS-Schlüssel, der zum Verschlüsseln des Buckets verwendet wird, muss die Erlaubnis auch über die KMS-Schlüsselrichtlinie gewähren.

Um die zentrale Amazon S3-Bucket-Protokollierung für Session Manager zu konfigurieren, identifizieren Sie zunächst das Hauptkonto, dem Ihr zentraler S3-Bucket gehört. Im folgenden Beispiel besitzt Konto A den zentralisierten Bucket.

Führen Sie danach die folgenden Schritte aus:

  1. Erstellen Sie in Konto A einen oder zwei benutzerdefinierte AWS-KMS-Schlüssel und eine benutzerdefinierte KMS-Richtlinie.
  2. Erstellen Sie in Konto A einen S3-Bucket für die Systems Manager-Protokollierung.
  3. Erstellen Sie in Konto A die Ressourcenrichtlinie für den S3-Bucket.
  4. Erstellen Sie in einem anderen Konto eine IAM-Richtlinie, um Berechtigungen für den S3-Bucket und beide KMS-Schlüssel zu gewähren.
  5. (Optional) Verwenden Sie Session Manager-Shellprofile, um die Protokollierung zu erstellen und zu konfigurieren.
  6. Stellen Sie sicher, dass die Session Manager-Protokollierung für die Ziel-Buckets konfiguriert ist und den KMS-Schlüssel verwendet.
  7. Stellen Sie sicher, dass Protokolle im Bucket generiert werden.

Behebung

**Hinweis:**Für den Umfang der Berechtigungen verwendet der folgende Beispielprozess Bedingungsschlüssel für die Rollen und AWS-Organisationen. Wenn Sie zusätzliche Berechtigungssteuerung benötigen, empfiehlt es sich, Hauptrollen in Session Manager zu verwenden.

Dieser Prozess verwendet die folgenden Schlüsselberechtigungen:

  • Die von IAM von AWS verwaltete Richtlinie AmazonSSMManagedInstanceCore zur Bereitstellung von Systems Manager-Berechtigungen.
  • Die s3:getEncryptionConfiguration-Berechtigung zur Beschreibung der Verschlüsselungskonfiguration im S3-Bucket.
  • Die s3:PutObject- und s3:PutObjectACL-Berechtigungen, um verschlüsselte Objekte in den S3-Bucket zu legen.
  • Die Berechtigungen kms:Decrypt und kms:GenerateDataKey ermöglichen den Zugriff auf die KMS-Schlüssel beim Zugriff auf die Buckets und den Session Manager.
  • Die aws:PrincipalOrgID: o-xxxxxxx Berechtigung, um allen Prinzipalen, die nicht mit der Organisations-ID übereinstimmen, eingeschränkten Zugriff zu gewähren.

Voraussetzungen

Sie müssen über Konnektivität zu Endpunkten für die folgenden Dienste verfügen:

  • Amazon S3
  • ALS KMS
  • Meldungen von Systems Manager und Systems Manager
  • Amazon EC2-Nachrichten

Erstellen Sie die KMS-Schlüssel

Erstellen Sie zunächst einen oder zwei Schlüssel.

  • Wenn Sie einen Schlüssel erstellen, verwenden Sie ihn (Schlüssel 1) für die S3-Verschlüsselung im Session Manager-Logging-Bucket und in den Session Manager-Einstellungen für die KMS-Verschlüsselung.
  • Wenn Sie zwei Schlüssel erstellen, verwenden Sie den ersten KMS-Schlüssel (Schlüssel 1), um den S3-Bucket für die Protokollierung zu verschlüsseln. Verwenden Sie den zweiten KMS-Schlüssel (Schlüssel 2), um den Session Manager-Stream zum Amazon S3-Bucket zu verschlüsseln.

Erstellen Sie dann die Schlüssel-Sid für jeden Schlüssel. Stellen Sie sicher, dass Sie das Sid-Element für jeden Schlüssel zu Ihrer KMS-Richtlinie hinzufügen.

Damit Session Manager die Sitzung verschlüsseln kann, fügen Sie Organisationen die folgenden Berechtigungen hinzu:

Hinweis: Ersetzen Sie den Wert aws:PrincipalOrgID durch Ihre Organisations-ID und den Prinzipal-ARN.

{  
    "Effect": "Allow",  
    "Principal": {  
        "AWS": "*"  
    },  
    "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKey"  
    ],  
    "Resource": "*",  
    "Condition": {  
        "StringEquals": {  
            "aws:PrincipalOrgID": "o-xxxxxxx"  
        }  
    }  
}

Erstellen Sie einen S3-Bucket für die Anmeldung bei Konto A

Erstellen Sie einen Amazon S3-Bucket für die Protokollierung von Session Manager-Daten in Konto A. Achten Sie darauf, den Bucket zu benennen, z. B. customer_session_manager_logging_bucket. Verwenden Sie bei der Auswahl der Verschlüsselung den Schlüssel 1.

Erstellen Sie die Ressourcenrichtlinie für den S3-Bucket

Wenden Sie die folgende Ressourcenrichtlinie auf den Bucket an, den Sie zum Protokollieren Ihrer Sitzungen verwenden.

Um einen Bedingungsschlüssel für PrincipalOrgID zu verwenden, um den Zugriff auf den S3-Bucket einzuschränken, fügen Sie Ihrem S3-Bucket die folgende Ressourcenrichtlinie hinzu:

**Hinweis:**Diese Richtlinie lehnt Zugriffsanfragen von einem Prinzipal ab, der sich außerhalb Ihrer Organisation befindet.

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "*"  
            },  
            "Action": "s3:GetEncryptionConfiguration",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket",  
            "Condition": {  
                "StringEquals": {  
                    "aws:PrincipalOrgID": "o-xxxxxxxxxxxxxx"  
                }  
            }  
        },  
        {  
            "Effect": "Allow",  
            "Principal": {  
                "AWS": "*"  
            },  
            "Action": [  
                "s3:PutObject",  
                "s3:PutObjectAcl"  
            ],  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*",  
            "Condition": {  
                "StringEquals": {  
                    "aws:PrincipalOrgID": "o-xxxxxxxxxxxxx"  
                }  
            }  
        }  
    ]  
}

Erstellen Sie eine IAM-Richtlinie

Erstellen Sie zunächst eine IAM-Richtlinie, um Berechtigungen für den S3-Bucket und die Schlüssel zu gewähren.

Fügen Sie Ihrem Instance-Profil die folgende Beispielrichtlinie hinzu, um sie für die Konten zu verwenden, die Sie verbinden möchten. Sie können eine Inline-Richtlinie oder eine vom Kunden verwaltete Richtlinie verwenden, um die Richtlinie anzuhängen:

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Sid": "PutObjectsBucket",  
            "Action": [  
                "s3:PutObject",  
                "s3:PutObjectAcl"  
            ],  
            "Effect": "Allow",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket/*"  
        },  
        {  
            "Sid": "ListBucketAndEncryptionConfig",  
            "Action": [  
                "s3:GetEncryptionConfiguration"  
            ],  
            "Effect": "Allow",  
            "Resource": "arn:aws:s3:::customer_session_manager_logging_bucket"  
        },  
        {  
            "Sid": "S3KMSSessionManagerKMS",  
            "Effect": "Allow",  
            "Action": [  
                "kms:Decrypt",  
                "kms:GenerateDataKey*"  
            ],  
            "Resource": [  
                "arn:aws:kms:us-east-1:ACCOUNTId:key/YOUR-KMS-FOR-SessionManagerEncryption",  
                "arn:aws:kms:us-east-1:ACCOUNTID:key/YOUR-KMS-FOR-S3BucketEncryption"  
            ]  
        }  
    ]  
}

(Optional) Verwenden Sie Session Manager-Shellprofile, um die Protokollierung zu erstellen und zu konfigurieren

Um ein benutzerdefiniertes Shell-Profil zu erstellen, erstellen Sie zunächst eine Datei. Speichern Sie dann die Datei mit einem Beschreibungsnamen, zum Beispiel SessionManagerRunShell.json. Ersetzen Sie den Inhalt dieser JSON-Datei durch das folgende Beispiel:

Hinweis:Ersetzen Siecustomer_session_manager_logging_bucket durch Ihren Bucket-Namen und your-KMS-for-SessionManagerEncryption durch Ihren angegebenen Schlüssel für Session Manager.

{  
"schemaVersion": "1.0",  
"description": "Document to hold regional settings for Session Manager",  
"sessionType": "Standard_Stream",  
"inputs": {  
"s3BucketName": "customer_session_manager_logging_bucket",  
"s3KeyPrefix": "",  
"s3EncryptionEnabled": true,  
"cloudWatchLogGroupName": "",  
"cloudWatchEncryptionEnabled": false,  
"cloudWatchStreamingEnabled": false,  
"kmsKeyId": "arn:aws:kms:REGION:ACCOUNTID:key/YOUR-KMS-FOR-SessionManagerEncryption",  
"runAsDefaultUser": "",  
"idleSessionTimeout": "20",  
"maxSessionDuration": "",  
"shellProfile": {"windows": "", "linux": ""}  
  }  
}

Führen Sie die folgenden Befehle aus, um diese Datei als Standarddokument von Session Manager zu speichern:

aws ssm update-document --name "SSM-SessionManagerRunShell"   
--content "file://SessionManagerRunShell.json"   
--document-version "$LATEST"

Stellen Sie sicher, dass die Session Manager-Protokollierung für die Ziel-Buckets konfiguriert ist und den KMS-Schlüssel verwendet

Öffnen Sie den S3-Bucket und stellen Sie sicher, dass Sie Bucket Encryption aktiviert haben. Überprüfen Sie den KMS-ARN, um sicherzustellen, dass Session Manager Key 1 verwendet.

**Hinweis:**Bei der Konfiguration der kontoübergreifenden Protokollierung von Session Manager empfiehlt es sich, ein Präfix der Konto-ID zu verwenden. Dies hilft Ihnen, den Überblick über die Konten und die zugehörigen Protokolle zu behalten.

Gehen Sie wie folgt vor, um die Session Manager-Einstellungen zu überprüfen:

  1. Öffnen Sie die Session Manager-Konsole und wählen Sie dann Ihre AWS-Region aus.
  2. Stellen Sie sicher, dass die S3-Bucket-Verschlüsselung aktiviert ist, und geben Sie dann den ARN von Schlüssel 1 ein, der sich in Konto A befindet.
  3. Geben Sie im S3-Bucket den Namen des S3-Buckets ein, der sich in Konto A befindet.

Stellen Sie sicher, dass Protokolle im Bucket generiert werden

Um Protokolle zu generieren, verwenden Sie Session Manager in einem anderen Konto, um eine Verbindung zu Ihrer Instanz herzustellen.

Führen Sie die folgenden Schritte aus:

  1. Öffnen Sie die Session Manager-Konsole und wählen Sie dann Ihre Region aus.
  2. Stellen Sie sicher, dass die Sitzung eine Verbindung herstellt und die folgende Meldung angezeigt wird: „Diese Sitzung ist mit AWS KMS verschlüsselt“
  3. Geben Sie einige Testeinträge ein, um die Protokolle zu generieren, und beenden Sie dann Ihre Sitzung.
  4. Navigieren Sie in Konto A zu dem S3-Bucket, den Sie für die Protokollierung erstellt haben, und suchen Sie nach den neuesten Protokollen nach Zeit.

**Hinweis:**Nach dem Trennen der Sitzung kann es mindestens 30 Sekunden dauern, bis die Protokolle gefüllt sind. Weitere Informationen finden Sie unter Protokollieren von Anfragen mithilfe der Serverzugriffsprotokollierung.

Ähnliche Informationen

Daten mit serverseitiger Verschlüsselung schützen

Aktionen, Ressourcen und Bedingungsschlüssel für Amazon S3

Beispiele für Bucket-Richtlinien

Richtlinien zur Zugriffsrichtlinie

Erlauben Sie einem Benutzer, mit bestimmten KMS-Schlüsseln zu verschlüsseln und zu entschlüsseln

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 10 Monaten