AWS S3-Serverzugriffsprotokolle erfassen
In diesem Dokument wird beschrieben, wie Sie AWS S3-Serverzugriffsprotokolle erfassen, indem Sie einen Google Security Operations-Feed einrichten. Der Parser extrahiert Felder mithilfe von Grok-Mustern, verarbeitet potenzielle JSON-Eingabe und ordnet die extrahierten Felder dem UDM zu. Es führt Datentransformationen, Typumwandlungen und bedingte Logik basierend auf der Anwesenheit und den Werten bestimmter Felder aus, um eine genaue UDM-Darstellung zu gewährleisten.
Hinweise
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen erhöhte Zugriffsrechte für AWS.
Logging für den AWS S3-Serverzugriff konfigurieren
Google SecOps unterstützt die Protokollerfassung mit Amazon S3 über Amazon SQS.
- Melden Sie sich in der AWS Management Console an.
- Rufen Sie die Amazon S3-Konsole auf.
- Gehen Sie zu Amazon S3 > Buckets.
- Wählen Sie einen vorhandenen Bucket aus oder erstellen Sie einen neuen.
- Klicken Sie auf Eigenschaften.
- Klicken Sie im Bereich Serverzugriffsprotokollierung auf Bearbeiten.
- Wählen Sie Aktivieren aus.
- Geben Sie im Feld Ziel-Bucket einen Namen für den neuen Bucket ein, an den die Protokollereignisobjekte gesendet werden sollen, oder wählen Sie einen vorhandenen Bucket als Ziel aus.
- Klicken Sie auf Änderungen speichern.
- Um die SQS-Warteschlange für den S3-Bucket zu erstellen, konfigurieren Sie eine Amazon SQS-Instanz mit dem S3-Speicher. Weitere Informationen finden Sie unter Einen Bucket für Benachrichtigungen konfigurieren (SNS-Thema oder SQS-Warteschlange).
Ermitteln Sie anhand der folgenden AWS-Dokumentation die Endpunkte für die Konnektivität, je nach Dienst und Region: * Informationen zu Protokollierungsquellen finden Sie unter Endpunkte und Kontingente für die AWS Identity and Access Management. * Informationen zu S3-Protokollquellen finden Sie unter Amazon Simple Storage Service-Endpunkte und ‑Kontingente. * Informationen zu SQS-Protokollquellen finden Sie unter Amazon Simple Queue Service-Endpunkte und ‑Kontingente.
Feed in Google SecOps für die Aufnahme von AWS S3-Serverzugriffsprotokollen konfigurieren
- Klicken Sie im Google SecOps-Menü auf Einstellungen > Feeds > Neu hinzufügen.
- Wählen Sie in der Liste Quelltyp die Option Amazon S3 oder Amazon SQS aus.
- Wählen Sie in der Liste Logtyp die Option AWS S3-Serverzugriff aus.
- Klicken Sie auf Weiter.
- Google SecOps unterstützt die Protokollerhebung mit einer Zugriffsschlüssel-ID und einer Secret-Methode. Informationen zum Erstellen der Zugriffsschlüssel-ID und des geheimen Schlüssels finden Sie unter Toolauthentifizierung mit AWS konfigurieren.
- Geben Sie basierend auf der von Ihnen erstellten Konfiguration für den AWS S3-Serverzugriff Werte für die Eingabeparameter an:
- Wenn Sie Amazon S3 verwenden, geben Sie Werte für die folgenden Felder an:
- Region
- S3-URI
- URI ist ein
- Option zum Löschen der Quelle
- Zugriffsschlüssel-ID
- Secret-Zugriffsschlüssel
- Wenn Sie Amazon SQS verwenden, geben Sie Werte für die folgenden Felder an:
- Region
- Name der Warteschlange
- Kontonummer
- Zugriffsschlüssel-ID der Warteschlange
- Secret-Zugriffsschlüssel für die Warteschlange
- Option zum Löschen der Quelle
- Wenn Sie Amazon S3 verwenden, geben Sie Werte für die folgenden Felder an:
- Klicken Sie auf Weiter und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
aclRequired |
target.resource.attribute.labels.key : „aclRequired“target.resource.attribute.labels.value : Wert von aclRequired |
Direkt aus dem Rohlogfeld aclRequired zugeordnet. |
authenticationtype |
extensions.auth.auth_details |
Direkt aus dem Rohlogfeld authenticationtype zugeordnet. |
bucket |
target.resource.name |
Direkt aus dem Rohlogfeld bucket zugeordnet. |
bucket |
target.resource.resource_type : „STORAGE_BUCKET“ |
Der Parser setzt resource_type auf „STORAGE_BUCKET“, wenn das Feld bucket vorhanden ist. |
bucketowner |
target.resource.product_object_id |
Direkt aus dem Rohlogfeld bucketowner zugeordnet. |
bytes_sent |
network.sent_bytes |
Wird direkt aus dem Rohprotokollfeld bytes_sent abgeleitet, nachdem es in eine positive Ganzzahl umgewandelt und „-“ durch „0“ ersetzt wurde. |
ciphersuite |
network.application_protocol : „HTTPS“ |
Der Parser setzt application_protocol auf „HTTPS“, wenn das Feld ciphersuite vorhanden ist. |
ciphersuite |
network.tls.cipher |
Direkt aus dem Rohlogfeld ciphersuite zugeordnet. |
errorcode |
security_result.action_details |
Direkt aus dem Rohlogfeld errorcode zugeordnet. |
errorcode |
security_result.action : „BLOCK“ |
Der Parser setzt action auf „BLOCK“, wenn das Feld errorcode „AccessDenied“ enthält (Groß- und Kleinschreibung wird nicht berücksichtigt). |
hostheader |
target.hostname |
Aus dem Rohlogfeld hostheader extrahiert, wobei die Portnummer möglicherweise entfernt wird. |
hostheader |
target.port |
Wird aus dem Feld „Raw Log“ hostheader extrahiert, wenn eine Portnummer vorhanden ist. |
hostid |
target.resource.attribute.labels.key : „S3 Extended Request ID“target.resource.attribute.labels.value : Wert von hostid |
Direkt aus dem Rohlogfeld hostid zugeordnet. |
http_capture |
network.http.method |
Die HTTP-Methode wird aus dem Feld http_capture extrahiert. |
http_capture |
network.http.version |
Die HTTP-Version wird aus dem Feld http_capture extrahiert. |
http_capture |
target.url |
Die Ziel-URL wird aus hostheader und http_request_uri (aus http_capture extrahiert) erstellt und je nach Vorhandensein von ciphersuite mit „http://“ oder „https://“ vorangestellt. |
httpstatus |
network.http.response_code |
Wird direkt aus dem Rohlogfeld httpstatus abgeleitet, nachdem es in eine Ganzzahl umgewandelt wurde. |
object_version_id |
target.resource.product_object_id |
Direkt aus dem Rohlogfeld object_version_id zugeordnet. |
objectsize |
target.file.size |
Wird direkt aus dem Rohprotokollfeld objectsize abgeleitet, nachdem es in eine positive Ganzzahl umgewandelt und „-“ durch „0“ ersetzt wurde. |
operation |
metadata.product_event_type |
Direkt aus dem Rohlogfeld operation zugeordnet. |
referrer |
network.http.referral_url |
Wird direkt aus dem Rohprotokollfeld referrer abgeleitet, nachdem Anführungszeichen entfernt wurden. |
remoteip |
metadata.event_type : „USER_RESOURCE_ACCESS“ |
Der Parser setzt event_type auf „USER_RESOURCE_ACCESS“, wenn das Feld remoteip leer ist. |
remoteip |
principal.ip |
Direkt aus dem Rohlogfeld remoteip zugeordnet. |
requester |
target.resource.attribute.labels.key : „Zugangspunkt-ARN“target.resource.attribute.labels.value : Wert von requester |
Direkt aus dem Rohlogfeld requester zugeordnet. |
requester_user |
principal.user.userid |
Direkt aus dem Rohlogfeld requester_user zugeordnet. |
requestid |
network.session_id |
Direkt aus dem Rohlogfeld requestid zugeordnet. |
request_time_ms |
network.session_duration.nanos |
Wird direkt aus dem Roh-Log-Feld request_time_ms abgeleitet, nachdem es in eine Ganzzahl umgewandelt wurde. Dabei wird „-“ durch „0“ ersetzt und mit Nullen aufgefüllt, um Nanosekunden darzustellen. |
signatureversion |
target.resource.attribute.labels.key : „Signature Version“target.resource.attribute.labels.value : Wert von signatureversion |
Direkt aus dem Rohlogfeld signatureversion zugeordnet. |
time |
metadata.event_timestamp |
Wird aus dem Feld „Raw Log“ time geparst und in einen Zeitstempel umgewandelt. |
tlsVersion |
network.tls.version |
Direkt aus dem Rohlogfeld tlsVersion zugeordnet. |
useragent |
network.http.user_agent |
Wird direkt aus dem Rohprotokollfeld useragent nach dem Entfernen von Anführungszeichen zugeordnet. |
(Parser Logic) | metadata.event_type : „NETWORK_HTTP“ |
Der Parser setzt die Standard-event_type auf „NETWORK_HTTP“. |
(Parser Logic) | metadata.log_type : „AWS_S3_SERVER_ACCESS“ |
Der Parser setzt log_type auf „AWS_S3_SERVER_ACCESS“. |
(Parser Logic) | metadata.product_name : „AWS S3-Serverzugriff“ |
Der Parser setzt product_name auf „AWS S3-Serverzugriff“. |
(Parser Logic) | metadata.product_version : „HTTP/http_version “ |
Der Parser legt die product_version anhand der extrahierten http_version fest. |
(Parser Logic) | metadata.vendor_name : „AMAZON“ |
Der Parser setzt vendor_name auf „AMAZON“. |
(Parser Logic) | network.application_protocol : „HTTP“ |
Der Parser setzt application_protocol auf „HTTP“, wenn das Feld ciphersuite nicht vorhanden ist. |
(Parser Logic) | timestamp |
Der Parser setzt das Ereignis timestamp bei der Verarbeitung auf die aktuelle Zeit. |
Änderungen
2023-07-19
- Fehlerkorrektur –
- Das Grok-Muster wurde so geändert, dass ein Bindestrich (-) verwendet wird, wenn keine Daten vorhanden sind.
- „aclRequired“ wurde auf „target.resource.attribute.labels“ zugeordnet.
2023-05-04
- Verbesserungen:
- Unterstützung für Protokolle im JSON-Format hinzugefügt
2022-07-21
- Neu erstellter Parser.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten