Software Delivery Shield を使ってみる

このドキュメントでは、Software Delivery Shield の API を有効にする方法と、セキュリティ分析情報を表示するために必要な権限について説明します。Software Delivery Shield は、Google Cloud 上のフルマネージド ソフトウェア サプライ チェーン セキュリティ ソリューションです。

分析情報に必要な API を有効にする

ソフトウェア サプライ チェーンの分析情報を収集して表示するには、次の API が必要です。

  • 他の Google Cloud サービスが生成して使用するメタデータを格納する Container Analysis API。
  • Container Scanning API を使用して、Artifact Registry に保存されているコンテナ イメージの脆弱性やその他のメタデータをスキャンします。この API を有効にすると、Container Analysis API が自動的に有効になります。
  • ビルド アーティファクトを格納する Artifact Registry。1
  • ビルドの場所メタデータを生成する Cloud Build。
  • (GKE のみ)実行中のワークロードで OS の脆弱性をスキャンするための Container Security API。

Container Scanning API は、Artifact Registry と同じ Google Cloud プロジェクトで実行する必要があります。レジストリを使用するほかの Google Cloud サービスを個別のプロジェクトで実行できます。

1 Container Registry は、Container Scanning API によって自動的に有効になります。Software Delivery Shield は、既存の機能に関するデータが制限され、限定公開プレビューでは一部の機能をサポートしていません。 現在 Container Registry を使用している場合は、Artifact Registry への移行を検討してください。

分析情報の生成と表示に必要な API を有効にするには、次のようにします。

コンソール

同じプロジェクトですべてのサービスを使用する

必要な API をまとめて有効にします。

API を有効にする

個別のプロジェクトを使用する

  1. Artifact Registry を実行するプロジェクトで Container Scanning と Artifact Registry を有効にします。

    API を有効にする

  2. Cloud Build を実行しているプロジェクトで Cloud Build API を有効にします。

    Cloud Build を有効にする

  3. GKE を実行しているプロジェクトで Container Security API を有効にします。

    Container Security を有効にする

Google Cloud CLI

同じプロジェクトですべてのサービスを使用する

必要な API をまとめて有効にします。

gcloud services enable containerscanning.googleapis.com \
    cloudbuild.googleapis.com \
    artifactregistry.googleapis.com \
    containersecurity.googleapis.com

個別のプロジェクトを使用する

  1. Artifact Registry を実行するプロジェクトで Container Scanning と Artifact Registry を有効にします。AR_PROJECT は、適切な Google Cloud プロジェクト ID に置き換えます。

    gcloud services enable containerscanning.googleapis.com \
        artifactregistry.googleapis.com \
        --project=AR_PROJECT
    
  2. Cloud Build を実行しているプロジェクトで Cloud Build API を有効にします。BUILD_PROJECT は、適切な Google Cloud プロジェクト ID に置き換えます。

    gcloud services enable cloudbuild.googleapis.com \
        --project=BUILD_PROJECT
    
  3. GKE を実行しているプロジェクトで Container Security API を有効にします。GKE_PROJECT は、適切な Google Cloud プロジェクト ID に置き換えます。

    gcloud services enable containersecurity.googleapis.com \
         --project=BUILD_PROJECT
    

Software Delivery Shield パネルと Google Cloud コンソールの GKE セキュリティ体制ダッシュボードで分析情報を生成して表示するために必要な最小 API が有効になっています。

他のサービスの API を有効にするには、API ライブラリまたは gcloud services enable コマンドを使用します。

分析情報の表示権限を付与する

Google Cloud コンソールで Software Delivery Shield のインサイトを表示するには、次のロールまたは同等の権限を持つロールが必要です。

これらの権限は分析情報へのアクセスを許可しますが、Cloud Build でビルドを実行するなどの他のアクションを実行する権限は付与しません。

  • 特定のサービスに必要な権限の詳細については、そのサービスのドキュメントをご覧ください。
  • 権限の付与については、プロジェクトに対する権限の付与に関する Identity and Access Management のドキュメントをご覧ください。

デフォルトでは、多くのサービスは同じプロジェクト内の他のサービスにデフォルトの権限を持っていますが、別のプロジェクトのリソースにはアクセスできません。別の Google Cloud プロジェクトでサービスを実行している場合、またはカスタム IAM ロールやカスタム サービス アカウントを使用している場合は、適切な権限を自分で付与する必要があります。

例 1

Cloud Build、Artifact Registry、Container Analysis、Cloud Run はすべて同じプロジェクトで実行されています。各サービスはデフォルトのサービス アカウントを使用してサービスの代理として動作し、デフォルトの権限は変更されません。どちらのサービスも権限を変更せずに連携しますが、プロジェクトで分析情報を表示する必要があるユーザーには権限を付与する必要があります。

サービス間の権限

変更不要です。

  • デフォルトの Cloud Build サービス アカウントには、Artifact Registry を使用してアップロードおよびダウンロードする権限と、Container Analysis から分析情報データを読み取る権限があるため、サービスはビルドの場所を使用してコンテナ イメージに署名し、Artifact Registry に push できます。
  • Cloud Run のリビジョンは、Compute Engine のデフォルトのサービス アカウントを使用します。このアカウントには、Artifact Registry からイメージをダウンロードし、Container Analysis からインサイト データを読み取る権限があります。
分析情報を閲覧するためのユーザー権限

分析情報を表示するには、Cloud Build と Cloud Run のユーザーに必要なロールを付与する必要があります。

例 2

Artifact Registry と Container Analysis が他の Google Cloud サービスとは別のプロジェクトで実行されている場合は、すべてのプロジェクト間のアクティビティに対する権限を明示的に付与する必要があります。次のプロジェクトの設定について考えてみます。

  • プロジェクト A で Cloud Build を実行する
  • Artifact Registry と Container Analysis をプロジェクト B で実行する
  • Cloud Run をプロジェクト C で実行する
サービス間の権限

Cloud Build と Cloud Run は、これらのサービスの代理として機能するサービス アカウントに明示的にアクセス権を付与しない限り、他のプロジェクトのリソースにアクセスできません。アーティファクトとアーティファクト メタデータが保存されるプロジェクト B で、適切な Artifact Registry の権限Container Analysis の権限を付与する必要があります。

Cloud Build の場合は、プロジェクト B で次のロールを付与する必要があります。

  • Artifact Registry 書き込み(roles/artifactregistry.writer)は、アップロードとダウンロードを許可します。
  • Container Analysis 実行回数の閲覧者(roles/containeranalysis.occurrences.viewer)は、分析情報を表示するための権限を付与します。

Cloud Run の場合、プロジェクト B で次のロールを付与する必要があります。

  • Artifact Registry 読み取り(roles/artifactregistry.reader)は、デプロイ用にダウンロードするための権限を付与します。
  • Container Analysis 実行回数の閲覧者(roles/containeranalysis.occurrences.viewer)は、分析情報を表示するための権限を付与します。
分析情報を閲覧するためのユーザー権限

プロジェクト B では、Cloud Build と Cloud Run のユーザーに必要なロールを使用して、分析情報を表示する必要があります。

次のステップ