Snowflake-Logs erfassen

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Snowflake-Logs mit AWS S3 in Google Security Operations aufnehmen. Der Parser extrahiert Felder aus den Log-Nachrichten mithilfe einer Reihe von Grok- und KV-Musterabgleichsregeln, die speziell für das Snowflake-Logformat entwickelt wurden. Anschließend werden die extrahierten Felder dem Unified Data Model (UDM) zugeordnet, um die Daten mit zusätzlichem Kontext anzureichern und die Darstellung für weitere Analysen zu standardisieren.

Hinweise

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Google SecOps-Instanz
  • Privilegierter Zugriff auf AWS
  • Zugriffsrechte für Snowflake (ACCOUNTADMIN)

Amazon S3-Bucket konfigurieren

  1. Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung unter Bucket erstellen.
  2. Speichern Sie den Namen und die Region des Buckets zur späteren Verwendung.

Snowflake-AWS-IAM-Richtlinie konfigurieren

  1. Melden Sie sich in der AWS an.
  2. Suchen Sie nach IAM und wählen Sie den Eintrag aus.
  3. Wählen Sie Kontoeinstellungen aus.
  4. Suchen Sie in der Liste Endpoints unter Security Token Service (STS) nach der Snowflake-Region, in der sich Ihr Konto befindet.
  5. Wenn der STS-Status Inaktiv lautet, stellen Sie den Schalter auf Aktiv.
  6. Wählen Sie Richtlinien aus.
  7. Wählen Sie Richtlinie erstellen aus.
  8. Wählen Sie im Richtlinieneditor die Option JSON aus.
  9. Kopieren Sie die folgende Richtlinie (im JSON-Format) und fügen Sie sie ein, um Snowflake die erforderlichen Berechtigungen zum Laden oder Entladen von Daten mit einem einzelnen Bucket- und Ordnerpfad zu gewähren. Sie können Datendateien auch mit der Kopieroption PURGE löschen.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:GetObjectVersion",
                  "s3:DeleteObject",
                  "s3:DeleteObjectVersion"
                ],
                "Resource": "arn:aws:s3:::<bucket>/<prefix>/*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": "arn:aws:s3:::<bucket>",
                "Condition": {
                    "StringLike": {
                        "s3:prefix": [
                            "<prefix>/*"
                        ]
                    }
                }
            }
        ]
    }
    
  10. Klicken Sie auf Weiter.

  11. Geben Sie einen Richtliniennamen ein, z. B. snowflake_access, und optional eine Beschreibung.

  12. Klicken Sie auf Richtlinie erstellen.

Snowflake-AWS-IAM-Rolle konfigurieren

  1. Wählen Sie in AWS IAM (Identity and Access Management, Identitäts- und Zugriffsverwaltung) Rollen aus.
  2. Klicken Sie auf Rolle erstellen.
  3. Wählen Sie AWS-Konto als Art der vertrauenswürdigen Entität aus.
  4. Wählen Sie Anderes AWS-Konto aus.
  5. Geben Sie im Feld „Konto-ID“ vorübergehend Ihre eigene AWS-Konto-ID ein. Später ändern Sie die Vertrauensbeziehung und gewähren Zugriff auf Snowflake.
  6. Wählen Sie die Option Externe ID erforderlich aus.
  7. Geben Sie eine Platzhalter-ID wie 0000 ein. In einem späteren Schritt ändern Sie die Vertrauensstellung für Ihre IAM-Rolle und geben die externe ID für Ihre Speicherintegration an.
  8. Klicken Sie auf Weiter.
  9. Wählen Sie die zuvor erstellte IAM-Richtlinie aus.
  10. Klicken Sie auf Weiter.
  11. Geben Sie einen Namen und eine Beschreibung für die Rolle ein.
  12. Klicken Sie auf Rolle erstellen.
  13. Kopieren und speichern Sie auf der Seite mit der Rollenzusammenfassung den Rollen-ARN.

Snowflake-S3-Integration konfigurieren

  1. Stellen Sie eine Verbindung zur Snowflake-Datenbank her.
  2. Ersetzen Sie die folgenden Felder und führen Sie den Befehl aus:

    • <integration_name> ist der Name der neuen Integration (z. B. s3_integration).
    • <iam_role> ist der Amazon Resource Name (ARN) der Rolle, die Sie zuvor erstellt haben.
    • <aws_s3_bucket_path> ist der Pfad zum Bucket, den Sie zuvor erstellt haben (z. B. s3://your-log-bucket-name/).
    CREATE OR REPLACE STORAGE INTEGRATION <integration_name>
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'S3'
      ENABLED = TRUE
      STORAGE_AWS_ROLE_ARN = '<iam_role>'
      STORAGE_ALLOWED_LOCATIONS = ('<aws_s3_bucket_path>')
    

AWS IAM-Nutzerberechtigungen für den Zugriff auf den Bucket konfigurieren

  1. Rufen Sie den ARN für den IAM-Nutzer ab, der automatisch für Ihr Snowflake-Konto erstellt wurde, und ersetzen Sie <integration_name> durch den tatsächlichen Namen der Integration, die Sie zuvor erstellt haben: none DESC INTEGRATION <integration_name>;
  • Beispiel: none DESC INTEGRATION s3_integration; +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/ | [] | | STORAGE_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/abc1-b-self1234 | | | STORAGE_AWS_ROLE_ARN | String | arn:aws:iam::001234567890:role/myrole | | | STORAGE_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=2_a123456/s0aBCDEfGHIJklmNoPq= | | +---------------------------+---------------+--------------------------------------------------------------------------------+------------------+
  1. Kopieren und speichern Sie die Werte für die folgenden Attribute:
    • STORAGE_AWS_IAM_USER_ARN
    • STORAGE_AWS_EXTERNAL_ID
  2. Rufen Sie die AWS Management Console auf.
  3. Wählen Sie IAM > Rollen aus.
  4. Wählen Sie die zuvor erstellte Rolle aus.
  5. Wählen Sie den Tab Vertrauensstellungen aus.
  6. Klicken Sie auf Vertrauensrichtlinie bearbeiten.
  7. Aktualisieren Sie das Richtliniendokument mit den Ausgabewerten von DESC INTEGRATION:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "<snowflake_user_arn>"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<snowflake_external_id>"
            }
          }
        }
      ]
    }
    
  8. Ersetzen Sie:

    • snowflake_user_arn ist der aufgezeichnete STORAGE_AWS_IAM_USER_ARN-Wert.
    • snowflake_external_id ist der aufgezeichnete STORAGE_AWS_EXTERNAL_ID-Wert.
  9. Klicken Sie auf Richtlinie aktualisieren.

JSON-Dateiformat in Snowflake konfigurieren

  1. Geben Sie in Snowflake den folgenden Befehl ein:

    CREATE OR REPLACE FILE FORMAT my_json_format
      type = json
      COMPRESSION = 'gzip'
      null_if = ('NULL', 'null');
    

S3-Phase in Snowflake erstellen

  1. Ersetzen Sie in Snowflake die folgenden Felder und geben Sie den Befehl ein:

    • <DB_NAME>
    • <DB_SCHEMA_NAME>
    • <AWS_S3_BUCKET_PATH>
    use database '<DB_NAME>';
    use schema '<DB_SCHEMA_NAME>';
    CREATE OR REPLACE STAGE my_s3_stage
    storage_integration = s3_integration
    url = '<AWS_S3_BUCKET_PATH>'
    file_format = my_json_format;
    

