Cloud Audit Logs からイベントを受信する

Cloud Run for Anthos on Google Cloud にサービスをデプロイし、イベントを作成して Cloud Audit Logs からそのサービスに送信する方法を学習します。

始める前に

このタスクを完了するには、イベント ブローカーを使用し、それが実行されている名前空間を把握する必要があります。Cloud Run for Anthos 用にイベントを構成し、イベント ブローカーを作成する方法を学習します。

イベント ブローカーが実行されている場合は、次のコマンドを実行して Kubernetes Namespace を表示できます。

kubectl get brokers -n NAMESPACE

Cloud Run for Anthos イベント レシーバー サービスをデプロイする

イベント ブローカーからイベントを受信する Cloud Run for Anthos サービスをデプロイします。

  1. リポジトリのクローンを作成します。

    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. コンテナをビルドして、Cloud Build にアップロードします。

    gcloud builds submit \
       --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    ここで、CLOUD_RUN_CONTAINER_NAME はコンテナのファイル名です。

  3. コンテナ イメージを 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
    

    ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。

    サービス URL が表示されたら、デプロイが正常に完了しています。

Cloud Audit Logs トリガーを作成する

  1. イベント ブローカーと同じ名前空間にトリガーを作成します。

    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
    

    この例では、methodName エントリが google.pubsub.v1.Publisher.CreateTopic に等しい Cloud Audit Logs のエントリをフィルタリングします。他のフィルタリング オプションについては、AuditLog の形式をご覧ください。

  2. 60 秒後、トリガーが機能していることを確認します。

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

    ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。

    出力は次のようになります。

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

イベントを生成する

  1. Pub/Sub トピックを作成してイベントを生成します。

    gcloud pubsub topics create TOPIC_NAME
    
  2. イベントが Cloud Run for Anthos サービスで受信されたことを確認します。

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

    ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。

    出力は次のようになります。

      [...]
      [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
      [...]
    

クリーンアップ

定期的な課金が発生しないように、このチュートリアルで作成したリソースを削除します。

  1. トリガーを削除するには、次のように入力します。

    gcloud beta events triggers delete TRIGGER_NAME \
        --namespace NAMESPACE
    

    ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。

  2. Pub/Sub トピックを削除します。

    gcloud pubsub topics delete TOPIC_NAME