Receber um evento dos Registros de auditoria do Cloud

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

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.

Conclua este tutorial usando o Console do Google Cloud ou a Google Cloud CLI.

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 fazendo upload de um arquivo no bucket do Cloud Storage e visualizá-lo nos registros do Cloud Run.

Custos

Neste tutorial, usamos os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

Algumas das etapas deste documento podem não funcionar corretamente se sua organização aplicar restrições ao ambiente do Google Cloud. Nesse caso, talvez não seja possível concluir tarefas como criar endereços IP públicos ou chaves de contas de serviço. Se você fizer uma solicitação que retorne um erro sobre restrições, veja como Desenvolver aplicativos em um ambiente restrito do Google Cloud.

  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 verificar se o faturamento está ativado em um projeto.

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

    Ative as APIs

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

  6. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

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

    Ative as APIs

  8. Conclua as seguintes etapas para o console ou a CLI gcloud: :

    Console

    1. No console, acesse a página Contas de serviço.

      Acessar Contas de serviço
    2. Clique em Criar conta de serviço.
    3. Insira um nome de conta de serviço a ser exibido no console.

      O console gerará um ID de conta de serviço com base nesse nome. Edite o ID se for necessário. Não será possível alterar o ID depois.

    4. Opcional: digite uma descrição da conta de serviço.
    5. Se você não quiser definir controles de acesso agora, clique em Concluído para terminar a criação da conta de serviço.

      Para definir os controles de acesso agora, clique em Criar e continuar e avance para a próxima etapa.

    6. Escolha os papéis de gerenciamento de identidade e acesso Cloud Run Invoker e Eventarc Event Receiver para conceder à conta de serviço no projeto.
    7. Quando terminar de adicionar papéis, clique em Continuar e Concluído para terminar de criar a conta de serviço.
    8. Para conceder papéis do IAM a um principal, faça o seguinte:
      1. No console, acesse a página IAM.

        Acessar IAM
      2. Encontre a linha que contém o endereço de e-mail USER_EMAIL, clique em Editar principal nessa linha e clique em Adicionar outra .
      3. Na lista suspensa, adicione os papéis Eventarc Admin e Service Account User.
      4. Clique em Save. O principal recebe os papéis de gerenciamento de identidade e acesso no recurso.

    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. Substitua PROJECT_ID pelo código do projeto.
    5. Ative os tipos de registro Leitura de administradores, Leitura de dados e Gravação de dados nos registros de auditoria do Cloud no Google Cloud Storage: Acessar os registros de auditoria do Cloud
    6. Crie uma conta de serviço para o projeto:
      gcloud iam service-accounts create sample-service-account \
          --description="A sample service account" \
          --display-name="Sample service account"
      Depois de criar uma conta de serviço, pode levar até sete minutos para que você possa usá-la. Se você tentar usar imediatamente uma conta de serviço depois de criá-la e receber um erro, aguarde pelo menos 60 segundos e tente novamente.
    7. Para confirmar se a sample-service-account foi criada, execute:
      gcloud iam service-accounts list
      A saída será semelhante a:
      DISPLAY NAME                     EMAIL                                                               DISABLED
      Default compute service account  PROJECT_NUMBER-compute@developer.gserviceaccount.com                False
      Sample service account           sample-service-account@PROJECT_ID.iam.gserviceaccount.com           False
    8. Conceda os papéis a seguir à conta de serviço:

        run.invoker

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/run.invoker"

        Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

        eventarc.eventReceiver

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/eventarc.eventReceiver"

        Substitua PROJECT_ID pelo ID do projeto do Google Cloud.

    9. Conceda os seguintes papéis do IAM ao usuário:

        eventarc.admin

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="PRINCIPAL" \
          --role='roles/eventarc.admin'

        Substitua os seguintes valores:

        • PROJECT_ID: o ID do projeto do Google Cloud
        • PRINCIPAL: uma identidade válida à qual você quer conceder o papel.

            Exemplo:

          • E-mail da Conta do Google: user:test-user@gmail.com
          • Grupo do Google: group:admins@example.com
          • Conta de serviço: serviceAccount:test123@example.domain.com
          • Domínio do Google Workspace ou Cloud Identity: domain:example.domain.com

        iam.serviceAccountUser

        gcloud iam service-accounts add-iam-policy-binding \
          sample-service-account@PROJECT_ID.iam.gserviceaccount.com \
          --member="PRINCIPAL" \
          --role="roles/iam.serviceAccountUser"

        Substitua os seguintes valores:

        • PROJECT_ID: o ID do projeto do Google Cloud
        • PRINCIPAL: uma identidade válida à qual você quer conceder o papel.

            Exemplo:

          • E-mail da Conta do Google: user:test-user@gmail.com
          • Grupo do Google: group:admins@example.com
          • Conta de serviço: serviceAccount:test123@example.domain.com
          • Domínio do Google Workspace ou Cloud Identity: domain:example.domain.com
    10. 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.

    Acesse o Cloud Storage

  2. Clique em Criar bucket.
  3. Novo bucket
  4. 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.
  5. Clique em Criar.

gcloud

gsutil mb -l us-central1 gs://events-tutorial-PROJECT_ID/

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. Acesse o Cloud Run no console.
  4. Acesse o Cloud Run

  5. Clique em Criar serviço para exibir o formulário Criar serviço.
  6. create-service-page.
  7. Selecione Implantar continuamente novas revisões de um repositório de código-fonte.
  8. Clique em Configurar com o Cloud Build para abrir o formulário Configurar com o Cloud Build.
  9. 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 build 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, digite o nome do serviço. Por exemplo, helloworld-events.
  11. Selecione us-central1(Iowa) como a Região em que o serviço estará localizado.
  12. Clique em Next.
  13. 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 Exigir autenticação.
  14. 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 Criar um gatilho do Eventarc.
  15. Clique em Criar.

gcloud

  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/PROJECT_ID/helloworld-events
    
  3. Implante a imagem do contêiner no Cloud Run:
    gcloud run deploy helloworld-events \
      --image gcr.io/PROJECT_ID/helloworld-events
    

    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. Acesse o Cloud Run no console.

    Acessar 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 storage.googleapis.com, clique em Ativar todos.
  6. No campo Receber eventos de, selecione Região única e, em seguida, selecione us-central1 como a região para receber 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. Selecione a conta de serviço que você criou. Por exemplo, SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com.
  9. Clique em Save.

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=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=sample-service-account@PROJECT_ID.iam.gserviceaccount.com
    Substitua PROJECT_ID pelo ID do projeto do Google Cloud. 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
  3. events-tutorial-trigger é exibido 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. Acesse o Cloud Storage no console.

      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.

    gcloud

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

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

    1. Acesse o Cloud Run no console.

      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.

    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.

Parabéns! 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.

Limpar

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 Google 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