Como receber um evento dos registros de auditoria do Cloud

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

É possível concluir este tutorial usando o Console do Google Cloud ou a ferramenta de linha de comando gcloud.

Objetivos

Com este tutorial, você vai:

  1. Criar um bucket do Cloud Storage para ser a origem do evento.

  2. Implantar um serviço de receptor de eventos no Cloud Run

  3. Criar um gatilho do Eventarc.

  4. Gerar um evento por meio do upload de um arquivo para o bucket do Cloud Storage e visualizá-lo nos registros do Cloud Run.

Custos

Neste tutorial, há componentes faturáveis do Google Cloud, entre eles:

Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto.

Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Ative as APIs Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.

    Ative as APIs

  5. Ao usar a ferramenta gcloud:
    1. Atualize os componentes gcloud:
      gcloud components update
    2. Faça login usando sua conta:

      gcloud auth login
      

    3. Defina as variáveis de configuração usadas neste tutorial:

      gcloud config set project PROJECT_ID
      gcloud config set run/region us-central1
      gcloud config set run/platform managed
      gcloud config set eventarc/location us-central1
      

    4. Ative os tipos de registro de auditoria do Cloud: Leitura de administradores, Leitura de dados e Gravação de dados no Google Cloud Storage:

      Acessar o console de registros de auditoria do Cloud

    5. Conceda o papel eventarc.eventReceiver à conta de serviço do Compute Engine:

      export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"
      
      gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
          --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
          --role='roles/eventarc.eventReceiver'
      

    6. Faça o download e instale a ferramenta de gerenciamento de código-fonte Git.

Crie um bucket do Cloud Storage

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

Console

  1. Acesse o Cloud Storage no Console do Cloud.

    Acesse o Cloud Storage

  2. Clique em Criar bucket.

    Novo bucket

  3. Insira as informações do bucket e clique em Continuar para concluir cada etapa:

    • Insira um nome exclusivo. Por exemplo, eventarcbucket.
    • Selecione Região como o Tipo de local.
    • Selecione us-central1 (Iowa) como o Local.
    • Selecione Padrão na classe de armazenamento padrão.
    • Selecione Uniforme para Controle de acesso.
  4. Clique em Criar.

Linha de comando

gsutil mb -l us-central1 gs://events-tutorial-$(gcloud config get-value project)/

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

Como 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:

    Go

    1. No GitHub, acesse GoogleCloudPlatform/golang-samples.

    2. Clique em Bifurcar.

      Captura de tela do botão de divisão

    3. 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.

      Captura de tela do botão de divisão

    3. 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.

      Captura de tela do botão de divisão

    3. 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.

      Captura de tela do botão de divisão

    3. 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.

      Captura de tela do botão de divisão

    3. Se solicitado, selecione o local em que você quer clonar o repositório.

  2. Acesse o Cloud Run no Console do Cloud.

    Acesse o Cloud Run

  3. Clique em Criar serviço para exibir o formulário Criar serviço.

    create-service-page

  4. Selecione Cloud Run.

  5. Selecione us-central1(Iowa) como a Região em que o serviço estará localizado.

  6. Digite o nome do serviço desejado. Por exemplo, helloworld-events

  7. Clique em Next.

  8. Selecione Implantar continuamente novas revisões de um repositório de código-fonte.

  9. Clique em Configurar com o Cloud Build para abrir o formulário Configurar com o Cloud Build.

    Configurar com a página do Cloud Build

    No formulário Configurar com o Cloud Build:

    1. Se solicitado, ative a API Cloud Build e a API Container 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 Next.

    6. No campo Ramificação, digite ^master$.

    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 Save.

  10. No formulário Criar serviço, clique em Avançar.

  11. Na seção Configure como este serviço é acionado:

    • 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.

    • Selecione Permitir invocações não autenticadas.

  12. Opcionalmente, clique em Adicionar gatilho do Eventarc e crie um gatilho ou crie um gatilho após criar um serviço. Para mais informações sobre como criar um gatilho, consulte Como criar um gatilho de evento.

  13. Clique em Criar.

Linha de comando

  1. Clone o repositório:

    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 gcr.io/$(gcloud config get-value project)/helloworld-events
    
  3. Implante a imagem do contêiner no Cloud Run:

    gcloud run deploy helloworld-events \
        --image gcr.io/$(gcloud config get-value project)/helloworld-events \
        --allow-unauthenticated
    

    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 (totalmente gerenciado), configure o gatilho.

Como 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. Acesse o Cloud Run no Console do Cloud.

    Acesse o Cloud Run

  2. Na lista de serviços, clique no serviço que você criou para acessar a página Detalhes do serviço.

  3. Clique na guia Gatilhos e clique em Adicionar gatilho.

  4. Na lista suspensa Escolha um evento, selecione Cloud Storage > storage.objects.create.

  5. Para ativar os tipos de registro de auditoria necessários para o serviço storage.googleapis.com, clique em Ativar todos .

  6. No campo Receber eventos de, selecione Singlenica região e, em seguida, selecione us-central1 como a região para receber os eventos.

  7. Se solicitado, conceda o papel eventarc.eventReceiver à conta de serviço do Compute Engine e à função iam.serviceAccountTokenCreator à conta de serviço do Pub/Sub.

    Como configurar um novo acionador

  8. Clique em Save.

Linha de comando

  1. Crie um gatilho que filtre eventos do Cloud Storage e que usem a conta de serviço padrão do Compute Engine do projeto do Google Cloud:

    gcloud eventarc triggers create events-tutorial-trigger \
        --destination-run-service=helloworld-events \
        --destination-run-region=us-central1 \
        --event-filters="type=google.cloud.audit.log.v1.written" \
        --event-filters="serviceName=storage.googleapis.com" \
        --event-filters="methodName=storage.objects.create" \
        --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
    

    Isso cria um gatilho chamado events-tutorial-trigger.

  2. Para confirmar se events-tutorial-trigger foi criado, execute:

    gcloud eventarc triggers list --location=us-central1
    

    events-tutorial-trigger é exibido listado com um destino de helloworld-events.

Como gerar e ver 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. Acesse o Cloud Storage no Console do Cloud.

      Acesse o Cloud Storage

    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.

    Linha de comando

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

    echo "Hello World" > random.txt
    gsutil cp random.txt gs://events-tutorial-$(gcloud config get-value project)/random.txt
    

    O upload gera um evento e o serviço do Cloud Run registra a mensagem do evento.

  2. Para visualizar a entrada de registro:

    Console

    1. Acesse o Cloud Run no Console do Cloud.

      Acesse o Cloud Run

    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:

      Acionar registros

    Linha de comando

    1. gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events"
      
    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.

Parabéns! Você implantou um serviço de receptor de eventos no Cloud Run, criou um gatilho do Eventarc, gerou um evento do Cloud Storage e o visualizou nos registros do Cloud Run.

Limpeza

O Cloud Run não gera custos quando o serviço não está em uso, mas ainda é possível receber cobranças por armazenamento da imagem de contêiner no Container Registry, recursos do Eventarc e armazenamento de arquivos no bucket do Cloud Storage.

É possível excluir a imagem e excluir o bucket de armazenamento. Para excluir o gatilho do Eventarc:

gcloud eventarc triggers delete events-tutorial-trigger

Se preferir, exclua o projeto do Google Cloud para evitar cobranças. A exclusão do projeto do Cloud interrompe o faturamento de todos os recursos usados nele.

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir