接收 Cloud 稽核記錄事件

本教學課程說明如何部署已驗證的 Cloud Run 服務,透過 Cloud 稽核記錄接收 Cloud Storage 的事件。請參閱本教學課程,瞭解如何部署正式環境工作負載。Eventarc 觸發條件會根據 Cloud 稽核記錄項目篩選事件。詳情請參閱「決定 Cloud 稽核記錄的事件篩選器」。

您可以使用 Google Cloud 控制台或 Google Cloud CLI 完成本教學課程。

建立 Artifact Registry 標準存放區

建立 Artifact Registry 標準存放區,用於儲存容器映像檔。

控制台

  1. 前往 Google Cloud 控制台的「Repositories」頁面。

    前往「Repositories」(存放區)

  2. 按一下 「建立存放區」
  3. 設定存放區:
    1. 輸入不重複的名稱
    2. 在「格式」部分選擇「Docker」
    3. 針對「Mode」(模式),請選擇「Standard」(標準)
    4. 在「位置類型」中,選擇「區域」
    5. 在「Region」(區域) 清單中,選取「us-central1 (Iowa)」(us-central1 (愛荷華州))
  4. 接受其他預設值,然後按一下「建立」

gcloud

gcloud artifacts repositories create REPOSITORY \
    --repository-format=docker \
    --location=$REGION

REPOSITORY 替換成 Artifact Registry 存放區的專屬名稱。

建立 Cloud Storage 值區

本教學課程會使用 Cloud Storage 做為事件來源。如要建立儲存空間 bucket,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Bucket」頁面。

    前往值區

  2. 按一下 「建立 bucket」
  3. 輸入 bucket 資訊,並點選「繼續」來完成各個步驟:
    1. 輸入不重複的名稱。例如:eventarcbucket
    2. 選取「區域」做為「位置類型」
    3. 選取「us-central1 (Iowa)」(us-central1 (愛荷華州)) 做為「Location」(位置)
    4. 在「預設儲存空間級別」部分選取「Standard」
    5. 在「存取權控管」部分選取「統一」
  4. 點選「建立」

gcloud

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

建立事件來源後,您可以在 Cloud Run 上部署事件接收器服務。

將事件接收器服務部署至 Cloud Run

部署 Cloud Run 服務,接收並記錄事件。如要部署範例事件接收器服務,請按照下列步驟操作:

控制台

  1. 在 GitHub 帳戶中複製範例存放區:
  2. Go

    1. 在 GitHub 中,前往 GoogleCloudPlatform/golang-samples
    2. 按一下「Fork」
    3. 「Fork」按鈕的螢幕截圖。
    4. 如果系統提示,請選取要分叉存放區的位置。

    Java

    1. 在 GitHub 中,前往 GoogleCloudPlatform/java-docs-samples
    2. 按一下「Fork」
    3. 「Fork」按鈕的螢幕截圖。
    4. 如果系統提示,請選取要分叉存放區的位置。

    .NET

    1. 在 GitHub 中,前往 GoogleCloudPlatform/dotnet-docs-samples
    2. 按一下「Fork」
    3. 「Fork」按鈕的螢幕截圖。
    4. 如果系統提示,請選取要分叉存放區的位置。

    Node.js

    1. 在 GitHub 中,前往 GoogleCloudPlatform/nodejs-docs-samples
    2. 按一下「Fork」
    3. 「Fork」按鈕的螢幕截圖。
    4. 如果系統提示,請選取要分叉存放區的位置。

    Python

    1. 在 GitHub 中,前往 GoogleCloudPlatform/python-docs-samples
    2. 按一下「Fork」
    3. 「Fork」按鈕的螢幕截圖。
    4. 如果系統提示,請選取要分叉存放區的位置。
  3. 前往 Google Cloud 控制台的「Services」頁面。
  4. 前往「服務」

  5. 按一下「Create service」(建立服務),顯示「Create service」(建立服務) 表單。
  6. 選取「從存放區持續部署」

    GitHub 存放區的異動內容會自動更新至 Artifact Registry 中的容器映像檔,並部署至 Cloud Run。

  7. 按一下「Set up with Cloud Build」(設定 Cloud Build),開啟「Set up with Cloud Build」(設定 Cloud Build) 表單。
    1. 如果出現提示,請啟用 Cloud Build APIArtifact Analysis API
    2. 選取「GitHub」做為「存放區供應商」
    3. 如果系統提示,請按一下「安裝 Google Cloud Build」
    4. 選取您建立分支的 GitHub 存放區做為存放區
    5. 點選「下一步」
    6. 在「Branch」(分支) 欄位中輸入 ^main$
    7. 選取「Dockerfile」做為「Build Type」(建構類型),並提供 Dockerfile 的來源位置:
      • eventarc/audit-storage/Dockerfile

      • eventarc/audit_storage/Dockerfile(Go)
    8. 按一下 [儲存]
  8. 在「建立服務」表單中輸入服務名稱。 例如:helloworld-events
  9. 選取「us-central1 (Iowa)」(us-central1 (愛荷華州)) 做為服務位置的區域
  10. 根據您想在 Cloud Run 服務上允許的輸入流量,選取任一「輸入」選項。
  11. 選取「需要驗證」
  12. 點選「建立」

gcloud

  1. 複製 GitHub 存放區:

    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. 建構容器並上傳至 Cloud Build:
    gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    
  3. 將容器映像檔部署至 Cloud Run:
    gcloud run deploy $SERVICE_NAME \
        --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
    

    系統提示是否允許未經驗證的叫用時,請輸入 n

    部署成功後,指令列會顯示服務網址。

您已將名為 helloworld-events 的事件接收器服務部署至 Cloud Run,現在可以設定觸發條件。

建立 Eventarc 觸發條件

Eventarc 觸發條件會將 Cloud Storage bucket 中的事件傳送至 helloworld-events Cloud Run 服務。

控制台

  1. 前往 Google Cloud 控制台的「Triggers」(觸發條件) 頁面。

    前往「Triggers」(觸發條件)

  2. 按一下「建立觸發條件」
  3. 輸入觸發條件名稱

    這是觸發條件的 ID,開頭必須是英文字母。最多可包含 63 個小寫英文字母、數字或連字號。

  4. 選取「觸發條件類型」
    • 第一方:篩選從 Google Cloud供應商傳送的事件 (直接傳送或透過 Cloud 稽核記錄項目),或是使用 Pub/Sub 訊息的供應商。
    • 第三方:篩選第三方供應商傳送的事件。
  5. 在「Event provider」(事件提供者) 清單中,選取「Cloud Storage」做為事件來源。
  6. 在「Event type」(事件類型) 清單中,選取「storage.objects.create」
  7. 在「Region」(區域) 清單中,選取「us-central1」做為接收事件的區域。
  8. 選取您建立的「服務帳戶」。例如: SERVICE_ACCOUNT_ID@PROJECT_ID。iam.gserviceaccount.com。
  9. 在「Event destination」(事件目的地) 清單中,選取「Cloud Run」
  10. 在「Select a Cloud Run service」(選取 Cloud Run 服務) 清單中,選取「helloworld-events」
  11. 點選「建立」
  12. 請注意,您也可以使用 Cloud Run 控制台頁面建立 Eventarc 觸發條件

gcloud

  1. 建立用來篩選 Cloud Storage 事件的觸發條件,並使用您建立的服務帳戶:
    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
    PROJECT_ID 替換為專案 ID。 Google Cloud

    其中:

    • type:指定在符合觸發條件的篩選條件時建立稽核記錄。
    • serviceName:寫入稽核記錄的服務,也就是 Cloud Storage。
    • methodName:受稽核的作業,即 storage.objects.create
    這項操作會建立名為 events-tutorial-trigger 的觸發條件。
  2. 如要確認 events-tutorial-trigger 是否已建立妥當,請執行:
    gcloud eventarc triggers list --location=$REGION
  3. 觸發條件 events-tutorial-trigger 會列出目標 helloworld-events

產生及查看活動

  1. 如要產生事件:

    控制台

    1. 建立檔案名稱為 random.txt 且包含「Hello World」文字的文字檔案。
    2. 前往 Google Cloud 控制台的「Bucket」頁面。

      前往值區

    3. 選取您建立的儲存空間 bucket。
    4. 在「Objects」(物件) 分頁中,按一下「Upload files」(上傳檔案),然後上傳 random.txt 檔案。

    gcloud

    將文字檔上傳至 Cloud Storage:

    echo "Hello World" > random.txt
    gcloud storage cp random.txt gs://events-tutorial-PROJECT_ID/random.txt
  2. 如要查看記錄項目:
  3. 控制台

    1. 前往 Google Cloud 控制台的「Services」頁面。

      前往「服務」

    2. 在服務清單中,按一下您建立的服務名稱,前往「服務詳細資料」頁面。
    3. 按一下「記錄」分頁標籤,取得此服務所有修訂版本的要求和容器記錄。您可以依記錄的嚴重性等級進行篩選。
    4. 尋找類似下列內容的記錄項目:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      其中 BUCKET_NAME 是 Cloud Storage 值區的名稱。

    gcloud

    1. gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
    2. 尋找類似下列內容的記錄項目:
      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      其中 BUCKET_NAME 是 Cloud Storage bucket 的名稱。

您已成功將事件接收器服務部署至 Cloud Run、建立 Eventarc 觸發程序、從 Cloud Storage 產生事件,並在 Cloud Run 記錄檔中查看該事件。