Asset-Änderungen mit Pub/Sub überwachen

Sie können Echtzeitbenachrichtigungen zu Ressourcen- und Richtlinienänderungen erhalten, indem Sie einen Feed erstellen und abonnieren.

Beim Erstellen des Feeds können Sie angeben, dass Sie Änderungen an unterstützten Ressourcentypen, IAM-Richtlinien, Zugriffsrichtlinien und Organisationsrichtlinien in einer Organisation, einem Ordner oder einem Projekt überwachen möchten. Darüber hinaus können Sie Ihrem Feed Bedingungen hinzufügen, damit Sie nur Benachrichtigungen für bestimmte Änderungen an einem Inhalt erhalten.

Nachdem Sie einen Feed erstellt haben, erhalten Sie Benachrichtigungen über Pub/Sub, wenn sich die angegebenen Assets ändern. Die erste im Pub/Sub-Thema veröffentlichte Nachricht ist eine Begrüßungsnachricht im Format eines Strings. Alle nachfolgenden Nachrichten haben das Format eines TemporalAsset.

Hier ist eine Beispiel-Pub/Sub-Nachricht für den Inhaltstyp RESOURCE.

{
  "asset":{
    "ancestors":[
      "projects/000000000000",
      "folders/000000000000",
      "organizations/000000000000"
    ],
    "assetType":"storage.googleapis.com/Bucket",
    "name":"//storage.googleapis.com/my-bucket",
    "resource":{
      "data":{
        LATEST_ASSET_METADATA
      },
      "discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
      "discoveryName":"Bucket",
      "location":"us",
      "parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
      "version":"v1"
    },
    "updateTime":"2024-01-30T00:00:00.000000Z"
  },
  "priorAsset":{
    "ancestors":[
      "projects/000000000000",
      "folders/000000000000",
      "organizations/000000000000"
    ],
    "assetType":"storage.googleapis.com/Bucket",
    "name":"//storage.googleapis.com/my-bucket",
    "resource":{
      "data":{
        PREVIOUS_ASSET_METADATA
      },
      "discoveryDocumentUri":"https://www.googleapis.com/discovery/v1/apis/storage/v1/rest",
      "discoveryName":"Bucket",
      "location":"us",
      "parent":"//cloudresourcemanager.googleapis.com/projects/000000000000",
      "version":"v1"
    },
    "updateTime":"2024-01-29T00:00:00.000000Z"
  },
  "priorAssetState":"PRESENT",
  "window":{
    "startTime":"2024-01-30T00:00:00.000000Z"
  }
}

Weitere Informationen zu Pub/Sub oder zum Einrichten von Abos finden Sie in der Pub/Sub-Dokumentation.

Hinweise

  1. Aktivieren Sie die Cloud Asset Inventory API in dem Projekt, in dem Sie Cloud Asset Inventory-Befehle ausführen.

    Cloud Asset Inventory API aktivieren

  2. Prüfen Sie, ob Ihr Konto die richtige Rolle zum Aufrufen der Cloud Asset Inventory API hat. Informationen zu den einzelnen Berechtigungen für die einzelnen Anruftypen finden Sie unter Berechtigungen.

  3. Erstellen Sie ein Pub/Sub-Thema, falls noch nicht geschehen.

Beschränkungen

  • Es kann bis zu zehn Minuten dauern, bis Feederstellung, -aktualisierung oder -löschung wirksam wird.

  • Das Projekt, in dem ein Feed erstellt wird, muss den Feed überdauern. Das liegt daran, dass sich das Dienstkonto, das zum Veröffentlichen im Pub/Sub-Zielthema verwendet wird, in diesem Projekt befindet. Ein Feed funktioniert nicht mehr und wird gelöscht, sobald das Projekt endgültig gelöscht wird.

  • Sie können bis zu 200 Feeds für ein übergeordnetes Element erstellen. Diese Beschränkung gilt nur für Feeds, die unmittelbar nach einem übergeordneten Element angewendet werden, und berücksichtigt nicht die Feeds der untergeordneten Elemente. Wenn Sie beispielsweise zehn Projekte in einer Organisation haben, kann jedes Projekt bis zu 200 Feeds enthalten und die Organisation kann ebenfalls bis zu 200 Feeds haben.

Feeds erstellen

gcloud

gcloud asset feeds create FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID \
    --pubsub-topic=projects/TOPIC_PROJECT_ID/topics/TOPIC_ID \
    --asset-names=ASSET_NAME_1,ASSET_NAME_2,... \
    --asset-types=ASSET_TYPE_1,ASSET_TYPE_2,... \
    --content-type=CONTENT_TYPE \
    --relationship-types=RELATIONSHIP_TYPE_1,RELATIONSHIP_TYPE_2,... \
    --condition-title="CONDITION_TITLE" \
    --condition-description="CONDITION_DESCRIPTION" \
    --condition-expression="CONDITION_EXPRESSION"

Geben Sie folgende Werte an:

  • SCOPE: Verwenden Sie einen der folgenden Werte:

    • project=PROJECT_ID, wobei PROJECT_ID die ID des Projekts ist, in dem der Feed erstellt werden soll.
    • folder=FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, in dem der Feed erstellt werden soll.

      ID eines Google Cloud -Ordners finden

      Google Cloud Console

      So finden Sie die ID eines Google Cloud -Ordners:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag --format, um weitere Informationen zu den gefundenen Ordnern zu sehen.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, in der der Feed erstellt werden soll.

      ID einer Google Cloud Organisation finden

      Google Cloud Console

      So finden Sie die ID einer Google Cloud -Organisation:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab Alle. Die Organisations-ID wird neben dem Namen der Organisation angezeigt.

      gcloud-CLI

      Sie können die ID einer Google Cloud Organisation mit dem folgenden Befehl abrufen:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: Eine eindeutige Kennung für den Asset-Feed.
  • BILLING_PROJECT_ID: Optional. Die Projekt-ID, in der sich der standardmäßige Cloud Asset Inventory-Dienst-Agent befindet, der Berechtigungen zum Verwalten Ihres Pub/Sub-Themas hat. Weitere Informationen zum Festlegen des Abrechnungsprojekts

  • TOPIC_PROJECT_ID: Die ID des Projekts, in dem sich das Pub/Sub-Thema befindet.
  • TOPIC_ID: Die ID des Pub/Sub-Themas, in dem Benachrichtigungen veröffentlicht werden sollen.
  • Mindestens eine der folgenden Asset-Definitionen:
    • ASSET_NAME_#: Optional. Eine durch Kommas getrennte Liste mit vollständigen Asset-Namen.
    • ASSET_TYPE_#: Optional. Eine durch Kommas getrennte Liste von durchsuchbaren Asset-Typen. RE2-kompatible reguläre Ausdrücke werden unterstützt. Wenn der reguläre Ausdruck mit keinem unterstützten Asset-Typ übereinstimmt, wird ein INVALID_ARGUMENT-Fehler zurückgegeben. Wenn --asset-types nicht angegeben ist, werden alle Asset-Typen zurückgegeben.
  • CONTENT_TYPE: Optional. Der Inhaltstyp der Metadaten, die Sie abrufen möchten. Wenn --content-type nicht angegeben ist, werden nur grundlegende Informationen zurückgegeben, z. B. Asset-Namen, der Zeitpunkt der letzten Aktualisierung der Assets und die Projekte, Ordner und Organisationen, zu denen sie gehören.
  • RELATIONSHIP_TYPE_#: Optional. Erfordert Zugriff auf die Security Command Center Premium- oder Enterprise-Stufe oder Gemini Cloud Assist. Eine durch Kommas getrennte Liste der Asset-Beziehungstypen, die Sie abrufen möchten. Dazu müssen Sie CONTENT_TYPE auf RELATIONSHIP setzen.
  • Wenn Sie eine optionale Feedbedingung hinzufügen, geben Sie die folgenden Details in Ihrem Befehl an:
    • CONDITION_TITLE: Ein Titel, der der Feedbedingung zugewiesen werden soll.
    • CONDITION_DESCRIPTION: Eine Beschreibung, die der Feed-Bedingung zugewiesen werden soll.
    • CONDITION_EXPRESSION: Der Bedingungsausdruck, der auf den Feed angewendet werden soll.

Eine vollständige Liste der Optionen finden Sie in der Referenz zur gcloud CLI.

Beispiel

Führen Sie den folgenden Befehl aus, um einen Feed im Pub/Sub-Thema my-topic zu erstellen, der Sie benachrichtigt, wenn Änderungen an den folgenden Ressourcen im Projekt my-project vorgenommen werden.

  • Der my-bucket Cloud Storage-Bucket
  • Beliebige BigQuery-Tabelle
gcloud asset feeds create my-feed \
    --project=my-project \
    --pubsub-topic=projects/my-project/topics/my-topic \
    --asset-names=//storage.googleapis.com/my-bucket \
    --asset-types=bigquery.googleapis.com/Table \
    --content-type=resource

Beispielantwort

assetNames:
- //storage.googleapis.com/my-bucket
assetTypes:
- bigquery.googleapis.com/Table
condition: {}
contentType: RESOURCE
feedOutputConfig:
  pubsubDestination:
    topic: projects/my-project/topics/my-topic
name: projects/000000000000/feeds/my-feed

REST

HTTP-Methode und URL:

POST https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds

Header:

X-Goog-User-Project: BILLING_PROJECT_ID

JSON-Text der Anfrage:

{
  "feedId": "FEED_ID",
  "feed": {
    "assetNames": [
      "ASSET_NAME_1",
      "ASSET_NAME_2",
      "..."
    ],
    "assetTypes": [
      "ASSET_TYPE_1",
      "ASSET_TYPE_2",
      "..."
    ],
    "contentType": "CONTENT_TYPE",
    "relationshipTypes": [
      "RELATIONSHIP_TYPE_1",
      "RELATIONSHIP_TYPE_2",
      "..."
    ],
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/TOPIC_PROJECT_ID/topics/TOPIC_ID"
      }
    },
    "condition": {
      "title": "CONDITION_TITLE",
      "description": "CONDITION_DESCRIPTION",
      "expression": "CONDITION_EXPRESSION"
    }
  }
}

Geben Sie folgende Werte an:

  • SCOPE_PATH: Verwenden Sie einen der folgenden Werte:

    Zulässige Werte:

    • projects/PROJECT_ID, wobei PROJECT_ID die ID des Projekts ist, in dem der Feed erstellt werden soll.
    • projects/PROJECT_NUMBER, wobei PROJECT_NUMBER die Nummer des Projekts ist, in dem der Feed erstellt werden soll.

      Google Cloud Projektnummer finden

      Google Cloud Console

      So finden Sie die Projektnummer eines Google Cloud -Projekts:

      1. Rufen Sie in der Google Cloud Console die Seite Willkommen auf.

        Zur Begrüßungsseite

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus und suchen Sie dann nach Ihrem Projektnamen. Der Projektname, die Projektnummer und die Projekt-ID werden in der Nähe der Überschrift Willkommen angezeigt.

        Es werden bis zu 4.000 Ressourcen angezeigt. Wenn Sie das gewünschte Projekt nicht sehen, rufen Sie die Seite Ressourcen verwalten auf und filtern Sie die Liste nach dem Namen des Projekts.

      gcloud-CLI

      Sie können eine Google Cloud Projektnummer mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, wobei FOLDER_ID die ID des Ordners ist, in dem der Feed erstellt werden soll.

      ID eines Google Cloud -Ordners finden

      Google Cloud Console

      So finden Sie die ID eines Google Cloud -Ordners:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Suchen Sie nach dem Namen des Ordners. Die Ordner-ID wird neben dem Ordnernamen angezeigt.

      gcloud-CLI

      Sie können die ID eines Google Cloud -Ordners auf Organisationsebene mit dem folgenden Befehl abrufen:

      gcloud resource-manager folders list \
          --organization=$(gcloud organizations describe ORGANIZATION_NAME \
            --format="value(name.segment(1))") \
          --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \
          --format="value(ID)"

      Dabei ist TOP_LEVEL_FOLDER_NAME eine teilweise oder vollständige Stringübereinstimmung für den Namen des Ordners. Entfernen Sie das Flag --format, um weitere Informationen zu den gefundenen Ordnern zu sehen.

      Der vorherige Befehl gibt nicht die IDs von Unterordnern in Ordnern zurück. Führen Sie dazu den folgenden Befehl mit der ID eines Ordners der obersten Ebene aus:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, wobei ORGANIZATION_ID die ID der Organisation ist, in der der Feed erstellt werden soll.

      ID einer Google Cloud Organisation finden

      Google Cloud Console

      So finden Sie die ID einer Google Cloud -Organisation:

      1. Zur Google Cloud Console.

        Zur Google Cloud Console

      2. Klicken Sie in der Menüleiste auf das Listenfeld Umschalter.
      3. Wählen Sie Ihre Organisation aus dem Listenfeld aus.
      4. Klicken Sie auf den Tab