Como receber eventos dos registros de auditoria do Cloud

Saiba como implantar um serviço no Cloud Run for Anthos no Google Cloud e criar e enviar eventos para esse serviço dos registros de auditoria do Cloud.

Antes de começar

Para concluir esta tarefa, você precisa ter um agente de eventos e saber o namespace em que ele está sendo executado. Saiba como configurar eventos no Cloud Run for Anthos e criar um agente de eventos.

Se você tiver um agente de eventos ativo, execute o comando a seguir para ver o namespace do Kubernetes:

kubectl get brokers -n NAMESPACE

Como implantar um serviço de receptor de eventos do Cloud Run for Anthos no Google Cloud

Implante um serviço do Cloud Run for Anthos no Google Cloud que recebe eventos do agente.

  1. Clone o repositório:

    Python

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

    Java

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

    Go

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

    Node.js

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

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-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)/CLOUD_RUN_CONTAINER_NAME
    

    em que CLOUD_RUN_CONTAINER_NAME é o nome de arquivo do contêiner.

  3. Implante a imagem de contêiner no Cloud Run for Anthos no Google Cloud:

    gcloud run deploy CLOUD_RUN_SERVICE_NAME \
        --namespace=NAMESPACE \
        --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    em que NAMESPACE é o mesmo namespace do agente de eventos.

    Quando o URL do serviço aparecer, significa que ele foi implantado.

Como criar um gatilho de registros de auditoria do Cloud

  1. Crie um gatilho no mesmo namespace que o agente de eventos:

    gcloud beta events triggers create TRIGGER_NAME \
       --namespace NAMESPACE \
       --target-service=CLOUD_RUN_SERVICE_NAME \
       --type=google.cloud.audit.log.v1.written \
       --parameters serviceName=pubsub.googleapis.com \
       --parameters methodName=google.pubsub.v1.Publisher.CreateTopic
    

    Neste exemplo, o gatilho filtra as entradas dos registros de auditoria do Cloud que têm as entradas methodName iguais a google.pubsub.v1.Publisher.CreateTopic. Para mais opções de filtragem, consulte Formatação de AuditLog.

  2. Após 60 segundos, verifique se o gatilho está funcionando:

    gcloud beta events triggers list \
       --target-service CLOUD_RUN_SERVICE_NAME \
       --namespace NAMESPACE
    

    em que NAMESPACE é o mesmo namespace do agente de eventos.

    A resposta será semelhante a:

    TRIGGER                EVENT TYPE                          TARGET
    trigger-name           google.cloud.audit.log.v1.written   cloud-run-service
    

Como gerar um evento

  1. Gere um evento criando um tópico do Pub/Sub:

    gcloud pubsub topics create TOPIC_NAME
    
  2. Verifique se o evento foi recebido pelo serviço do Cloud Run:

    kubectl logs \
       --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \
       -c user-container \
       -n NAMESPACE \
       --tail=200
    

    em que NAMESPACE é o mesmo namespace do agente de eventos.

    A resposta será semelhante a:

      [...]
      [2020-09-10 18:51:28 +0000] [1] [INFO] Starting gunicorn 20.0.4
      [2020-09-10 18:51:28 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1)
      [2020-09-10 18:51:28 +0000] [1] [INFO] Using worker: threads
      [2020-09-10 18:51:28 +0000] [7] [INFO] Booting worker with pid: 7
      GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted
      GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted2
      [...]
    

Limpeza

Exclua os recursos criados neste tutorial para evitar cobranças recorrentes.

  1. Para excluir o gatilho, digite:

    gcloud beta events triggers delete TRIGGER_NAME \
        --namespace NAMESPACE
    

    em que NAMESPACE é o mesmo namespace do agente de eventos.

  2. Exclua o tópico do Pub/Sub:

    gcloud pubsub topics delete TOPIC_NAME