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 receptor de eventos do Cloud Run for Anthos
Implantar um serviço do Cloud Run for Anthos que recebe eventos do agente de eventos.
Para clonar 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
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.
Para implantar a imagem de contêiner no Cloud Run for Anthos:
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 para registros de auditoria do Cloud
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 Cloud Audit Logging que têm as entradas
methodName
iguais agoogle.pubsub.v1.Publisher.CreateTopic
. Para mais opções de filtragem, consulte Formatação de AuditLog.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
Gere um evento criando um tópico do Pub/Sub:
gcloud pubsub topics create TOPIC_NAME
Verifique se o evento foi recebido pelo serviço Cloud Run for Anthos:
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.
Para excluir o gatilho, digite:
gcloud beta events triggers delete TRIGGER_NAME \ --namespace NAMESPACE
em que NAMESPACE é o mesmo namespace do agente de eventos.
Exclua o tópico do Pub/Sub:
gcloud pubsub topics delete TOPIC_NAME