Snowflake für den Datenexport konfigurieren

  1. Führen Sie den UNLOAD-Befehl aus, um Daten aus Tabellen in die Staging-Umgebung und dann in AWS S3 zu exportieren:

    use database '<DB_NAME>';
    use WAREHOUSE '<WAREHOUSE_NAME>';
    
    copy into @my_s3_stage/login_history from (SELECT OBJECT_CONSTRUCT('application', 'snowflake' ,'environment', '<PUT_HERE_ENV_NAME>', 'log_type', 'login_history', 'EVENT_TIMESTAMP', EVENT_TIMESTAMP, 'EVENT_TYPE', EVENT_TYPE, 'USER_NAME', USER_NAME, 'CLIENT_IP', CLIENT_IP, 'REPORTED_CLIENT_TYPE', REPORTED_CLIENT_TYPE, 'FIRST_AUTHENTICATION_FACTOR',FIRST_AUTHENTICATION_FACTOR, 'IS_SUCCESS', IS_SUCCESS, 'ERROR_CODE', ERROR_CODE, 'ERROR_MESSAGE', ERROR_MESSAGE) from snowflake.account_usage.Login_history) FILE_FORMAT = (TYPE = JSON) ;
    
    copy into @my_s3_stage/access_history from (SELECT OBJECT_CONSTRUCT('application', 'snowflake' ,'environment', '<PUT_HERE_DB_NAME>', 'log_type', 'access_history', 'QUERY_START_TIME',QUERY_START_TIME, 'USER_NAME', USER_NAME, 'DIRECT_OBJECTS_ACCESSED',DIRECT_OBJECTS_ACCESSED, 'BASE_OBJECTS_ACCESSED', BASE_OBJECTS_ACCESSED, 'OBJECTS_MODIFIED', OBJECTS_MODIFIED) from snowflake.account_usage.Access_History ) FILE_FORMAT = (TYPE = JSON);
    
  2. Wiederholen Sie den Exportvorgang für alle folgenden Tabellen, in denen Snowflake Logs und Audit-bezogene Daten speichert:

    Databases ;
    WAREHOUSE_EVENTS_HISTORY ;
    WAREHOUSE_LOAD_HISTORY ;
    WAREHOUSE_METERING_HISTORY ;
    DATABASE_STORAGE_USAGE_HISTORY ;
    DATA_TRANSFER_HISTORY ;
    GRANTS_TO_ROLES ;
    GRANTS_TO_USERS ;
    METERING_DAILY_HISTORY ;
    PIPE_USAGE_HISTORY ;
    REPLICATION_USAGE_HISTORY ;
    STAGE_STORAGE_USAGE_HISTORY ;
    STORAGE_USAGE ;
    TASK_HISTORY ;
    COPY_HISTORY ;
    

AWS IAM für Google SecOps konfigurieren

  1. Melden Sie sich in der AWS an.
  2. Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
  3. Wählen Sie den erstellten Nutzer aus.
  4. Wählen Sie den Tab Sicherheitsanmeldedaten aus.
  5. Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
  6. Wählen Sie Drittanbieterdienst als Anwendungsfall aus.
  7. Klicken Sie auf Weiter.
  8. Optional: Fügen Sie ein Beschreibungstag hinzu.
  9. Klicken Sie auf Zugriffsschlüssel erstellen.
  10. Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die zukünftige Verwendung zu speichern.
  11. Klicken Sie auf Fertig.
  12. Wählen Sie den Tab Berechtigungen aus.
  13. Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
  14. Wählen Sie Berechtigungen hinzufügen aus.
  15. Wählen Sie Richtlinien direkt anhängen aus.
  16. Suchen Sie nach der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
  17. Klicken Sie auf Weiter.
  18. Klicken Sie auf Berechtigungen hinzufügen.

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 „SIEM-Einstellungen“ > „Feeds“ einrichten

So konfigurieren Sie einen Feed:

  1. Rufen Sie die SIEM-Einstellungen> Feeds auf.
  2. Klicken Sie auf Neuen Feed hinzufügen.
  3. Klicken Sie auf der nächsten Seite auf Einen einzelnen Feed konfigurieren.
  4. Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. Snowflake Logs (Snowflake-Protokolle).
  5. Wählen Sie Amazon S3 als Quelltyp aus.
  6. Wählen Sie Snowflake als Logtyp aus.
  7. Klicken Sie auf Weiter.
  8. Geben Sie Werte für die folgenden Eingabeparameter an:

    • Region: Die Region, in der sich der Amazon S3-Bucket befindet.
    • S3-URI: Der Bucket-URI (das Format sollte s3://your-log-bucket-name/ sein). Ersetzen Sie Folgendes:
      • your-log-bucket-name: der Name des Buckets.
    • URI ist ein: Wählen Sie Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
    • Access Key ID (Zugriffsschlüssel-ID): Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
    • Secret Access Key (Geheimer Zugriffsschlüssel): Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.
  9. Klicken Sie auf Weiter.

  10. Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.

Feeds über den Content Hub einrichten

Geben Sie Werte für die folgenden Felder an:

  • Region: Die Region, in der sich der Amazon S3-Bucket befindet.

    • S3-URI: Der Bucket-URI (das Format sollte s3://your-log-bucket-name/ sein). Ersetzen Sie Folgendes:
      • your-log-bucket-name: der Name des Buckets.
    • URI ist ein: Wählen Sie Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
    • Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option aus.
    • Access Key ID (Zugriffsschlüssel-ID): Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
    • Secret Access Key (Geheimer Zugriffsschlüssel): Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.

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: Der Namespace, der dem Feed zugeordnet ist.
  • Aufnahmelabels: Labels, die auf alle Ereignisse aus diesem Feed angewendet werden.

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten