Receba um evento dos registos de auditoria da nuvem

Este tutorial mostra como implementar um serviço do Cloud Run autenticado que recebe eventos do Cloud Storage através dos registos de auditoria do Google Cloud. Use este tutorial para implementar cargas de trabalho de produção. O acionador do Eventarc filtra eventos com base nas entradas dos registos de auditoria do Google Cloud. Para mais informações, consulte o artigo Determine os filtros de eventos para os registos de auditoria do Cloud.

Pode concluir este tutorial através da Google Cloud consola ou da CLI Google Cloud.

Crie um repositório padrão do Artifact Registry

Crie um repositório padrão do Artifact Registry para armazenar a imagem de contentor.

Consola

  1. Na Google Cloud consola, aceda à página Repositórios.

    Aceda a Repositórios

  2. Clique em Criar repositório.
  3. Configure o seu repositório:
    1. Introduza um Nome exclusivo.
    2. Em Formato, escolha Docker.
    3. Em Modo, escolha Padrão.
    4. Para Tipo de localização, escolha Região.
    5. Na lista Região, selecione us-central1 (Iowa).
  4. Aceite as outras predefiniçõ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 contentor do Cloud Storage

Este tutorial usa o Cloud Storage como origem de eventos. Para criar um contentor de armazenamento:

Consola

  1. Na Google Cloud consola, aceda à página Recipientes.

    Aceda a Recipientes

  2. Clique em Criar contentor.
  3. Introduza as informações do seu contentor e clique em Continuar para concluir cada passo:
    1. Introduza um Nome exclusivo. Por exemplo, eventarcbucket.
    2. Selecione Região como Tipo de localização.
    3. Selecione us-central1 (Iowa) como Localização.
    4. Selecione Padrão para a classe de armazenamento predefinida.
    5. Selecione Uniforme para Controlo de acesso.
  4. Clique em Criar.

gcloud

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

Depois de criar a origem de eventos, pode implementar o serviço de receção de eventos no Cloud Run.

Implemente o serviço de receção de eventos no Cloud Run

Implemente um serviço do Cloud Run que receba e registe eventos. Para implementar o serviço de recetor de eventos de exemplo:

Consola

  1. Clone o repositório de exemplo para a sua conta do GitHub:
  2. Ir

    1. No GitHub, navegue para GoogleCloudPlatform/golang-samples
    2. Clique em Criar ramificação.
    3. Captura de ecrã do botão Criar ramificação.
    4. Se lhe for pedido, selecione a localização onde quer criar uma ramificação do repositório.

    Java

    1. No GitHub, navegue para GoogleCloudPlatform/java-docs-samples.
    2. Clique em Criar ramificação.
    3. Captura de ecrã do botão Criar ramificação.
    4. Se lhe for pedido, selecione a localização onde quer criar uma ramificação do repositório.

    .NET

    1. No GitHub, navegue para GoogleCloudPlatform/dotnet-docs-samples.
    2. Clique em Criar ramificação.
    3. Captura de ecrã do botão Criar ramificação.
    4. Se lhe for pedido, selecione a localização onde quer criar uma ramificação do repositório.

    Node.js

    1. No GitHub, navegue para GoogleCloudPlatform/nodejs-docs-samples.
    2. Clique em Criar ramificação.
    3. Captura de ecrã do botão Criar ramificação.
    4. Se lhe for pedido, selecione a localização onde quer criar uma ramificação do repositório.

    Python

    1. No GitHub, navegue para GoogleCloudPlatform/python-docs-samples.
    2. Clique em Criar ramificação.
    3. Captura de ecrã do botão Criar ramificação.
    4. Se lhe for pedido, selecione a localização onde quer criar uma ramificação do repositório.
  3. Na Google Cloud consola, aceda à página Serviços.
  4. Aceder a Serviços

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

    As alterações ao seu repositório do GitHub são automaticamente incorporadas em imagens de contentores no Artifact Registry e implementadas no Cloud Run.

  7. Clique em Configurar com o Cloud Build para abrir o formulário Configurar com o Cloud Build.
    1. Se lhe for pedido, ative a API Cloud Build e a API Artifact Analysis.
    2. Selecione GitHub como o fornecedor de repositórios.
    3. Se lhe for pedido, clique em Instalar o Google Cloud Build.
    4. Selecione o repositório do GitHub que bifurcou como o repositório.
    5. Clicar em Seguinte.
    6. No campo Ramo, introduza ^main$.
    7. Selecione Dockerfile como o Tipo de compilação e indique a localização de origem do Dockerfile:
      • eventarc/audit-storage/Dockerfile

        ou

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

gcloud

  1. Clone o repositório do GitHub:

    Ir

    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 contentor e carregue-o para o Cloud Build:
    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    
  3. Implemente a imagem do contentor no Cloud Run:
    gcloud run deploy $SERVICE_NAME \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    

    No comando para permitir invocações não autenticadas, introduza n.

    Quando a implementação é bem-sucedida, a linha de comandos apresenta o URL do serviço.

Agora que implementou o serviço de receção de eventos denominado helloworld-events no Cloud Run, pode configurar o acionador.

Crie um acionador do Eventarc

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

Consola

  1. Na Google Cloud consola, aceda à página Acionadores.

    Aceda a Acionadores

  2. Clique em Criar acionador.
  3. Escreva um Nome do acionador.

    Este é o ID do acionador e tem de começar com uma letra. Pode conter até 63 letras minúsculas, números ou hífenes.

  4. Selecione um Tipo de acionador:
    • Originais: filtra eventos enviados por Google Cloud fornecedores (diretamente ou através de entradas dos registos de auditoria na nuvem) ou fornecedores através de mensagens do Pub/Sub.
    • Terceiros: filtra eventos enviados por fornecedores de terceiros.
  5. Na lista Fornecedor de eventos, selecione Cloud Storage como a origem dos eventos.
  6. Na lista Tipo de evento, selecione storage.objects.create.
  7. Na lista Região, selecione us-central1 como a região a partir da qual receber eventos.
  8. Selecione a conta de serviço que criou. Por exemplo, SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com.
  9. Na lista Destino do evento, selecione Cloud Run.
  10. Na lista Selecionar um serviço do Cloud Run, selecione helloworld-events.
  11. Clique em Criar.
  12. Tenha em atenção que também pode criar um acionador do Eventarc através da página da consola do Cloud Run.

gcloud

  1. Crie um acionador que filtre eventos do Cloud Storage e que use a conta de serviço que 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 Google Cloud ID do projeto.

    Onde:

    • type: especifica que os registos de auditoria são criados quando os critérios de filtro do acionador são cumpridos.
    • serviceName: o serviço que escreve o registo de auditoria, que é o Cloud Storage.
    • methodName: a operação que está a ser auditada, que é storage.objects.create.
    Esta ação cria um acionador denominado events-tutorial-trigger.
  2. Para confirmar que events-tutorial-trigger foi criado com êxito, execute o seguinte comando:
    gcloud eventarc triggers list --location=$REGION
  3. O acionador events-tutorial-trigger está listado com um objetivo de helloworld-events.

Gere e veja um evento

  1. Para gerar um evento:

    Consola

    1. Crie um ficheiro de texto com o nome de ficheiro random.txt e o texto "Olá mundo".
    2. Na Google Cloud consola, aceda à página Recipientes.

      Aceda a Recipientes

    3. Selecione o contentor de armazenamento que criou.
    4. No separador Objetos, clique em Carregar ficheiros e carregue o ficheiro random.txt.

    gcloud

    Carregue um ficheiro 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 ver a entrada do registo:
  3. Consola

    1. Na Google Cloud consola, aceda à página Serviços.

      Aceder a Serviços

    2. Na lista de serviços, clique no nome do serviço que criou para aceder à respetiva página de Detalhes do serviço.
    3. Clique no separador Registos para obter os registos de pedidos e contentores de todas as revisões deste serviço. Pode filtrar por nível de gravidade do registo.
    4. Procure uma entrada de registo semelhante a:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      onde BUCKET_NAME é o nome do contentor 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 registo semelhante a:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      onde BUCKET_NAME é o nome do contentor do Cloud Storage.

Implementou com êxito um serviço de receção de eventos no Cloud Run, criou um acionador do Eventarc, gerou um evento a partir do Cloud Storage e viu-o nos registos do Cloud Run.