AWS API Gateway-Zugriffslogs erfassen
In diesem Dokument wird beschrieben, wie Sie Amazon API Gateway-Zugriffsprotokolle mit AWS CloudWatch Logs und Kinesis Data Firehose in Google Security Operations aufnehmen. Amazon API Gateway bietet REST- und HTTP-APIs zum Erstellen und Verwalten von APIs im großen Maßstab. Mithilfe von Zugriffslogs können Sie die API-Nutzung überwachen und Probleme beheben. Durch diese Integration werden diese Logs zur Analyse und zum Monitoring in Google SecOps gestreamt.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Google SecOps-Instanz
- Privilegierter Zugriff auf AWS
Amazon API Gateway-Zugriffsprotokollierung (in CloudWatch Logs) aktivieren
- Rufen Sie die AWS Console > API Gateway auf.
Für REST APIs:
- Öffnen Sie Phase > Logs/Tracing > Access logging (Zugriffsprotokollierung aktivieren).
Logformat: Wählen Sie JSON aus.
{ "requestId":"$context.requestId", "ip":"$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod", "routeKey":"$context.routeKey", "status":"$context.status", "protocol":"$context.protocol", "responseLength":"$context.responseLength", "integrationLatency":"$context.integrationLatency", "error":"$context.error.message" }
CloudWatch Logs-Loggruppe: Wählen Sie eine Loggruppe aus oder erstellen Sie eine (z. B.
/aws/apigateway/access
).
Bei HTTP-APIs:
- Wählen Sie Ihre API > „Monitor“ > „Logging“ aus.
- Wählen Sie Phase> Bearbeiten aus.
- Aktivieren Sie Zugriffs-Logging.
- Verwenden Sie dasselbe JSON-Logformat wie oben.
- CloudWatch Logs-Loggruppe: Wählen Sie eine Loggruppe aus oder erstellen Sie eine (z. B.
/aws/apigateway/access
).
Klicken Sie auf Speichern.
Feed in Google SecOps konfigurieren, um Amazon API Gateway-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf + Neuen Feed hinzufügen.
- Geben Sie im Feld Feedname
Amazon API Gateway - CloudWatch via Firehose
ein. - Wählen Sie Amazon Data Firehose als Quelltyp aus.
- Wählen Sie Amazon API Gateway als Logtyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für Aufteilung: Optional
n
- Asset-Namespace:
aws.api_gateway
- Labels für Datenaufnahme: z. B.
source=apigw_access
,aws_region=<your-region>
- Trennzeichen für Aufteilung: Optional
- Klicken Sie auf Weiter.
- Prüfen Sie die Feedkonfiguration und klicken Sie auf Senden.
- Klicken Sie im Feed Details auf Secret Key generieren und kopieren Sie den Secret Key.
- Kopieren Sie die Feed HTTPS endpoint URL (HTTPS-Endpunkt-URL für Feed) aus Endpoint Information (Endpunktinformationen).
- Erstellen Sie einen Google Cloud-API-Schlüssel unter APIs und Dienste > Anmeldedaten > Anmeldedaten erstellen > API-Schlüssel und beschränken Sie ihn auf die Google SecOps API.
- Kopieren Sie den API-Schlüssel und speichern Sie ihn an einem sicheren Ort.
Amazon Kinesis Data Firehose konfigurieren (direkt zu Google SecOps)
- Rufen Sie in der AWS Console Kinesis > Data Firehose > Create delivery stream auf.
- Geben Sie die folgenden Konfigurationsdetails an:
- Quelle: Wählen Sie Direkter PUT oder andere Quellen aus.
- Ziel: Wählen Sie HTTP-Endpunkt aus.
- HTTP-Endpunkt-URL: Geben Sie
ENDPOINT_URL?key=API_KEY
ein (verwenden Sie die HTTPS-Endpunkt-URL des Feeds und den API-Schlüssel aus dem vorherigen Schritt). - HTTP-Methode: Wählen Sie POST aus.
- Zugriffsschlüssel: Fügen Sie den im Feed generierten geheimen Schlüssel ein.
- Pufferungshinweise: Legen Sie Puffergröße = 1 MiB und Pufferintervall = 60 Sekunden fest.
- Komprimierung: Wählen Sie Deaktiviert aus.
- S3-Sicherung: Wählen Sie Deaktiviert aus.
- Behalten Sie die Standardeinstellungen für retry und logging bei.
- Klicken Sie auf Lieferstream erstellen. (Zum Beispiel:
cwlogs-to-secops
).
IAM-Berechtigungen konfigurieren und die Loggruppe abonnieren
- Rufen Sie in der AWS Console IAM > Policies > Create policy > JSON auf.
- Geben Sie im JSON-Editor die folgende Richtlinie ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops" } ] }
- Ersetzen Sie
<region>
und<account-id>
durch Ihre AWS-Region und Konto-ID.
Geben Sie der Richtlinie den Namen
CWLtoFirehoseWrite
und klicken Sie auf Richtlinie erstellen.Klicken Sie auf IAM > Rollen > Rolle erstellen.
Wählen Sie Benutzerdefinierte Vertrauensrichtlinie aus und geben Sie Folgendes ein:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<your-region>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Hängen Sie die Richtlinie
CWLtoFirehoseWrite
an die Rolle an.Geben Sie der Rolle den Namen
CWLtoFirehoseRole
und klicken Sie auf Rolle erstellen.Rufen Sie CloudWatch > Logs > Log groups auf.
Wählen Sie die zuvor erstellte API Gateway-Protokollgruppe aus.
Öffnen Sie den Tab Abo-Filter und klicken Sie auf Erstellen.
Wählen Sie Amazon Kinesis Data Firehose-Abo-Filter erstellen aus.
Nehmen Sie folgende Einstellungen vor:
- Ziel: Auslieferungsstream
cwlogs-to-secops
. - Berechtigung erteilen: Rolle
CWLtoFirehoseRole
. - Filtername: Geben Sie
all-events
ein. - Filtermuster: Lassen Sie das Feld leer, um alle Ereignisse zu senden.
- Ziel: Auslieferungsstream
Klicken Sie auf Streaming starten.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten