AWS S3-Server-Zugriffslogs 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-Eingaben und ordnet die extrahierten Felder dem UDM zu. Dabei werden Daten transformiert, Typen konvertiert und bedingte Logik basierend auf dem Vorhandensein und den Werten bestimmter Felder angewendet, um eine genaue UDM-Darstellung zu gewährleisten.
Hinweise
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Privilegierter Zugriff auf AWS
AWS S3-Server-Zugriffslogging konfigurieren
Google SecOps unterstützt die Erfassung von Logs über Amazon S3 mithilfe von Amazon SQS.
- Melden Sie sich in der AWS Management Console an.
- Rufen Sie die Amazon S3-Konsole auf.
- Rufen Sie Amazon S3 > Buckets auf.
- 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 Logdatensatzobjekte 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 Bucket für Benachrichtigungen konfigurieren (SNS-Thema oder SQS-Warteschlange).
Ermitteln Sie anhand des Dienstes und der Region die Endpunkte für die Verbindung. Verwenden Sie dazu die folgende AWS-Dokumentation:
- Informationen zu einer beliebigen Protokollierungsquelle finden Sie unter AWS Identity and Access Management-Endpunkte und ‑Kontingente.
- Informationen zu S3-Logging-Quellen finden Sie unter Amazon Simple Storage Service-Endpunkte und ‑Kontingente.
- Informationen zu SQS-Logging-Quellen finden Sie unter Amazon Simple Queue Service-Endpunkte und ‑Kontingente.
Feeds einrichten
Es gibt zwei verschiedene Einstiegspunkte zum Einrichten von Feeds in der Google SecOps-Plattform:
- SIEM-Einstellungen > Feeds
- Content Hub> Content-Pakete
Feeds über die SIEM-Einstellungen > „Feeds“ einrichten
Informationen zum Konfigurieren mehrerer Feeds für verschiedene Logtypen in dieser Produktfamilie finden Sie unter Feeds nach Produkt konfigurieren.
So konfigurieren Sie einen einzelnen Feed:
- Rufen Sie die SIEM-Einstellungen> Feeds auf.
- Klicken Sie auf Neuen Feed hinzufügen.
- Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
- 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 Erfassung von Logs mithilfe einer Zugriffsschlüssel-ID und einer geheimen Methode. Informationen zum Erstellen der Zugriffsschlüssel-ID und des Secrets finden Sie unter Tool-Authentifizierung mit AWS konfigurieren.
- Geben Sie basierend auf der von Ihnen erstellten AWS S3-Serverzugriffskonfiguration 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
- Warteschlangen-Zugriffsschlüssel-ID
- Geheimer 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.
Feeds über den Content Hub einrichten
Sie können den Erfassungsfeed in Google SecOps entweder mit Amazon SQS (bevorzugt) oder Amazon S3 konfigurieren.
Geben Sie Werte für die folgenden Felder an:
- Region: Region, in der der S3-Bucket oder die SQS-Warteschlange gehostet wird.
- Warteschlangenname: Name der SQS-Warteschlange, aus der Protokolldaten gelesen werden sollen.
- Kontonummer: Kontonummer, zu der die SQS-Warteschlange gehört.
- Warteschlangen-Zugriffsschlüssel-ID: 20-stellige Zugriffsschlüssel-ID für das Konto. Beispiel:
AKIAOSFOODNN7EXAMPLE
. - Queue Secret Access Key (geheimer Zugriffsschlüssel für die Warteschlange): 40 Zeichen langer geheimer Zugriffsschlüssel. Beispiel:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
. - Option zum Löschen der Quelle: Option zum Löschen von Dateien und Verzeichnissen nach der Datenübertragung.
Erweiterte Optionen
- Feedname: Ein vorausgefüllter Wert, der den Feed identifiziert.
- Quelltyp: Methode, die zum Erfassen von Logs in Google SecOps verwendet wird.
- Asset-Namespace: Namespace, der dem Feed zugeordnet ist.
- Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.
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 legt resource_type auf „STORAGE_BUCKET“ fest, wenn das Feld bucket vorhanden ist. |
bucketowner |
target.resource.product_object_id |
Direkt aus dem Rohlogfeld bucketowner zugeordnet. |
bytes_sent |
network.sent_bytes |
Direkt aus dem Rohlogfeld bytes_sent zugeordnet, nachdem es in eine vorzeichenlose Ganzzahl umgewandelt und „-“ durch „0“ ersetzt wurde. |
ciphersuite |
network.application_protocol : „HTTPS“ |
Der Parser legt application_protocol auf „HTTPS“ fest, 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 legt action auf „BLOCK“ fest, wenn das Feld errorcode „AccessDenied“ (Groß-/Kleinschreibung wird nicht berücksichtigt) enthält. |
hostheader |
target.hostname |
Aus dem Rohlogfeld hostheader extrahiert, wobei die Portnummer möglicherweise entfernt wurde. |
hostheader |
target.port |
Wird aus dem Rohlogfeld 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 mit „http://“ oder „https://“ versehen, je nachdem, ob ciphersuite vorhanden ist. |
httpstatus |
network.http.response_code |
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 |
Direkt aus dem Rohlogfeld objectsize zugeordnet, nachdem es in eine vorzeichenlose Ganzzahl umgewandelt und „-“ durch „0“ ersetzt wurde. |
operation |
metadata.product_event_type |
Direkt aus dem Rohlogfeld operation zugeordnet. |
referrer |
network.http.referral_url |
Direkt aus dem Rohlogfeld referrer zugeordnet, nachdem Anführungszeichen entfernt wurden. |
remoteip |
metadata.event_type : "USER_RESOURCE_ACCESS" |
Der Parser legt event_type auf „USER_RESOURCE_ACCESS“ fest, wenn das Feld remoteip leer ist. |
remoteip |
principal.ip |
Direkt aus dem Rohlogfeld remoteip zugeordnet. |
requester |
target.resource.attribute.labels.key : „Access Point 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 |
Direkt aus dem Rohlogfeld request_time_ms zugeordnet, nachdem es in eine Ganzzahl umgewandelt, „-“ durch „0“ ersetzt und mit Nullen aufgefüllt wurde, 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 |
Aus dem Rohlogfeld time geparst und in einen Zeitstempel konvertiert. |
tlsVersion |
network.tls.version |
Direkt aus dem Rohlogfeld tlsVersion zugeordnet. |
useragent |
network.http.user_agent |
Direkt aus dem Rohlogfeld useragent zugeordnet, nachdem Anführungszeichen entfernt wurden. |
(Parserlogik) | metadata.event_type : „NETWORK_HTTP“ |
Der Parser legt den Standardwert für event_type auf „NETWORK_HTTP“ fest. |
(Parserlogik) | metadata.log_type : "AWS_S3_SERVER_ACCESS" |
Der Parser setzt log_type auf „AWS_S3_SERVER_ACCESS“. |
(Parserlogik) | metadata.product_name : „AWS S3 Server Access“ |
Der Parser legt product_name auf „AWS S3 Server Access“ fest. |
(Parserlogik) | metadata.product_version : „HTTP/http_version “ |
Der Parser legt product_version anhand der extrahierten http_version fest. |
(Parserlogik) | metadata.vendor_name : „AMAZON“ |
Der Parser setzt vendor_name auf „AMAZON“. |
(Parserlogik) | network.application_protocol : „HTTP“ |
Der Parser setzt application_protocol auf „HTTP“, wenn das Feld ciphersuite nicht vorhanden ist. |
(Parserlogik) | timestamp |
Der Parser legt das Ereignis timestamp auf die aktuelle Zeit fest, wenn das Ereignis verarbeitet wird. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten