Receber um evento dos Registros de auditoria do Cloud

Neste tutorial, mostramos como implantar um serviço autenticado do Cloud Run que recebe eventos do Cloud Storage usando os registros de auditoria do Cloud. Use este tutorial para implantar cargas de trabalho de produção. O gatilho Eventarc filtra eventos com base nas entradas de registros de auditoria do Cloud. Para mais informações, consulte Determinar filtros de evento para registros de auditoria do Cloud.

É possível concluir este tutorial usando o console Google Cloud ou a Google Cloud CLI.

Criar um repositório padrão do Artifact Registry

Crie um repositório padrão do Artifact Registry para armazenar a imagem do contêiner do Docker.

Console

  1. No console do Google Cloud , acesse a página Repositórios.

    Acessar repositórios

  2. Clique em Criar repositório.
  3. Configurar seu repositório:
    1. Insira um nome exclusivo.
    2. Em Formato, escolha Docker.
    3. Em Modo, escolha Padrão.
    4. Em Tipo de local, escolha Região.
    5. Na lista Região, selecione us-central1 (Iowa).
  4. Aceite todos os padrões e clique em Criar.

gcloud

gcloud artifacts repositories create REPOSITORY \
    --repository-format=docker \
    --location=$REGION

Substitua REPOSITORY por um nome exclusivo para o repositório do Artifact Registry.

crie um bucket do Cloud Storage

Este tutorial usa o Cloud Storage como origem do evento. Para criar um bucket de armazenamento:

Console

  1. No console Google Cloud , acesse a página Buckets.

    Acessar buckets

  2. Clique em Criar bucket.
  3. Insira as informações do bucket e clique em Continuar para concluir cada etapa:
    1. Insira um nome exclusivo. Por exemplo, eventarcbucket.
    2. Selecione Região como o Tipo de local.
    3. Selecione us-central1 (Iowa) como o Local.
    4. Selecione Padrão na classe de armazenamento padrão.
    5. Selecione Uniforme para Controle de acesso.
  4. Clique em Criar.

gcloud

gcloud storage buckets create gs://events-tutorial-PROJECT_ID/ --location=$REGION

Depois que a origem do evento é criada, implante o serviço de receptor de eventos no Cloud Run.

Implantar o serviço de receptor de eventos no Cloud Run

Implante um serviço do Cloud Run que recebe e registra eventos. Para implantar o serviço de receptor de eventos de amostra:

Console

  1. Para clonar o repositório de exemplo na sua conta do GitHub, siga estas instruções:
  2. Go

    1. No GitHub, acesse GoogleCloudPlatform/golang-samples.
    2. Clique em Bifurcar.
    3. Captura de tela do botão de divisão.
    4. Se solicitado, selecione o local em que você quer clonar o repositório.

    Java

    1. No GitHub, acesse GoogleCloudPlatform/java-docs-samples.
    2. Clique em Bifurcar.
    3. Captura de tela do botão de divisão.
    4. Se solicitado, selecione o local em que você quer clonar o repositório.

    .NET

    1. No GitHub, acesse GoogleCloudPlatform/dotnet-docs-samples.
    2. Clique em Bifurcar.
    3. Captura de tela do botão de divisão.
    4. Se solicitado, selecione o local em que você quer clonar o repositório.

    Node.js

    1. No GitHub, acesse GoogleCloudPlatform/nodejs-docs-samples.
    2. Clique em Bifurcar.
    3. Captura de tela do botão de divisão.
    4. Se solicitado, selecione o local em que você quer clonar o repositório.

    Python

    1. No GitHub, acesse GoogleCloudPlatform/python-docs-samples.
    2. Clique em Bifurcar.
    3. Captura de tela do botão de divisão.
    4. Se solicitado, selecione o local em que você quer clonar o repositório.
  3. No console do Google Cloud , acesse a página Serviços.
  4. Acessar Serviços

  5. Clique em Criar serviço para exibir o formulário Criar serviço.
  6. Selecione Implantar continuamente a partir de um repositório.

    As mudanças no repositório do GitHub são automaticamente integradas às imagens de contêiner no Artifact Registry e implantadas no Cloud Run.

  7. Clique em Configurar com o Cloud Build para abrir o formulário Configurar com o Cloud Build.
    1. Se solicitado, ative a API Cloud Build e a API Artifact Analysis.
    2. Selecione GitHub como Repositório do repositório.
    3. Se solicitado, clique em Instalar o Google Cloud Build.
    4. Selecione o repositório do GitHub que você bifurcou como Repositório.
    5. Clique em Próxima.
    6. No campo Ramificação, digite ^main$.
    7. Selecione Dockerfile como o Tipo de versão e forneça o local de origem do Dockerfile:
      • eventarc/audit-storage/Dockerfile

        ou

      • eventarc/audit_storage/Dockerfile(Go)
    8. Clique em Salvar.
  8. No formulário Criar serviço, digite um nome de serviço. Por exemplo, helloworld-events.
  9. Selecione us-central1(Iowa) como a Região em que o serviço estará localizado.
  10. Selecione qualquer uma das opções de Entrada com base no tráfego de entrada que você quer permitir no serviço do Cloud Run.
  11. Selecione Exigir autenticação.
  12. Clique em Criar.

gcloud

  1. Clone o repositório do GitHub:

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage

    .NET

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
  2. Crie o contêiner e faça upload dele para o Cloud Build:
    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    
  3. Implante a imagem do contêiner no Cloud Run:
    gcloud run deploy $SERVICE_NAME \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    

    No prompt para permitir invocações não autenticadas, digite n.

    Quando a implantação for bem-sucedida, a linha de comando exibirá o URL de serviço.

Agora que você implantou o serviço de receptor de eventos chamado helloworld-events no Cloud Run, configure o gatilho.

Criar um gatilho do Eventarc

O gatilho do Eventarc envia eventos do bucket do Cloud Storage para o serviço helloworld-events do Cloud Run.

Console

  1. No console Google Cloud , acesse a página Gatilhos.

    Acessar gatilhos

  2. Clique em Criar gatilho.
  3. Digite um Nome de acionador.

    Esse é o ID do gatilho e precisa começar com uma letra. Ele pode conter até 63 letras minúsculas, números ou hifens.

  4. Selecione um Tipo de gatilho:
    • Próprio: filtra eventos enviados de provedores do Google Cloud(diretamente ou por entradas de Registros de auditoria do Cloud) ou provedores que usam mensagens do Pub/Sub.
    • Terceiros: filtra eventos enviados de provedores de terceiros.
  5. Na lista Provedor de eventos, selecione Cloud Storage como origem dos eventos.
  6. Na lista de tipo de Evento, selecione storage.objects.create.
  7. Na lista Região, selecione us-central1 como a região da qual você quer receber eventos.
  8. Selecione a conta de serviço que você criou. Exemplo, SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com.
  9. Na lista Destino do evento, selecione Cloud Run.
  10. Na lista Selecione um serviço do Cloud Run, selecione helloworld-events.
  11. Clique em Criar.
  12. Também é possível criar um gatilho do Eventarc usando a página do console do Cloud Run.

gcloud

  1. Crie um gatilho que filtre eventos do Cloud Storage e que use a conta de serviço que você criou:
    gcloud eventarc triggers create events-tutorial-trigger \
        --destination-run-service=$SERVICE_NAME \
        --destination-run-region=$REGION \
        --event-filters="type=google.cloud.audit.log.v1.written" \
        --event-filters="serviceName=storage.googleapis.com" \
        --event-filters="methodName=storage.objects.create" \
        --service-account=sample-service-account@PROJECT_ID.iam.gserviceaccount.com
    Substitua PROJECT_ID pelo ID do projeto Google Cloud.

    Em que:

    • type: especifica que os registros de auditoria são criados quando os critérios de filtro do acionador são atendidos.
    • serviceName: o serviço que grava o registro de auditoria, que é o Cloud Storage.
    • methodName: a operação que está sendo auditada, que é storage.objects.create.
    Isso gera um gatilho chamado events-tutorial-trigger.
  2. Para confirmar se events-tutorial-trigger foi criado, execute:
    gcloud eventarc triggers list --location=$REGION
  3. O gatilho, events-tutorial-trigger, está listado com um destino de helloworld-events.

Gerar e visualizar um evento

  1. Para gerar um evento:

    Console

    1. Crie um arquivo de texto com o nome random.txt e o texto "Hello World".
    2. No console Google Cloud , acesse a página Buckets.

      Acessar buckets

    3. Selecione o bucket de armazenamento que você criou.
    4. Na guia Objetos, clique em Fazer upload de arquivos e faça o upload do arquivo random.txt.

    gcloud

    Faça upload de um arquivo de texto para o Cloud Storage:

    echo "Hello World" > random.txt
    gcloud storage cp random.txt gs://events-tutorial-PROJECT_ID/random.txt
  2. Para visualizar a entrada de registro:
  3. Console

    1. No console do Google Cloud , acesse a página Serviços.

      Acessar Serviços

    2. Na lista de serviços, clique no nome do serviço que você criou para acessar a página Detalhes do serviço.
    3. Clique na guia Registros para receber os registros de solicitação e contêiner para todas as revisões desse serviço. É possível filtrar por nível de gravidade de registro.
    4. Procure uma entrada de registro semelhante a esta:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      em que BUCKET_NAME é o nome do bucket do Cloud Storage.

    gcloud

    1. gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
    2. Procure uma entrada de registro semelhante a esta:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      em que BUCKET_NAME é o nome do bucket do Cloud Storage.

Você implantou com sucesso um serviço de receptor de eventos no Cloud Run, criou um gatilho do Eventarc, gerou um evento a partir do Cloud Storage e o visualizou nos registros do Cloud Run.