Monitorar mudanças de recursos com o Pub/Sub

Para receber notificações em tempo real sobre alterações de recursos e políticas, crie e assine um feed.

Ao criar o feed, é possível especificar que você quer monitorar as mudanças de tipos de recursos, políticas do IAM, políticas de acesso e políticas da organização em uma organização, pasta ou projeto. Além disso, é possível adicionar condições ao seu feed para receber notificações apenas para determinados tipos de alteração em um recurso.

Depois de criar um feed, você recebe notificações por Pub/Sub sempre que os recursos especificados mudarem. A primeira mensagem publicada no tópico do Pub/Sub é uma mensagem de boas-vindas no formato de uma string, e todas as mensagens seguintes estão no formato de um TemporalAsset.

Confira um exemplo de mensagem do Pub/Sub para o tipo de conteúdo 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"
  }
}

Para saber mais sobre o Pub/Sub ou como configurar assinaturas, consulte a documentação do Pub/Sub.

Antes de começar

  1. Ative a API Cloud Asset Inventory no projeto em que você está executando comandos do Inventário de recursos do Cloud. se originou.

    Ativar a API Cloud Asset Inventory

  2. Verifique se a conta tem o papel correto para chamar a API Cloud Asset Inventory. Para permissões individuais de cada tipo de chamada, consulte Permissões.

  3. Crie um tópico do Pub/Sub, se você ainda não tiver um.

Limitações

  • Pode levar até 10 minutos para que a criação, a atualização ou a exclusão de um feed entre em vigor.

  • O projeto em que um feed é criado precisa sobreviver ao feed. Isso acontece porque a conta de serviço usada para publicar no tópico Pub/Sub de destino está localizada nesse projeto. Um feed não funciona mais e é excluído em breve já que a exclusão do projeto é permanente.

  • Você pode criar até 200 feeds em um pai. Esse limite se aplica apenas a feeds logo depois de um pai e não conta os feeds dos filhos dele. Por exemplo, se você tiver 10 projetos em uma organização, cada projeto pode ter até 200 feeds, e a organização também pode ter até 200 feeds.

Criar feeds

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"

Forneça os valores a seguir:

  • SCOPE: use um dos seguintes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto em que o feed será criado.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta em que o feed será criado.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização onde o feed será criado.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: identificador exclusivo do feed de recursos.
  • BILLING_PROJECT_ID: opcional. O ID do projeto em que o agente de serviço padrão do Cloud Asset Inventory tem permissões para gerenciar seu tópico do Pub/Sub. Saiba mais sobre como configurar o projeto de faturamento.

  • TOPIC_PROJECT_ID: o ID do projeto em que o do Pub/Sub.
  • TOPIC_ID: o ID do tópico do Pub/Sub em que as notificações serão publicadas.
  • Pelo menos uma das seguintes definições de recursos:
  • CONTENT_TYPE: opcional. O tipo de conteúdo dos metadados que você quer recuperar. Quando --content-type não é especificado, apenas informações básicas são retornadas, como nomes de recursos, na última vez que o recursos foram atualizados e a quais projetos, pastas e organizações eles pertencem.
  • RELATIONSHIP_TYPE_#: opcional. Disponível apenas para assinantes do nível Premium e Enterprise do Security Command Center. Uma lista separada por vírgulas de tipos de relação de recurso que você quer recuperar. Você precisa definir CONTENT_TYPE como RELATIONSHIP para que isso funcione.
  • Se você adicionar uma condição de feed opcional, inclua os seguintes detalhes no comando:
    • CONDITION_TITLE: um título a ser atribuído à condição do feed.
    • CONDITION_DESCRIPTION: uma descrição para atribuir ao feed. condição.
    • CONDITION_EXPRESSION: a expressão de condição a ser aplicada ao se alimentam.

Consulte a referência da CLI gcloud para todas as opções.

Exemplo

Execute o comando a seguir para criar um feed no tópico my-topic do Pub/Sub que notifica quando mudanças são feitas nos seguintes recursos no projeto my-project.

  • O bucket do Cloud Storage my-bucket
  • Qualquer tabela do BigQuery
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

Exemplo de resposta

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

Método HTTP e URL:

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

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Solicitar corpo JSON:

{
  "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"
    }
  }
}

Forneça os valores a seguir:

  • SCOPE_PATH: use um destes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto em que o feed será criado.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto em que o feed será criado.

      Como encontrar um número de projeto do Google Cloud

      Console do Google Cloud

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

      1. Acesse a página Welcome no console do Google Cloud.

        Acessar a página de boas-vindas

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      Recupere um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta na qual o feed será criado.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acessar o console do Google Cloud

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização onde o feed será criado.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto que o o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar tópico do Pub/Sub. Leia mais sobre como configurar o projeto de faturamento.

  • FEED_ID: um identificador exclusivo do feed de recursos.
  • Pelo menos uma das seguintes definições de recursos:
  • CONTENT_TYPE: opcional. O tipo de conteúdo dos metadados que você quer recuperar. Quando contentType não é especificado, apenas informações básicas são retornadas, como nomes de recursos, a última vez que os recursos foram atualizados e a quais projetos, pastas e organizações eles pertencem.
  • RELATIONSHIP_TYPE_#: opcional. Disponível apenas para assinantes do nível Premium e Enterprise do Security Command Center. Uma lista separada por vírgulas de tipos de relação de recurso que você quer recuperar. Defina CONTENT_TYPE como RELATIONSHIP para que isso funcione.
  • TOPIC_PROJECT_ID: o ID do projeto em que o do Pub/Sub.
  • TOPIC_ID: o ID do tópico do Pub/Sub em que as notificações serão publicadas.
  • Se você adicionar uma condição de feed opcional, inclua os seguintes detalhes no seu comando:
    • CONDITION_TITLE: um título a ser atribuído à condição do feed.
    • CONDITION_DESCRIPTION: uma descrição para atribuir ao feed. condição.
    • CONDITION_EXPRESSION: a expressão de condição a ser aplicada ao se alimentam.

Consulte a referência da REST para ver todas .

Exemplos de comando

Execute um dos comandos a seguir para criar um feed no tópico my-topic do Pub/Sub que notifica quando mudanças são feitas nos seguintes recursos no projeto my-project.

  • O bucket do Cloud Storage my-bucket
  • Qualquer tabela do BigQuery

curl (Linux, macOS ou Cloud Shell)

curl -X POST \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "feedId": "my-feed",
            "feed": {
              "assetNames": [
                "//storage.googleapis.com/my-bucket"
              ],
              "assetTypes": [
                "bigquery.googleapis.com/Table"
              ],
              "contentType": "RESOURCE",
              "feedOutputConfig": {
                "pubsubDestination": {
                  "topic": "projects/my-project/topics/my-topic"
                }
              }
            }
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "feedId": "my-feed",
  "feed": {
    "assetNames": [
      "//storage.googleapis.com/my-bucket"
    ],
    "assetTypes": [
      "bigquery.googleapis.com/Table"
    ],
    "contentType": "RESOURCE",
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/my-project/topics/my-topic"
      }
    }
  }
}
"@

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content

Exemplo de resposta

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

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


// Sample create-feed create feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	feedParent := fmt.Sprintf("projects/%s", projectID)
	assetNames := []string{"YOUR_ASSET_NAME"}
	topic := fmt.Sprintf("projects/%s/topics/%s", projectID, "YOUR_TOPIC_NAME")

	req := &assetpb.CreateFeedRequest{
		Parent: feedParent,
		FeedId: *feedID,
		Feed: &assetpb.Feed{
			AssetNames: assetNames,
			FeedOutputConfig: &assetpb.FeedOutputConfig{
				Destination: &assetpb.FeedOutputConfig_PubsubDestination{
					PubsubDestination: &assetpb.PubsubDestination{
						Topic: topic,
					},
				},
			},
		}}
	response, err := client.CreateFeed(ctx, req)
	if err != nil {
		log.Fatalf("client.CreateFeed: %v", err)
	}
	fmt.Print(response)
}

Java

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.ContentType;
import com.google.cloud.asset.v1.CreateFeedRequest;
import com.google.cloud.asset.v1.Feed;
import com.google.cloud.asset.v1.FeedOutputConfig;
import com.google.cloud.asset.v1.ProjectName;
import com.google.cloud.asset.v1.PubsubDestination;
import java.io.IOException;
import java.util.Arrays;

public class CreateFeedExample {
  // Create a feed
  public static void createFeed(
      String[] assetNames, String feedId, String topic, String projectId, ContentType contentType)
      throws IOException, IllegalArgumentException {
    // String[] assetNames = {"MY_ASSET_NAME"}
    // ContentType contentType = contentType
    // String FeedId = "MY_FEED_ID"
    // String topic = "projects/[PROJECT_ID]/topics/[TOPIC_NAME]"
    // String projectID = "MY_PROJECT_ID"
    Feed feed =
        Feed.newBuilder()
            .addAllAssetNames(Arrays.asList(assetNames))
            .setContentType(contentType)
            .setFeedOutputConfig(
                FeedOutputConfig.newBuilder()
                    .setPubsubDestination(PubsubDestination.newBuilder().setTopic(topic).build())
                    .build())
            .build();
    CreateFeedRequest request =
        CreateFeedRequest.newBuilder()
            .setParent(String.format(ProjectName.of(projectId).toString()))
            .setFeedId(feedId)
            .setFeed(feed)
            .build();
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      Feed response = client.createFeed(request);
      System.out.println("Feed created successfully: " + response.getName());
    } catch (IOException | IllegalArgumentException e) {
      System.out.println("Error during CreateFeed: \n" + e.toString());
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const feedId = 'my feed';
// const assetNames = '//storage.googleapis.com/<BUCKET_NAME1>,//storage.googleapis.com/<BUCKET_NAME2>';
// const topicName = 'projects/<PROJECT_ID>/topics/<TOPIC_ID>'
// const contentType = 'RESOURCE';

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function createFeed() {
  const projectId = await client.getProjectId();
  // TODO(developer): Choose asset names, such as //storage.googleapis.com/[YOUR_BUCKET_NAME].
  // const assetNames = ['ASSET_NAME1', 'ASSET_NAME2', ...];

  const request = {
    parent: `projects/${projectId}`,
    feedId: feedId,
    feed: {
      assetNames: assetNames.split(','),
      contentType: contentType,
      feedOutputConfig: {
        pubsubDestination: {
          topic: topicName,
        },
      },
    },
  };

  // Handle the operation using the promise pattern.
  const result = await client.createFeed(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));

Python

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

from google.cloud import asset_v1

# TODO project_id = 'Your Google Cloud Project ID'
# TODO feed_id = 'Feed ID you want to create'
# TODO asset_names = 'List of asset names the feed listen to'
# TODO topic = "Topic name of the feed"
# TODO content_type ="Content type of the feed"

client = asset_v1.AssetServiceClient()
parent = f"projects/{project_id}"
feed = asset_v1.Feed()
feed.asset_names.extend(asset_names)
feed.feed_output_config.pubsub_destination.topic = topic
feed.content_type = content_type
response = client.create_feed(
    request={"parent": parent, "feed_id": feed_id, "feed": feed}
)
print(f"feed: {response}")

Ruby

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

require "google/cloud/asset"

# project_id = 'YOUR_PROJECT_ID'
# feed_id = 'NAME_OF_FEED'
# pubsub_topic = 'YOUR_PUBSUB_TOPIC'
# asset names, e.g.: //storage.googleapis.com/[YOUR_BUCKET_NAME]
# asset_names = [ASSET_NAMES, COMMMA_DELIMTTED]
asset_service = Google::Cloud::Asset.asset_service

formatted_parent = asset_service.project_path project: project_id

feed = {
  asset_names:        asset_names,
  feed_output_config: {
    pubsub_destination: {
      topic: pubsub_topic
    }
  }
}
response = asset_service.create_feed(
  parent:  formatted_parent,
  feed_id: feed_id,
  feed:    feed
)
puts "Created feed: #{response.name}"

Acessar feeds

gcloud

gcloud asset feeds describe FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID

Forneça os valores a seguir:

  • SCOPE: use um destes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto em que o feed está.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta em que o feed está.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o comando a seguir usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização em que o feed está.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto que o o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar tópico do Pub/Sub. Leia mais sobre como configurar o projeto de faturamento.

  • FEED_ID: identificador exclusivo do feed de recursos.

Consulte a referência da CLI gcloud para todas as opções.

Exemplo de resposta

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

Método HTTP e URL:

GET https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Forneça os valores a seguir:

  • SCOPE_PATH: use um destes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto em que o feed está.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto em que o feed está.

      Como encontrar um número de projeto do Google Cloud

      Console do Google Cloud

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

      1. Acesse a página Welcome no console do Google Cloud.

        Acessar a página de boas-vindas

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      Recupere um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta em que o feed está.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acessar o console do Google Cloud

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização onde o feed está.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acessar o console do Google Cloud

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto em que o agente de serviço padrão do Cloud Asset Inventory tem permissões para gerenciar seus conjuntos de dados e tabelas do BigQuery. Saiba mais sobre como configurar o projeto de faturamento.

  • FEED_ID: identificador exclusivo do feed de recursos.

Consulte a referência da REST para ver todas .

Exemplos de comando

Execute um dos seguintes comandos para receber um feed específico.

curl (Linux, macOS ou Cloud Shell)

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content

Exemplo de resposta

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

Go

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


// Sample get-feed get feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	feedName := fmt.Sprintf("projects/%s/feeds/%s", projectNumber, *feedID)
	req := &assetpb.GetFeedRequest{
		Name: feedName}
	response, err := client.GetFeed(ctx, req)
	if err != nil {
		log.Fatalf("client.GetFeed: %v", err)
	}
	fmt.Print(response)
}

Java

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.Feed;

public class GetFeedExample {

  // Get a feed with full feed name
  public static void getFeed(String feedName) throws Exception {
    // String feedName = "MY_FEED_NAME"

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      Feed feed = client.getFeed(feedName);
      System.out.println("Get a feed: " + feedName);
    } catch (Exception e) {
      System.out.println("Error during GetFeed: \n" + e.toString());
    }
  }
}

Node.js

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function getFeed() {
  const request = {
    name: feedName,
  };

  // Handle the operation using the promise pattern.
  const result = await client.getFeed(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));
}
getFeed();

Python

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

from google.cloud import asset_v1

# TODO feed_name = 'Feed Name you want to get'

client = asset_v1.AssetServiceClient()
response = client.get_feed(request={"name": feed_name})
print(f"gotten_feed: {response}")

Listar feeds

Para listar todos os feeds de um projeto, pasta ou organização, crie um dos solicitações a seguir.

gcloud

gcloud asset feeds list \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID

Forneça os valores a seguir:

  • SCOPE: use um destes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto em que os feeds estão.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta em que os feeds estão.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização onde os feeds estão.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto que o o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar tópico do Pub/Sub. Leia mais sobre como configurar o projeto de faturamento.

Consulte a referência da CLI gcloud para todas as opções.

Exemplo de resposta

- 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

Método HTTP e URL:

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

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Forneça os valores a seguir:

  • SCOPE_PATH: use um destes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto em que os feeds estão.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto em que os feeds estão.

      Como encontrar um número de projeto do Google Cloud

      Console do Google Cloud

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

      1. Acesse a página de Boas-vindas no console do Google Cloud.

        Acesse "Olá"

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      É possível recuperar um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta em que os feeds estão.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização onde os feeds estão.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto em que o agente de serviço padrão do Cloud Asset Inventory tem permissões para gerenciar seus conjuntos de dados e tabelas do BigQuery. Saiba mais sobre como configurar o projeto de faturamento.

Consulte a referência REST para conferir todas as opções.

Exemplos de comando

Execute um dos comandos a seguir para listar todos os feeds no projeto my-project.

curl (Linux, macOS ou Cloud Shell)

curl -X GET \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds" | Select-Object -Expand Content

Exemplo de resposta

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

Go

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


// Sample list-feeds list feeds.
package main

import (
	"context"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
)

func main() {
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	parent := fmt.Sprintf("projects/%s", projectNumber)
	req := &assetpb.ListFeedsRequest{
		Parent: parent}
	response, err := client.ListFeeds(ctx, req)
	if err != nil {
		log.Fatalf("client.ListFeeds: %v", err)
	}
	fmt.Print(response)
}

Java

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.ListFeedsResponse;
import com.google.cloud.asset.v1.ProjectName;

public class ListFeedsExample {
  // List feeds in a project.
  public static void listFeeds(String projectId) throws Exception {
    // String projectId = "MY_PROJECT_ID"
    // String topic = "projects/[PROJECT_ID]/topics/[TOPIC_NAME]"

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      ListFeedsResponse response = client.listFeeds(ProjectName.of(projectId).toString());
      System.out.println("Listed feeds under: " + projectId);
    } catch (Exception e) {
      System.out.println("Error during ListFeeds: \n" + e.toString());
    }
  }
}

Node.js

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function listFeeds() {
  const projectId = await client.getProjectId();

  const request = {
    parent: `projects/${projectId}`,
  };

  // Handle the operation using the promise pattern.
  const result = await client.listFeeds(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));

Python

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

from google.cloud import asset_v1

# TODO parent_resource = 'Parent resource you want to list all feeds'

client = asset_v1.AssetServiceClient()
response = client.list_feeds(request={"parent": parent_resource})
print(f"feeds: {response.feeds}")

Atualizar feeds

Você pode atualizar os atributos de um feed existente das seguintes maneiras:

  • Adicionar e remover nomes de recursos específicos ou limpar todos eles da se alimentam.

  • Adicionar e remover tipos específicos de recursos ou limpar todos eles da se alimentam.

  • Substituir condições ou limpá-las do feed.

gcloud

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

Forneça os valores a seguir:

  • SCOPE: use um destes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto em que o feed será atualizado.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta em que o feed será atualizado.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização em que o feed será atualizado.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acessar o console do Google Cloud

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • FEED_ID: identificador exclusivo do feed de recursos.
  • BILLING_PROJECT_ID: opcional. O ID do projeto que o o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar tópico do Pub/Sub. Saiba mais sobre como configurar o projeto de faturamento.

  • TOPIC_PROJECT_ID: o ID do projeto em que o do Pub/Sub.
  • TOPIC_ID: o ID do tópico do Pub/Sub em que as notificações serão publicadas.
  • Pelo menos uma das seguintes definições de recursos:
  • CONTENT_TYPE: opcional. O tipo de conteúdo dos metadados que você quer recuperar. Quando --content-type não é especificado, apenas informações básicas são retornadas, como nomes de recursos, a última vez que os recursos foram atualizados e a quais projetos, pastas e organizações eles pertencem.
  • RELATIONSHIP_TYPE_#: opcional. Disponível apenas para o Security Command Center Nível Premium e Enterprise assinantes. Uma lista separada por vírgulas de tipos de relações de recursos que você quer recuperar. Você precisa definir CONTENT_TYPE como RELATIONSHIP para que isso funcione.
  • Se você adicionar uma condição de feed opcional, inclua os seguintes detalhes no comando:
    • CONDITION_TITLE: um título a ser atribuído à condição do feed.
    • CONDITION_DESCRIPTION: uma descrição para atribuir ao feed. condição.
    • CONDITION_EXPRESSION: a expressão de condição a ser aplicada ao feed.

Consulte a referência da CLI do gcloud para conferir todas as opções.

Exemplo

Execute o comando a seguir para atualizar o tópico my-topic do Pub/Sub na my-project projeto. Essa solicitação remove todos os nomes de recursos do monitoramento e adiciona o tipo de recurso gkemulticloud.googleapis.com/AttachedCluster.

gcloud asset feeds update my-feed \
    --project=my-project \
    --pubsub-topic=projects/my-project/topics/my-topic \
    --clear-asset-names \
    --add-asset-types=gkemulticloud.googleapis.com/AttachedCluster

Exemplo de resposta

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

Para atualizar os atributos de um feed, você precisa especificar o caminho do atributo no update_mask e o valor dele.

REST

Método HTTP e URL:

PATCH https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Solicitar corpo JSON:

{
  "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"
  },
  "update_mask": {
    "paths": [
      "feed_output_config.pubsub_destination.topic",
      ATTRIBUTE_PATH_1,
      ATTRIBUTE_PATH_2,
      ...
    ]
  }
}

Forneça os valores a seguir:

  • SCOPE_PATH: use um destes valores:

    Os valores permitidos são:

    • projects/PROJECT_ID, em que PROJECT_ID é o ID do projeto em que o feed será atualizado.
    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto para atualizar o feed.

      Como encontrar um número de projeto do Google Cloud

      Console do Google Cloud

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

      1. Acesse a página de Boas-vindas no console do Google Cloud.

        Acessar a página de boas-vindas

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, vá para página Gerenciar recursos e filtrar a lista usando o nome desse projeto.

      CLI da gcloud

      Recupere um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta em que o feed será atualizado.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização para atualizar o feed.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto que o o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar tópico do Pub/Sub. Leia mais sobre como configurar o projeto de faturamento.

  • FEED_ID: um identificador exclusivo do feed de recursos.
  • Pelo menos uma das seguintes definições de recursos:
  • CONTENT_TYPE: opcional. O tipo de conteúdo dos metadados que você quer recuperar. Quando contentType não é especificado, apenas informações básicas são retornadas, como nomes de recursos, na última vez que o recursos foram atualizados e a quais projetos, pastas e organizações eles pertencem.
  • RELATIONSHIP_TYPE_#: opcional. Disponível apenas para assinantes do nível Premium e Enterprise do Security Command Center. Uma lista separada por vírgulas de tipos de relação de recurso que você quer recuperar. Você precisa definir CONTENT_TYPE como RELATIONSHIP para que isso funcione.
  • TOPIC_PROJECT_ID: o ID do projeto em que o do Pub/Sub.
  • TOPIC_ID: o ID do tópico Pub/Sub para publicar notificações.
  • Se você adicionar uma condição de feed opcional, inclua os seguintes detalhes no seu comando:
    • CONDITION_TITLE: um título a ser atribuído à condição do feed.
    • CONDITION_DESCRIPTION: uma descrição para atribuir ao feed. condição.
    • CONDITION_EXPRESSION: a expressão de condição a ser aplicada ao feed.

Consulte a referência da REST para ver todas .

Exemplos de comando

Execute um dos comandos abaixo para atualizar o tópico do Pub/Sub my-topic no projeto my-project. Essa solicitação remove todos os nomes de recursos do monitoramento e adiciona o tipo de recurso gkemulticloud.googleapis.com/AttachedCluster.

curl (Linux, macOS ou Cloud Shell)

curl -X PATCH \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d '{
            "feed": {
              "assetNames": [],
              "assetTypes": [
                "gkemulticloud.googleapis.com/AttachedCluster"
              ],
              "feedOutputConfig": {
                "pubsubDestination": {
                  "topic": "projects/my-project/topics/my-topic"
                }
              }
            },
            "update_mask": {
              "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"]
            }
          }' \
     https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


$body = @"
{
  "feed": {
    "assetNames": [],
    "assetTypes": [
      "gkemulticloud.googleapis.com/AttachedCluster"
    ],
    "feedOutputConfig": {
      "pubsubDestination": {
        "topic": "projects/my-project/topics/my-topic"
      }
    }
  },
  "update_mask": {
    "paths": ["feed_output_config.pubsub_destination.topic", "asset_names", "asset_types"]
  }
}
"@

Invoke-WebRequest `
  -Method PATCH `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $body `
  -Uri "https://cloudasset.googleapis.com/v1/projects/my-project/feeds/my-feed" | Select-Object -Expand Content

Exemplo de resposta

{
  "feeds": [
    {
      "name": "projects/000000000000/feeds/my-feed",
      "assetTypes": [
        "bigquery.googleapis.com/Table",
        "gkemulticloud.googleapis.com/AttachedCluster"
      ],
      "contentType": "RESOURCE",
      "feedOutputConfig": {
        "pubsubDestination": {
          "topic": "projects/my-project/topics/my-topic"
        }
      }
    }
  ]
}

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


// Sample update-feed update feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
	field_mask "google.golang.org/genproto/protobuf/field_mask"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	feedName := fmt.Sprintf("projects/%s/feeds/%s", projectNumber, *feedID)
	topic := fmt.Sprintf("projects/%s/topics/%s", projectID, "TOPIC_TO_UPDATE")

	req := &assetpb.UpdateFeedRequest{
		Feed: &assetpb.Feed{
			Name: feedName,
			FeedOutputConfig: &assetpb.FeedOutputConfig{
				Destination: &assetpb.FeedOutputConfig_PubsubDestination{
					PubsubDestination: &assetpb.PubsubDestination{
						Topic: topic,
					},
				},
			},
		},
		UpdateMask: &field_mask.FieldMask{
			Paths: []string{"feed_output_config.pubsub_destination.topic"},
		},
	}
	response, err := client.UpdateFeed(ctx, req)
	if err != nil {
		log.Fatalf("client.UpdateFeed: %v", err)
	}
	fmt.Print(response)
}

Java

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.asset.v1.AssetServiceClient;
import com.google.cloud.asset.v1.Feed;
import com.google.cloud.asset.v1.FeedOutputConfig;
import com.google.cloud.asset.v1.PubsubDestination;
import com.google.cloud.asset.v1.UpdateFeedRequest;
import com.google.protobuf.FieldMask;

public class UpdateFeedExample {

  // Update a feed
  public static void updateFeed(String feedName, String topic) throws Exception {
    // String feedName = "MY_FEED_NAME"
    // String topic = "projects/[PROJECT_ID]/topics/[TOPIC_NAME]"
    Feed feed =
        Feed.newBuilder()
            .setName(feedName)
            .setFeedOutputConfig(
                FeedOutputConfig.newBuilder()
                    .setPubsubDestination(PubsubDestination.newBuilder().setTopic(topic).build())
                    .build())
            .build();
    UpdateFeedRequest request =
        UpdateFeedRequest.newBuilder()
            .setFeed(feed)
            .setUpdateMask(
                FieldMask.newBuilder()
                    .addPaths("feed_output_config.pubsub_destination.topic")
                    .build())
            .build();
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      Feed response = client.updateFeed(request);
      System.out.println("Feed updated successfully: " + response.getName());
    } catch (Exception e) {
      System.out.println("Error during UpdateFeed: \n" + e.toString());
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Inventário de recursos do Cloud, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();
// example inputs:
// const fullQueryName = 'folders/<FOLDER_NUMBER>/savedQueries/<QUERY_ID>';
// const description = 'a new description';
async function updateSavedQuery() {
  const request = {
    savedQuery: {
      name: fullQueryName,
      description: description,
    },
    updateMask: {
      paths: ['description'],
    },
  };

  // Handle the operation using the promise pattern.
  const [query] = await client.updateSavedQuery(request);
  // Do things with with the response.
  console.log('Query name:', query.name);
  console.log('Query description:', query.description);
  console.log('Created time:', query.createTime);
  console.log('Updated time:', query.lastUpdateTime);
  console.log('Query type:', query.content.queryContent);
  console.log('Query content:', JSON.stringify(query.content, null, 4));

Python

Para aprender a instalar e usar a biblioteca de cliente do Inventário de recursos do Cloud, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

from google.cloud import asset_v1
from google.protobuf import field_mask_pb2

# TODO feed_name = 'Feed Name you want to update'
# TODO topic = "Topic name you want to update with"

client = asset_v1.AssetServiceClient()
feed = asset_v1.Feed()
feed.name = feed_name
feed.feed_output_config.pubsub_destination.topic = topic
update_mask = field_mask_pb2.FieldMask()
# In this example, we update topic of the feed
update_mask.paths.append("feed_output_config.pubsub_destination.topic")
response = client.update_feed(request={"feed": feed, "update_mask": update_mask})
print(f"updated_feed: {response}")

Excluir feeds

Se você não quiser mais receber notificações sobre mudanças nos recursos, escolha uma das opções a seguir solicitações para excluir um feed.

gcloud

gcloud asset feeds delete FEED_ID \
    --SCOPE \
    --billing-project=BILLING_PROJECT_ID

Forneça os valores a seguir:

  • SCOPE: use um destes valores:

    • project=PROJECT_ID, em que PROJECT_ID é o ID do projeto em que o feed está.
    • folder=FOLDER_ID, em que FOLDER_ID é o ID da pasta em que o feed está.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acessar o console do Google Cloud

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para fazer isso, execute o comando a seguir usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organization=ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização em que o feed está.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acessar o console do Google Cloud

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto que o o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar tópico do Pub/Sub. Saiba mais sobre como configurar o projeto de faturamento.

Consulte a referência da CLI gcloud para todas as opções.

Exemplo de resposta

Uma exclusão bem-sucedida não retorna nenhuma resposta.

REST

Método HTTP e URL:

DELETE https://cloudasset.googleapis.com/v1/SCOPE_PATH/feeds/FEED_ID

Cabeçalhos:

X-Goog-User-Project: BILLING_PROJECT_ID

Forneça os valores a seguir:

  • SCOPE_PATH: use um destes valores:

    Os valores permitidos são:

    • projects/PROJECT_NUMBER, em que PROJECT_NUMBER é o número do projeto em que o feed está.

      Como encontrar um número de projeto do Google Cloud

      Console do Google Cloud

      Para encontrar um número de projeto do Google Cloud, siga estas etapas:

      1. Acesse a página de Boas-vindas no console do Google Cloud.

        Acessar a página de boas-vindas

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista e pesquise o nome do projeto. O nome, o número e o ID do projeto são mostrados perto do título Welcome.

        Até 4.000 recursos são exibidos. Se você não encontrar o projeto que está procurando, acesse a página Gerenciar recursos e filtre a lista usando o nome dele.

      CLI da gcloud

      Recupere um número de projeto do Google Cloud com o seguinte comando:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    • folders/FOLDER_ID, em que FOLDER_ID é o ID da pasta em que o feed está.

      Como encontrar o ID de uma pasta do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma pasta do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acessar o console do Google Cloud

      2. Clique na caixa de lista switcher na barra de menu.
      3. Selecione sua organização na caixa de lista.
      4. Pesquise o nome da pasta. O ID da pasta é mostrado ao lado do nome dela.

      CLI da gcloud

      É possível recuperar o ID de uma pasta do Google Cloud que está no nível da organização com o seguinte comando:

      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)"

      Em que TOP_LEVEL_FOLDER_NAME é uma correspondência de string parcial ou completa para o nome da pasta. Remova a flag --format para conferir mais informações sobre as pastas encontradas.

      O comando anterior não retorna os IDs das subpastas dentro das pastas. Para isso, execute o seguinte comando usando o ID de uma pasta de nível superior:

      gcloud resource-manager folders list --folder=FOLDER_ID
    • organizations/ORGANIZATION_ID, em que ORGANIZATION_ID é o ID da organização onde o feed está.

      Como encontrar o ID de uma organização do Google Cloud

      Console do Google Cloud

      Para encontrar o ID de uma organização do Google Cloud, siga estas etapas:

      1. Acesse o console do Google Cloud.

        Acesse o console do Google Cloud.

      2. Clique na caixa de listagem do seletor na barra de menus.
      3. Selecione sua organização na caixa de lista.
      4. Selecione a guia Todos. O ID é mostrado ao lado do nome da organização.

      CLI da gcloud

      Recupere o ID de uma organização do Google Cloud com o seguinte comando:

      gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
  • BILLING_PROJECT_ID: o ID do projeto que o o agente de serviço padrão do Inventário de recursos do Cloud tem permissões para gerenciar tópico do Pub/Sub. Leia mais sobre como configurar o projeto de faturamento.

Consulte a referência REST para conferir todas as opções.

Exemplos de comando

Execute um dos seguintes comandos para excluir um feed específico.

curl (Linux, macOS ou Cloud Shell)

curl -X DELETE \
     -H "X-Goog-User-Project: BILLING_PROJECT_ID" \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed

PowerShell (Windows)

$cred = gcloud auth print-access-token

$headers = @{ 
  "X-Goog-User-Project" = "BILLING_PROJECT_ID";
  "Authorization" = "Bearer $cred"
}


Invoke-WebRequest `
  -Method DELETE `
  -Headers $headers `
  -Uri "https://cloudasset.googleapis.com/v1/projects/000000000000/feeds/my-feed" | Select-Object -Expand Content

Exemplo de resposta

{}

Go

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


// Sample delete-feed delete feed.
package main

import (
	"context"
	"flag"
	"fmt"
	"log"
	"os"
	"strconv"

	asset "cloud.google.com/go/asset/apiv1"
	"cloud.google.com/go/asset/apiv1/assetpb"
	cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
)

// Command-line flags.
var (
	feedID = flag.String("feed_id", "YOUR_FEED_ID", "Identifier of Feed.")
)

func main() {
	flag.Parse()
	ctx := context.Background()
	client, err := asset.NewClient(ctx)
	if err != nil {
		log.Fatalf("asset.NewClient: %v", err)
	}
	defer client.Close()

	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	cloudresourcemanagerClient, err := cloudresourcemanager.NewService(ctx)
	if err != nil {
		log.Fatalf("cloudresourcemanager.NewService: %v", err)
	}

	project, err := cloudresourcemanagerClient.Projects.Get(projectID).Do()
	if err != nil {
		log.Fatalf("cloudresourcemanagerClient.Projects.Get.Do: %v", err)
	}
	projectNumber := strconv.FormatInt(project.ProjectNumber, 10)
	feedName := fmt.Sprintf("projects/%s/feeds/%s", projectNumber, *feedID)
	req := &assetpb.DeleteFeedRequest{
		Name: feedName,
	}
	if err = client.DeleteFeed(ctx, req); err != nil {
		log.Fatalf("client.DeleteFeed: %v", err)
	}
	fmt.Print("Deleted Feed")
}

Java

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

import com.google.cloud.asset.v1.AssetServiceClient;

public class DeleteFeedExample {

  // Delete a feed with full feed name
  public static void deleteFeed(String feedName) throws Exception {
    // String feedName = "MY_FEED_NAME"

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (AssetServiceClient client = AssetServiceClient.create()) {
      client.deleteFeed(feedName);
      System.out.println("Feed deleted");
    } catch (Exception e) {
      System.out.println("Error during DeleteFeed: \n" + e.toString());
    }
  }
}

Node.js

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

const util = require('util');
const {AssetServiceClient} = require('@google-cloud/asset');

const client = new AssetServiceClient();

async function deleteFeed() {
  const request = {
    name: feedName,
  };

  // Handle the operation using the promise pattern.
  const result = await client.deleteFeed(request);
  // Do things with with the response.
  console.log(util.inspect(result, {depth: null}));

Python

Para saber como instalar e usar a biblioteca de cliente do Cloud Asset Inventory, consulte Bibliotecas de cliente do Cloud Asset Inventory.

Para autenticar no Cloud Asset Inventory, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

from google.cloud import asset_v1

# TODO feed_name = 'Feed name you want to delete'

client = asset_v1.AssetServiceClient()
client.delete_feed(request={"name": feed_name})
print("deleted_feed")

Condições do feed

Para visualizar apenas determinados tipos de mudanças de um determinado recurso, adicione uma condição ao seu feed. As condições são escritas em Common Expression Language (CEL).

O suporte a condições é limitado. Em alguns casos, criar ou atualizar feeds com condições pode resultar em um atraso.

Limitações

  • As expressões de condição têm um limite de 3.000 caracteres.

  • A maioria dos nomes de variáveis em expressões de condição é representada em letras minúsculas com sublinhados entre cada palavra. Por exemplo, example_variable

    A exceção são os nomes das variáveis dos subcampos de data no Recurso objeto. Eles não têm separadores de palavras, e o primeiro caractere de cada palavra após a primeira ser em maiúscula. Por exemplo, exampleVariable.

  • Algumas validações em expressões de condição são realizadas durante a criação do feed. ou a hora de atualização do feed. No entanto, essas validações não são abrangentes, especialmente para condições definidas no temporal_asset.asset.resource.data , que tem um tipo dinâmico. Sempre que possível, filtre seu feed usando os parâmetros apropriados da CLI gcloud ou da API REST.

  • As notificações não são enviadas se ocorrerem erros durante o tempo de avaliação, mas os erros são registrados.

  • Para tipos dinâmicos em temporal_asset.asset.resource.data, as condições especificadas em campos ausentes acionam erros de execução, e as notificações não são publicadas. Por exemplo, para a condição temporal_asset.asset.resource.data.name != "my_name", se o campo name estiver ausente em uma atualização, a avaliação falhará e você não receberá notificações. Se a condição só funcionar na presença de determinados campos, Adicionar uma verificação de existência à condição para garantir que ela seja avaliada adequadamente.

  • Os tipos de tipos enumerados estáticos podem ser representados como nomes de caminho totalmente qualificados ou números inteiros brutos. Por exemplo, as expressões a seguir são válidas para prior_asset_state:

    temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST
    

    e

    temporal_asset.prior_asset_state == 3
    

    Os tipos de enumeração dinâmica em temporal_asset.asset.resource.data são representados como strings brutas. Por exemplo, a expressão a seguir é válida para o tipo de recurso cloudresourcemanager.googleapis.com/Project:

    temporal_asset.asset.resource.data.lifecycleState == "ACTIVE"
    

Criar uma expressão de condição com CEL

Em uma condição de feed, Common Expression Language (CEL). para tomar decisões booleanas com base nos dados do atributo. Uma expressão de condição consiste em uma ou mais instruções unidas usando operadores lógicos. Cada expressa uma regra de controle baseada em atributo que se aplica à TemporalAsset para determinar se uma notificação será enviada.

Os seguintes recursos de CEL são os mais importantes para as condições do feed:

  • Variáveis: as condições usam variáveis para expressar um determinado atributo, como temporal_asset.deleted (Boolean) ou temporal_asset.asset.name (String). Essas variáveis são preenchidas com valores com base no contexto no ambiente de execução.

  • Operadores: todos os tipos de dados, como String, são compatíveis com um conjunto de operadores que podem ser usados para criar uma expressão lógica. Geralmente, os operadores são usados para comparar o valor contido em uma variável com um valor literal, como temporal_asset.asset.name == "//cloudresourcemanager.googleapis.com/projects/12345". Neste exemplo, se o valor de entrada de temporal_asset.asset.name for //cloudresourcemanager.googleapis.com/projects/12345, a expressão avalia como true.

  • Funções: uma função é um operador composto para tipos de dados compatíveis com operações mais complexas. Em expressões condicionais, existem funções predefinidas que podem ser usadas em conjunto com um determinado tipo de dados. Por exemplo, temporal_asset.asset.name.contains("keyword") usa uma função chamada contains para verificar se o valor de temporal_asset.asset.name contém "keyword". Nesse caso, ele é avaliado como true.

  • Operadores lógicos: as condições são compatíveis com operadores lógicos que podem ser usados para criar expressões lógicas complexas a partir de instruções de expressão básicas: && (AND) e || (OR). Esses operadores lógicos possibilitam o uso de muitas variáveis de entrada em uma expressão condicional. Por exemplo: temporal_asset.deleted && temporal_asset.window.start_time.getFullYear() > 2020 une duas instruções básicas e exige que ambas sejam atendidas para produzir um resultado de avaliação true.

Para mais informações sobre os recursos da CEL, consulte a definição de linguagem.

Como usar variáveis de condição

As variáveis de condição permitem que você crie condições em atributos diferentes. As variáveis de condição compatíveis são:

  • temporal_asset: a mudança mais recente de recurso no formato TemporalAsset. Se a condição for avaliada como verdadeira, o TemporalAsset será enviado ao destino configurado.

Exemplo de expressões condicionais

A expressão de condição a seguir envia notificações sobre eventos de criação:

temporal_asset.deleted == false &&
temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST

A expressão de condição a seguir envia notificações para os recursos que estão localizados nas pastas 12345 e 23456:

"folders/12345" in temporal_asset.asset.ancestors ||
"folders/23456" in temporal_asset.asset.ancestors

A expressão de condição a seguir envia notificações quando novas regras permitidas são adicionadas aos firewalls, supondo que o tipo de recurso já esteja definido como compute.googleapis.com/Firewall no feed:

size(temporal_asset.asset.resource.data.allowed) >
size(temporal_asset.prior_asset.resource.data.allowed)

A expressão de condição a seguir envia notificações para instâncias de VM com o tipo de máquina n1-standard-1, supondo que o tipo de recurso já esteja definido como compute.googleapis.com/Instance no feed:

temporal_asset.asset.resource.data.machineType.endsWith('/machineTypes/n1-standard-1')

A expressão de condição a seguir envia notificações para buckets de armazenamento com Qualquer política do IAM para allUsers, supondo que o tipo de recurso esteja definido como storage.googleapis.com/Bucket, e o tipo de conteúdo como IAM_POLICY no feed:

temporal_asset.asset.iam_policy.bindings.exists(b, b.members.exists(m, m == "allUsers"))

A expressão de condição a seguir envia uma notificação quando um bucket de armazenamento com a chave test no rótulo é excluído:

temporal_asset.deleted == true && temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.PRESENT && "test" in temporal_asset.prior_asset.resource.data.labels

Solução de problemas

Se você não estiver recebendo notificações de atualizações de recursos ou de políticas do IAM, siga as etapas abaixo para resolver o problema:

  • Verifique se os metadados foram alterados nos seus recursos. O feed em tempo real só envia atualizações quando os metadados dos arquivos resource_type for alterado. Operações como upload de um novo arquivo para o bucket do Cloud Storage não aciona uma alteração nos metadados.

  • Verifique se os recursos correspondem a um dos nomes ou tipos de recurso especificados do feed.

  • Para exclusões de projetos, lembre-se de que, ao encerrar um projeto, você tem 30 dias para desfazer a operação. Por isso, o campo deleted nos metadados do recurso não é definido até que o projeto seja excluído permanentemente. Para monitorar projetos com exclusão pendente, poderá definir condition no campo lifecycleState do projeto. Para exemplo: temporal_asset.asset.resource.data.lifecycleState == "DELETE_REQUESTED":

  • Verifique os registros para ver se há erros ao publicar atualizações. ao seu tópico.

Cloud Logging

Quando os feeds em tempo real não enviam recursos ou atualizações de política do IAM pelo Pub/Sub, o Inventário de recursos do Cloud registra o status de erro e a mensagem no Logging. O Logging é ativado por padrão, e pertence à observabilidade do Google Cloud. Saiba mais sobre Preços do Google Cloud Observability.

Como visualizar registros de feeds em tempo real

O registro do feed em tempo real é indexado por um tópico do Pub/Sub. Para mostrar todos registros:

  1. Acesse a página do Explorador de registros no console do Google Cloud:

    Acessar o Explorador de registros

  2. Clique na lista Recurso perto de Pesquisar todos os campos. caixa

  3. Pesquise Cloud Pub/Sub Topic e clique no tópico do Cloud Pub/Sub tipo de recurso.

  4. Clique no ID do tema que você quer consultar.

  5. Clique em Aplicar.

A codificação UTF-8 é aplicada aos campos de registro. Os caracteres que não forem UTF-8 serão substituídos por pontos de interrogação.

Informações registradas

As entradas de registro do feed em tempo real contêm os seguintes tipos de informações:

  • Informações gerais exibidas na maioria dos registros do Google Cloud, como gravidade, ID do projeto, número do projeto ou carimbo de data/hora;

  • Campos de registro do feed em tempo real no jsonPayload, que contém o nome do recurso, o feed configuração de saída e status de erro ao publicar recursos ou atualizações nas políticas.

A tabela a seguir mostra que tipo de informação cada campo contém.

Campo Tipo e descrição
name

string

Nome completo do feed. O formato é um dos seguintes:

  • projects/PROJECT_ID/feeds/FEED_ID
  • folders/FOLDER_ID/feeds/FEED_ID
  • organizations/ORGANIZATION_ID/feeds/FEED_ID
asset_name

string

Nome completo do recurso para receber atualizações. Exemplo:

//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1

Consulte Nomes de recursos para mais informações.

condition

Expr

Condição do feed que determina se uma atualização de recurso será publicada.

error_status

Status

Status quando há falha na publicação de atualizações de recursos em um feed.

feed_output_config

FeedOutputConfig

Configuração de saída do feed que define o local das atualizações do recurso foi publicado.