Direkt zum Inhalt

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

Lesedauer: 5 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.

Lösung

Die Berechtigungen konfigurieren

Der Systems Manager Agent (SSM Agent) verwendet dieselbe AWS Identity and Access Management (IAM)-Rolle, um Protokolle auf Amazon S3 zu aktivieren und hochzuladen.

Du kannst eine der folgenden IAM-Rollen verwenden:

Verwende die folgenden Richtlinien, um Berechtigungen zu gewähren:

  • Das AWS-Konto, dem der IAM-Prinzipal gehört, muss eine IAM-Richtlinie verwenden, um Amazon S3-Berechtigungen zu gewähren.
  • Der Besitzer des S3-Buckets muss die Schlüsselrichtlinie oder die Zugriffssteuerungsliste (ACL) von AWS Key Management Service (AWS KMS) verwenden, um den Zugriff auf alle Konten zu ermöglichen.
  • Wenn der Bucket mit einem AWS-KMS-Schlüssel verschlüsselt ist, musst du eine IAM-Richtlinie verwenden.
  • Du musst die IAM-Richtlinie an die Rolle anhängen, die dem SSM-Agenten Berechtigungen gewährt.
  • Du musst eine KMS-Schlüsselrichtlinie verwenden, um Zugriff auf den AWS-KMS-Schlüssel zu gewähren, den du zum Verschlüsseln des Buckets verwendest.
  • Für den Zugriff auf die Kernfunktionen von Systems Manager musst du die verwaltete AWS-Richtlinie AmazonSSMManagedInstanceCore verwenden.

Die folgenden Berechtigungen sind erforderlich, damit Session Manager Protokolle in den S3-Bucket hochladen kann:

  • Die s3:PutObject- und s3:PutObjectACL-Berechtigungen, um verschlüsselte Objekte in den S3-Bucket hochzuladen.
  • Die Berechtigungen kms:Decrypt und kms:generateDataKey für den Zugriff auf die AWS-KMS-Schlüssel.
  • Die aws:principalOrgID: o-xxxxxxx-Berechtigung, den Zugriff auf Prinzipale zu beschränken, die nicht mit der ID der Organisation in AWS Organizations übereinstimmen.

Überprüfe die Konnektivität zu den folgenden Endpunkten:

  • Amazon S3-Endpunkte: com.amazonaws.region.s3
  • AWS-KMS-Service-Endpunkte: com.amazonaws.region.kms
  • Systems Manager-Endpunkte: com.amazonaws.region.ssm
  • Endpunkte des Systems Manager Session Manager: com.amazonaws.region.ssmmessages
  • Amazon EC2-Endpunkte: com.amazonaws.region.ec2

AWS KMS-Schlüssel und Schlüsselrichtlinie erstellen

Erstelle AWS KMS-Schlüssel, um den S3-Bucket und die Session Manager-Protokolle zu verschlüsseln.

Du kannst einen Schlüssel erstellen, um sowohl die Session Manager-Protokolle als auch die AWS KMS-Verschlüsselung zu verschlüsseln oder für jeden Schlüssel separate Schlüssel erstellen.

Füge der AWS KMS-Richtlinie für jeden Schlüssel die folgende Schlüsselanweisung hinzu, damit Session Manager die Protokolle verschlüsseln kann:

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

Hinweis: Ersetze aws:PrincipalOrgID durch die ID der Organisation und den Prinzipalk durch den ARN der IAM-Rolle.

Den S3-Bucket und die Bucket-Richtlinie erstellen

Erstelle einen S3-Bucket zum Speichern von Session Manager-Protokollen. Weitere Informationen findest du unter Erstellen eines Allzweck-Buckets und Protokollieren von Sitzungsdaten mit Amazon S3 (Konsole).

Um den Zugriff auf die Protokolle zu ermöglichen, füge dem S3-Bucket die folgende Ressourcenrichtlinie hinzu:

{
  "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"
        }
      }
    }
  ]
}

Weitere Informationen zu Protokollzugriffsberechtigungen findest du unter Berechtigungen für die Protokollübermittlung.

Eine IAM-Richtlinie für den Zugriff auf den S3-Bucket und die AWS KMS-Schlüssel erstellen

Erstelle eine IAM-Richtlinie, die Berechtigungen für den Zugriff auf den S3-Bucket und die AWS KMS-Schlüssel gewährt.  

Hänge die folgende Beispielrichtlinie an das Instance-Profil an, das die Konten verwenden, um das mit dem S3-Bucket zu verbinden: 

{
  "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"
      ]
    }
  ]
}

Hinweis: Du kannst entweder eine Inline-Richtlinie oder eine vom Kunden verwaltete Richtlinie verwenden. Weitere Informationen findest du unter Verwenden von IAM-Richtlinien mit AWS KMS.

(Optional) Session Manager-Shell-Profile für Protokolle konfigurieren

Um ein benutzerdefiniertes Shell-Profil zu erstellen, erstelle eine JSON-Datei, entferne den Inhalt und ersetze ihn durch die folgenden Werte:

{
  "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": ""}
  }
}

Hinweis: Ersetze customer_session_manager_logging_bucket durch den Bucket-Namen und your-KMS-for-SessionManagerEncryption durch den angegebenen Schlüssel für Session Manager.

Führe den folgenden Befehl aus, um die Datei als Session Manager-Standarddokument mit einem Namen wie SessionManagerRunshell.json zu speichern:

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

Die Konfiguration der Session Manager-Protokollierung verifizieren

Öffne die Amazon-S3-Konsole und navigiere dann zu deinem Protokollierungs-Bucket. Vergewissere sich in den Bucket-Einstellungen, dass die Bucket-Verschlüsselung aktiv ist. Vergewissere sich außerdem, dass der ARN des AWS KMS-Schlüssels mit Schlüssel 1 übereinstimmt, um sicherzustellen, dass Session Manager den richtigen Verschlüsselungsschlüssel verwendet.

Gehe wie folgt vor, um die Session Manager-Einstellungen zu verifizieren:

  1. Öffne die Session Manager-Konsole.
  2. Wähle die AWS-Region aus.
  3. Bestätige, dass du die Verschlüsselung aktiviert hast.
  4. Gib den ARN von Schlüssel 1 ein.
  5. Stelle sicher, dass du den richtigen S3-Bucket konfiguriert hast.

Sicherstellen, dass Protokolle im Bucket generiert werden

Verwende Session Manager in einem anderen Konto, um Protokolle zu generieren.

Führe die folgenden Schritte aus:

  1. Verwende den Session Manager, um eine Verbindung zu einer Instance herzustellen.
  2. Wähle die Region aus.
  3. Stelle sicher, dass die Sitzung eine Verbindung herstellt und die Meldung „This Session is Encrypted using AWS KMS“ angezeigt wird.
  4. Gib Testeinträge ein, um die Protokolle zu generieren und beende dann die Sitzung.

Hinweis: Nach dem Ende der Sitzung kann es mindestens 30 Sekunden dauern, bis die Protokolle angezeigt werden. Weitere Informationen findest du 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 Richtlinien für Amazon S3- Buckets

Zugriffskontrolle in Amazon S3

AWS OFFICIALAktualisiert vor 8 Monaten