Cloud Storage にアップロードされたファイルの自動マルウェア スキャンをデプロイする

Last reviewed 2023-06-20 UTC

このドキュメントでは、Cloud Storage にアップロードされたファイルのマルウェア スキャンを自動化するのアーキテクチャをデプロイする方法について説明します。

このデプロイガイドは、次のテクノロジーの基本機能を理解していることを前提としています。

アーキテクチャ

次の図は、このチュートリアルで作成するデプロイ アーキテクチャを示しています。

マルウェア スキャン パイプラインのアーキテクチャ。

この図は、このアーキテクチャで管理される次の 2 つのパイプラインを示しています。

  • ファイル スキャン パイプライン。アップロードされたファイルにマルウェアが含まれていないかどうかを確認します。
  • ClamAV マルウェア データベースのミラー更新パイプライン。ClamAV が使用するマルウェア データベースの最新のミラーを維持します。

アーキテクチャの詳細については、Cloud Storage にアップロードされたファイルのマルウェア スキャンを自動化するをご覧ください。

目標

  • Cloud Storage バケットに ClamAV マルウェア定義データベースのミラーを構築する。

  • 次の機能を使用して Cloud Run サービスをビルドする。

    • ClamAV を使用して Cloud Storage バケット内のファイルをスキャンしてマルウェアの有無を確認し、スキャン結果に応じてクリーンなバケットまたは隔離バケットにスキャン済みファイルを移動する。
    • Cloud Storage で ClamAV マルウェア定義データベースのミラーを管理する。
  • ファイルが Cloud Storage にアップロードされたときにマルウェア スキャン サービスをトリガーする Eventarc トリガーを作成する。

  • マルウェア スキャン サービスをトリガーして Cloud Storage のマルウェア定義データベースのミラーを更新する Cloud Scheduler ジョブを作成する。

料金

このアーキテクチャでは、課金対象である次の Google Cloud コンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Artifact Registry, Cloud Run, Eventarc, Logging, Cloud Scheduler, Pub/Sub, and Cloud Build API を有効にします。

    API を有効にする

  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Google Cloud プロジェクトで課金が有効になっていることを確認します

  7. Artifact Registry, Cloud Run, Eventarc, Logging, Cloud Scheduler, Pub/Sub, and Cloud Build API を有効にします。

    API を有効にする

  8. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  9. このデプロイでは、すべてのコマンドを Cloud Shell から実行します。

環境を設定する

このセクションでは、デプロイ全体で使用される値(リージョンやゾーンなど)の設定を行います。このデプロイでは、Cloud Run サービスのリージョンとして us-central1 を使用し、Eventarc トリガーと Cloud Storage バケットのロケーションとして us を使用します。

  1. Cloud Shell で、リージョンやロケーションなどの一般的なシェル変数を設定します。

    REGION=us-central1
    LOCATION=us
    PROJECT_ID=PROJECT_ID
    SERVICE_NAME="malware-scanner"
    SERVICE_ACCOUNT="${SERVICE_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  2. プロジェクト ID を使用して gcloud 環境を初期化します。

    gcloud config set project "${PROJECT_ID}"
    
  3. 一意の名前で 3 つの Cloud Storage バケットを作成します。

    gsutil mb -l "${LOCATION}" "gs://unscanned-${PROJECT_ID}"
    gsutil mb -l "${LOCATION}" "gs://quarantined-${PROJECT_ID}"
    gsutil mb -l "${LOCATION}" "gs://clean-${PROJECT_ID}"
    

    ${PROJECT_ID} は、バケット名を一意の名前にするために使用されます。

    この 3 つのバケットは、ファイル スキャン パイプラインのさまざまな段階でアップロードされたファイルを保持します。

    • unscanned-PROJECT_ID: スキャンする前のファイルを保持します。ユーザーがこのバケットにファイルをアップロードします。

    • quarantined-PROJECT_ID: マルウェア スキャナ サービスでスキャンされ、マルウェアが含まれていると判断されたファイルを保持します。

    • clean-PROJECT_ID: マルウェア スキャナ サービスでスキャンされ、感染していないと判断されたファイルを保持します。

  4. 4 つ目の Cloud Storage バケットを作成します。

    gsutil mb -l "${LOCATION}" "gs://cvd-mirror-${PROJECT_ID}"
    

    ${PROJECT_ID} は、バケット名を一意の名前にするために使用されます。

    このバケット cvd-mirror-PROJECT_ID は、マルウェア定義データベースのローカルミラーを維持するために使用されます。これにより、ClamAV CDN によってレート制限がトリガーされなくなります。

マルウェア スキャナ サービスのサービス アカウントを設定する

このセクションでは、マルウェア スキャナ サービスに使用するサービス アカウントを作成します。次に、サービス アカウントが Cloud Storage バケットに対する読み取りと書き込みの権限を持つように、サービス アカウントに適切なロールを付与します。これらのロールにより、アカウントに最小限の権限が付与され、必要なリソースにのみアクセスできるようになります。

  1. malware-scanner サービス アカウントを作成します。

    gcloud iam service-accounts create ${SERVICE_NAME}
    
  2. バケットにオブジェクト管理者ロールを付与します。これにより、サービスは未スキャン バケットからのファイルの読み取りと削除、隔離バケットとクリーンなバケットへのファイルの書き込みができるようになります。

    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://unscanned-${PROJECT_ID}"
    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://clean-${PROJECT_ID}"
    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://quarantined-${PROJECT_ID}"
    gsutil iam ch \
        "serviceAccount:${SERVICE_ACCOUNT}:objectAdmin" \
        "gs://cvd-mirror-${PROJECT_ID}"
    
  3. 指標の書き込みのロールを付与します。これにより、サービスは Monitoring に指標を書き込めるようになります。

    gcloud projects add-iam-policy-binding \
          "${PROJECT_ID}" \
          --member="serviceAccount:${SERVICE_ACCOUNT}" \
          --role=roles/monitoring.metricWriter
    

Cloud Run にマルウェア スキャナ サービスを作成する

このセクションでは、Cloud Run にマルウェア スキャナ サービスをデプロイします。このサービスは、次の内容を含む Docker コンテナで実行されます。

  • サービス、Node.js ランタイム、Google Cloud SDK、ClamAV バイナリを含むコンテナ イメージをビルドするための Dockerfile
  • マルウェア スキャナ Cloud Run サービスの Node.js ファイル
  • Cloud Storage バケット名を指定する config.json 構成ファイル。
  • Cloud Storage の ClamAV マルウェア定義データベース ミラーを更新する updateCvdMirror.sh シェル スクリプト。
  • freshclam HTTP リクエストをプロキシする cloud-run-proxy サービス。このサービスは、Cloud Storage API への認証済みアクセスを提供します。
  • インスタンスの起動時に必要なサービスを実行する bootstrap.sh シェル スクリプト。

このサービスをデプロイするには、次の操作を行います。

  1. Cloud Shell で、コードファイルを含む GitHub リポジトリのクローンを作成します。

    git clone https://github.com/GoogleCloudPlatform/docker-clamav-malware-scanner.git
    
  2. cloudrun-malware-scanner ディレクトリに移動します。

    cd docker-clamav-malware-scanner/cloudrun-malware-scanner
    
  3. config.json 構成ファイルを編集して、作成した Cloud Storage バケットを指定します。バケット名はプロジェクト ID に基づいているため、検索と置換のオペレーションを使用できます。

    sed "s/-bucket-name/-${PROJECT_ID}/" config.json.tmpl > config.json
    

    更新された構成ファイルを確認できます。

    cat config.json
    
  4. Cloud Storage の ClamAV マルウェア データベース ミラーへの初期データ取り込みを行います。

    python3 -m venv pyenv
    . pyenv/bin/activate
    pip3 install crcmod cvdupdate
    ./updateCvdMirror.sh "cvd-mirror-${PROJECT_ID}"
    deactivate
    

    このコマンドは、CVDUpdate ツールをローカルにインストールし、このツールを使用してマルウェア データベースをダウンロードします。このコマンドは次に、前の手順で作成した cvd-mirror-PROJECT_ID バケットにデータベースをアップロードします。

    ミラーバケットの内容を確認できます。

    gsutil ls "gs://cvd-mirror-${PROJECT_ID}/cvds"
    

    このバケットには、マルウェア データベース全体を含む複数の CVD ファイル、毎日の差分更新を含む複数の .cdiff ファイル、構成と状態に関する情報を含む 2 つの .json ファイルが含まれている必要があります。

  5. 以前の手順で作成したサービス アカウントを使用して、Cloud Run サービスを作成してデプロイします。

    gcloud beta run deploy "${SERVICE_NAME}" \
      --source . \
      --region "${REGION}" \
      --no-allow-unauthenticated \
      --memory 4Gi \
      --cpu 1 \
      --concurrency 20 \
      --min-instances 1 \
      --max-instances 5 \
      --no-cpu-throttling \
      --cpu-boost \
      --service-account="${SERVICE_ACCOUNT}"
    

    このコマンドは、1 つの vCPU を持ち、4 GiB の RAM を使用する Cloud Run インスタンスを作成します。このサイズはこのデプロイでは許容されます。ただし本番環境では、インスタンスにより大きな CPU とメモリサイズを選択し、また大きな --max-instances パラメータを選択することをおすすめします。必要となる可能性があるリソースサイズは、サービスが処理する必要があるトラフィックの量によって異なります。

    このコマンドの仕様は次のとおりです。

    • --concurrency パラメータは、各インスタンスが処理できる同時リクエストの数を指定します。
    • --no-cpu-throttling パラメータを指定すると、インスタンスがマルウェア定義の更新などのオペレーションをバックグラウンドで実行します。
    • --cpu-boost パラメータを指定すると、インスタンスの起動時に vCPU の数が 2 倍になり、起動レイテンシが短縮されます。
    • 各インスタンスの起動時間が比較的長いため、--min-instances 1 パラメータを指定すると、少なくとも 1 つのインスタンスがアクティブな状態で維持されます。
    • --max-instances 5 パラメータは、サービスが過度にスケールアップされないようにします。
  6. プロンプトが表示されたら「Y」と入力して、サービスをビルドしてデプロイします。ビルドとデプロイには 10 分ほどかかります。完了すると、次のメッセージが表示されます。

    Service [malware-scanner] revision [malware-scanner-UNIQUE_ID] has been deployed and is serving 100 percent of traffic.
    Service URL: https://malware-scanner-UNIQUE_ID.a.run.app
    
  7. デプロイ コマンドの出力の Service URL 値をシェル変数に格納します。この値は、後で Cloud Scheduler ジョブを作成するときに使用します。

    SERVICE_URL="SERVICE_URL"
    

実行中のサービスと ClamAV のバージョンを確認するには、次のコマンドを実行します。

curl -D - -H "Authorization: Bearer $(gcloud auth print-identity-token)"  \
     ${SERVICE_URL}

Cloud Run サービスでは、すべての呼び出しの認証を行う必要があり、認証 ID にはサービスに対する run.routes.invoke 権限が必要です。次のセクションでこの権限を追加します。

Eventarc Cloud Storage トリガーを作成する

このセクションでは、Eventarc が Cloud Storage イベントをキャプチャし、これらのイベントを Cloud Run malware-scanner サービスに送信するためのトリガーを作成できるようにする権限を追加します。

  1. 2021 年 4 月 8 日より前に作成された既存のプロジェクトを使用している場合は、Pub/Sub サービス アカウントに iam.serviceAccountTokenCreator ロールを追加します。

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
        --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\
        --role='roles/iam.serviceAccountTokenCreator'
    

    このロールは、古いプロジェクトにのみ追加する必要があります。このロールによって、Pub/Sub が Cloud Run サービスを呼び出すことができるようになります

  2. Cloud Shell で、Cloud Storage サービス アカウントに Pub/Sub パブリッシャーのロールを付与します。

    STORAGE_SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p "${PROJECT_ID}")
    
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
      --member "serviceAccount:${STORAGE_SERVICE_ACCOUNT}" \
      --role "roles/pubsub.publisher"
    
  3. malware-scanner サービス アカウントが Cloud Run サービスを呼び出し、Eventarc イベント レシーバーとして機能できるようにします。

    gcloud run services add-iam-policy-binding "${SERVICE_NAME}" \
      --region="${REGION}" \
      --member "serviceAccount:${SERVICE_ACCOUNT}" \
      --role roles/run.invoker
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
      --member "serviceAccount:${SERVICE_ACCOUNT}" \
      --role "roles/eventarc.eventReceiver"
    
  4. 未スキャン Cloud Storage バケット内のファイナライズされたオブジェクト イベントをキャプチャして、Cloud Run サービスに送信する Eventarc トリガーを作成します。このトリガーは malware-scanner サービス アカウントを認証に使用します。

    BUCKET_NAME="unscanned-${PROJECT_ID}"
    gcloud eventarc triggers create "trigger-${BUCKET_NAME}-${SERVICE_NAME}" \
      --destination-run-service="${SERVICE_NAME}" \
      --destination-run-region="${REGION}" \
      --location="${LOCATION}" \
      --event-filters="type=google.cloud.storage.object.v1.finalized" \
      --event-filters="bucket=${BUCKET_NAME}" \
      --service-account="${SERVICE_ACCOUNT}"
    

    次のいずれかのエラーが発生した場合は、1 分待ってからコマンドを再度実行します。

    ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was invalid: Bucket "unscanned-PROJECT_ID" was not found. Please verify that the bucket exists.
    
    ERROR: (gcloud.eventarc.triggers.create) FAILED_PRECONDITION: Invalid resource state for "": Permission denied while using the Eventarc Service Agent. If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent. Otherwise, verify that it has Eventarc Service Agent role.
    
  5. Eventarc トリガーにより使用される、基盤となる Pub/Sub サブスクリプションでメッセージの確認応答期限を 2 分に変更します。大きなファイルまたは負荷が高い場合、デフォルト値の 10 秒は短すぎます。

    SUBSCRIPTION_NAME=$(gcloud eventarc triggers describe \
        "trigger-${BUCKET_NAME}-${SERVICE_NAME}" \
        --location="${LOCATION}" \
        --format="get(transport.pubsub.subscription)")
    gcloud pubsub subscriptions update "${SUBSCRIPTION_NAME}" --ack-deadline=120
    

    注: トリガーはすぐに作成されますが、トリガーが伝播されてイベントがフィルタされるまでに最大で 10 分かかることがあります。

ClamAV データベース ミラーの更新をトリガーする Cloud Scheduler ジョブを作成する

  • マルウェア定義データベース ミラーを更新するコマンドを使用して、Cloud Run サービスに対して HTTP POST リクエストを実行する Cloud Scheduler ジョブを作成します。同じ時間枠を使用するクライアントが多くなりすぎないように、ClamAV では、10 の倍数以外の 3~57 のランダムな分数でジョブをスケジュールする必要があります。

    while : ; do
      # set MINUTE to a random number between 3 and 57
      MINUTE="$((RANDOM%55 + 3))"
      # exit loop if MINUTE isn't a multiple of 10
      [[ $((MINUTE % 10)) != 0 ]] && break
    done
    
    gcloud scheduler jobs create http \
        "${SERVICE_NAME}-mirror-update" \
        --location="${REGION}" \
        --schedule="${MINUTE} */2 * * *" \
        --oidc-service-account-email="${SERVICE_ACCOUNT}" \
        --uri="${SERVICE_URL}" \
        --http-method=post \
        --message-body='{"kind":"schedule#cvd_update"}' \
        --headers="Content-Type=application/json"
    

    --schedule コマンドライン引数は、unix-cron 文字列形式を使用してジョブが実行されるタイミングを定義します。指定された値は、2 時間ごとにランダムに生成された特定の分でジョブが実行されることを示しています。

このジョブでは、Cloud Storage 内の ClamAV ミラーのみが更新されます。Cloud Run の各インスタンスの ClamAV freshclam デーモンは、30 分ごとにミラーで新しい定義をチェックし、ClamAV デーモンを更新します。

ファイルをアップロードしてパイプラインをテストする

パイプラインをテストするには、クリーンな(マルウェアのない)ファイルと、感染したファイルを模倣したテストファイルを 1 つずつアップロードします。

  1. サンプル テキスト ファイルを作成するか、既存のクリーンなファイルを使用して、パイプライン プロセスをテストします。

  2. Cloud Shell で、サンプルデータ ファイルを未スキャン バケットにコピーします。

    gsutil cp FILENAME "gs://unscanned-${PROJECT_ID}"
    

    FILENAME を、クリーンなテキスト ファイルの名前に置き換えます。マルウェア スキャナ サービスは、各ファイルを検査し、ファイルを適切なバケットに移動します。このファイルはクリーンなバケットに移動されます。

  3. パイプラインでのファイルの処理には数秒かかります。その後、クリーンなバケットをチェックして、処理されたファイルがあるかどうかを確認します。

    gsutil ls -r "gs://clean-${PROJECT_ID}"
    

    未スキャン バケットからファイルが削除されたことを確認できます。

    gsutil ls -r "gs://unscanned-${PROJECT_ID}"
    
  4. EICAR 標準のマルウェア対策テスト署名を含む eicar-infected.txt というファイルを、未スキャン バケットにアップロードします。

    echo -e 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' \
        | gsutil cp - "gs://unscanned-${PROJECT_ID}/eicar-infected.txt"
    

    このテキスト文字列には、テスト目的でマルウェア スキャナをトリガーする署名があります。このテストファイルは広く使用されているテストであり、実際のマルウェアではなく、ワークステーションには無害です。マルウェア スキャナがインストールされているコンピュータでこの文字列を含むファイルを作成しようとすると、アラートがトリガーされます。

  5. 数秒待ってから、隔離バケットをチェックし、ファイルがパイプラインを正常に通過したかどうかを確認します。

    gsutil ls -r "gs://quarantined-${PROJECT_ID}"
    

    また、マルウェアに感染したファイルが検出されると、Logging のログエントリが記録されます。

    未スキャン バケットからファイルが削除されたことを確認できます。

    gsutil ls -r "gs://unscanned-${PROJECT_ID}"
    

マルウェア定義データベースの更新メカニズムをテストする

  • Cloud Shell で Cloud Scheduler ジョブを強制的に実行して、更新のチェックをトリガーします。

    gcloud scheduler jobs run "${SERVICE_NAME}-mirror-update" --location="${REGION}"
    

    このコマンドの結果は、詳細なログにのみ表示されます。

サービスをモニタリングする

Cloud Logging と Cloud Monitoring を使用してサービスをモニタリングできます。

詳細なログを表示する

  1. Google Cloud コンソールで、Cloud Logging ログ エクスプローラ ページに移動します。

    [ログ エクスプローラ] に移動

  2. [ログのフィールド] フィルタが表示されない場合は、[ログのフィールド] をクリックします。

  3. [ログのフィールド] フィルタで、[Cloud Run のリビジョン] をクリックします。

  4. [ログのフィールド] フィルタの [サービス名] セクションで、[malware-scanner] をクリックします。

ログクエリの結果には、このサービスからのログが表示されます。これには、アップロードした 2 つのファイルのスキャン リクエストとステータスを示す行がいくつか含まれています。

Scan request for gs://unscanned-PROJECT_ID/FILENAME, (##### bytes) scanning with clam ClamAV CLAMAV_VERSION_STRING
Scan status for gs://unscanned-PROJECT_ID/FILENAME: CLEAN (##### bytes in #### ms)
...
Scan request for gs://unscanned-PROJECT_ID/eicar-infected.txt, (69 bytes) scanning with clam ClamAV CLAMAV_VERSION_STRING
Scan status for gs://unscanned-PROJECT_ID/eicar-infected.txt: INFECTED stream: Eicar-Signature FOUND (69 bytes in ### ms)

出力には、ClamAV のバージョン、マルウェア データベースの署名のリビジョン、感染テストファイルのマルウェア名が表示されます。これらのログメッセージを使用して、マルウェアが検出されたときまたはスキャン中に障害が発生したときのアラートを設定できます。

出力には、マルウェア定義のミラー更新ログも表示されます。

Starting CVD Mirror update
CVD Mirror update check complete. output: ...

ミラーが更新された場合、出力には追加の行が表示されます。

CVD Mirror updated: DATE_TIME - INFO: Downloaded daily.cvd. Version: VERSION_INFO

freshclam の更新ログは 30 分ごとに表示されます。

DATE_TIME -> Received signal: wake up
DATE_TIME -> ClamAV update process started at DATE_TIME
DATE_TIME -> daily.cvd database is up-to-date (version: VERSION_INFO)
DATE_TIME -> main.cvd database is up-to-date (version: VERSION_INFO)
DATE_TIME -> bytecode.cvd database is up-to-date (version: VERSION_INFO)

データベースが更新された場合、freshclam のログ行は次のようになります。

DATE_TIME -> daily.cld updated (version: VERSION_INFO)

指標を表示

このサービスでは、モニタリングとアラートの目的で次の指標が生成されます。

  • 処理されたクリーンなファイルの数:
    custom.googleapis.com/opencensus/malware-scanning/clean_files
  • 処理された感染ファイルの数:
    custom.googleapis.com/opencensus/malware-scanning/infected_files
  • ファイルのスキャンにかかった時間:
    custom.googleapis.com/opencensus/malware-scanning/scan_duration
  • スキャンされた合計バイト数:
    custom.googleapis.com/opencensus/malware-scanning/bytes_scanned
  • 失敗したマルウェア スキャンの数:
    custom.googleapis.com/opencensus/malware-scanning/scans_failed
  • CVD ミラーの更新チェックの数:
    custom.googleapis.com/opencensus/malware-scanning/cvd-mirror-updates

これらの指標は、Cloud Monitoring の Metrics Explorer で確認できます。

  1. Google Cloud コンソールで、Cloud Monitoring の [Metrics Explorer] ページに移動します。

    Metrics Explorer に移動

  2. [指標を選択] フィールドをクリックして、フィルタ文字列「malware」を入力します。

  3. [OpenCensus/malware-scanning/clean_files] 指標を選択します。グラフには、クリーンなファイルがスキャンされた時点を示すデータポイントが表示されます。

指標を使用して、パイプラインをモニタリングし、マルウェアが検出された場合とファイルの処理に失敗した場合のアラートを作成できます。

生成される指標には次のラベルがあります。これらのラベルをフィルタリングと集計に使用することで、Metrics Explorer でよりきめ細かい詳細を表示できます。

  • source_bucket
  • destination_bucket
  • clam_version
  • cloud_run_revision

複数のバケットを処理する

マルウェア スキャナ サービスは、複数のソースバケットのファイルをスキャンし、クリーンなバケットと隔離バケットにスキャン済みファイルを送信できます。この高度な構成はこのデプロイの範囲外ですが、必要な手順の概要は次のとおりです。

  1. Cloud Storage の未スキャン バケット、クリーンなバケット、隔離バケットを作成し、一意の名前を付けます。

  2. 各バケットの malware-scanner サービス アカウントに適切なロールを付与します。

  3. config.json 構成ファイルを編集して、各構成のバケット名を指定します。

    {
      "buckets": [
        {
          "unscanned": "unscanned-bucket-1-name",
          "clean": "clean-bucket-1-name",
          "quarantined": "quarantined-bucket-1-name"
        },
        {
          "unscanned": "unscanned-bucket-2-name",
          "clean": "clean-bucket-2-name",
          "quarantined": "quarantined-bucket-2-name"
        }
      ]
      "ClamCvdMirrorBucket": "cvd-mirror-bucket-name"
    }
    
  4. 未スキャン バケットごとに Eventarc トリガーを作成します。各バケットに対して一意のトリガー名を作成してください。

    Cloud Storage バケットは、Eventarc トリガーと同じプロジェクトとリージョンに存在する必要があります。

クリーンアップ

次のセクションでは、このデプロイで使用した Google Cloud プロジェクトについて、今後料金が発生しないようにする方法について説明します。

Google Cloud プロジェクトを削除する

このデプロイで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトを削除します。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

次のステップ