Assured OSS と統合してコード セキュリティを確保する

Assured Open Source Software(Assured OSS)プレミアム ティアでは、Google が独自のデベロッパー ワークフローに使用している OSS パッケージを使って、コードのセキュリティを強化できます。Assured OSS を有効にすると、Google が依存関係として使用するオープンソース ソフトウェアの保護に適用しているセキュリティの専門知識とその経験を開発者が利用できるようになります。

Assured OSS を Security Command Center に統合すると、次のことが可能になります。

  • TensorFlow、Pandas、Scikit-learn など、一般的な ML と AI のプロジェクトが含まれる、厳選された人気の高い Java と Python のパッケージ数千種類から選択できます。
  • 安全なプロキシを構成してすべての Java、Python、JavaScript パッケージを Assured OSS の証明書とともにダウンロードすると、知名度があり信頼性の高い Google がサプライヤーになります。
  • SPDX や CycloneDX などの業界標準の形式で提供される Assured OSS の SBOM と VEX を使用して、構成要素について詳しく把握できます。
  • Google による改ざん履歴がないことを示す署名入り証明書があるため、使用しているパッケージの完全性を確実に信頼できます。
  • Google がキュレート済みパッケージを常時スキャンし、新しい脆弱性を検出、修正しているため、セキュリティ リスクを低減できます。

始める前に

まず以下のタスクを完了してから、このページの残りのタスクを行ってください。

Security Command Center Enterprise ティアを有効にする

Security Command Center Enterprise ティアが組織レベルで有効になっており、設定ガイドの最初の 6 つの手順が完了していることを確認します。

組織レベルで権限を設定する

組織レベルとプロジェクト レベルで権限を設定する必要があります。

  1. Make sure that you have the following role or roles on the organization: Security Center Admin, Organization Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the organization.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      [IAM] に移動
    2. 組織を選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。

    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。

    プロジェクト レベルで権限を設定する

    1. Make sure that you have the following role or roles on the project: Service Usage Admin, Service Account Admin, Project IAM Admin

      Check for the roles

      1. In the Google Cloud console, go to the IAM page.

        Go to IAM
      2. Select the project.
      3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

      4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

      Grant the roles

      1. In the Google Cloud console, go to the IAM page.

        [IAM] に移動
      2. プロジェクトを選択します。
      3. [ アクセスを許可] をクリックします。
      4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。

      5. [ロールを選択] リストでロールを選択します。
      6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
      7. [保存] をクリックします。

      Google Cloud CLI を設定する

      In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      Assured OSS を設定する

      コンソール

      1. Google Cloud コンソールで、Security Command Center の設定ガイドに移動します。

        設定ガイドを開く

      2. Security Command Center Enterprise ティアを有効にした組織が表示されていることを確認します。

      3. [セキュリティ機能の概要の確認] パネルを開きます。

      4. [コードのセキュリティ] > [設定] をクリックします。

      5. [コードのセキュリティを設定する] パネルで、[AOSS の設定] をクリックします。

      6. Assured Open Source Software の権限を追加する、新規のサービス アカウントか既存のサービス アカウントを選択します。

      7. Assured OSS リソースを配置する Google Cloud プロジェクトを選択します。

      8. [Assured OSS を設定する] をクリックします。

        設定プロセスでは、次の処理が自動的に実行されます。

        • 選択した場合は、新しいサービス アカウントの assuredoss@PROJECT_ID.gservicesaccount.com を作成します。
        • Assured OSS で使用する指定したサービス アカウントに Assured OSS ユーザー ロールを割り当てます。
        • ログイン済みのユーザー アカウントに Assured OSS 管理者ロールを割り当て、そのアカウントでサービスを構成できるようにします。
        • Assured Open Source Software API を有効にし、Artifact Registry API がまだ有効になっていない場合はそれも有効にします。
        • 選択したプロジェクトの Artifact Registry インスタンスに Assured OSS プロキシ サービスを設定します。リポジトリは言語(Java、Python、JavaScript)ごとにプロビジョニングされます。これらのリポジトリはキュレートされたポートフォリオからパッケージを自動的に pull できます。パッケージがキュレートされたポートフォリオから利用できない場合、リポジトリはリクエストを正規リポジトリにリダイレクトします。プロキシ サービスは米国のリージョンのみをサポートしています。
        • Google が所有するプロジェクトのパッケージ メタデータと通知にアクセスする権限を、ユーザーとサービス アカウントに付与します。
      9. 指定された Assured OSS サービス アカウントごとにサービス アカウント キーを作成し、そのキーを JSON 形式でダウンロードします。

      10. ローカルマシンのコマンドラインで、ダウンロードした鍵ファイルに対して次のコマンドを実行して、base64 でエンコードされた文字列を取得します。

        base64 KEY_FILENAME.json
        

        KEY_FILENAME.json はダウンロードしたサービス アカウント キーの名前に置き換えます。

        base64 でエンコードされた文字列は Assured OSS のリモート リポジトリを設定するときに必要となります。

      11. パッケージをダウンロードするには、Assured OSS が各言語でプロビジョニングするエンドポイントを使用します。後ほど確認できるように、このエンドポイントをメモしておきます。

        • Java:
          https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
        • Python:
          https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
        • JavaScript:
          https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

        PROJECT_ID は Assured OSS の設定時に選択したプロジェクトの ID に置き換えます。

      12. [次へ] をクリックします。JFrog Artifactory や Sonatype Nexus など、組織のアーティファクト リポジトリ マネージャーを使用して Assured OSS を構成します。

      gcloud

      1. Assured OSS の有効化に使用するユーザー アカウントで、 Google Cloud に対して認証を行います。

        gcloud auth revoke
        gcloud auth application-default revoke
        gcloud auth login
        
      2. Assured OSS リソースを配置するプロジェクトを検索します。

        gcloud alpha projects search --query="displayName=PROJECT_NAME"
        

        PROJECT_NAME はプロジェクト名に置き換えます。

      3. Assured OSS リソースを配置するプロジェクトを設定します。

        gcloud config set project PROJECT_ID
        

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

      4. Assured OSS を設定するユーザー アカウントにロールを付与します。

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=user:email@domain.com \
          --role=roles/assuredoss.admin
        
        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=user:email@domain.com \
          --role=roles/serviceusage.serviceUsageAdmin
        
        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=user:email@domain.com \
          --role=roles/iam.serviceAccountAdmin
        

        ここで、email@domain.com はユーザー アカウントのメールアドレスです。

      5. プロジェクトで Assured OSS を有効にします。Assured OSS を有効にすると、Artifact Registry API も有効になります。

        gcloud services enable assuredoss.googleapis.com
        
      6. 既存のサービス アカウントを使用するのではなく、Assured OSS 用の新しいサービス アカウントを作成する場合は、次の手順に沿って行います。

        gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
          --description="Service account for using Assured OSS"
          --display-name="Assured OSS service account"
        

        SERVICE_ACCOUNT_NAME はサービス アカウントの名前に置き換えます(assuredoss など)。

      7. Assured OSS のサービス アカウントを構成します。

        gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
          --role roles/assuredoss.user
        

        次のように置き換えます。

        • SERVICE_ACCOUNT_NAME: サービス アカウントの名前(assuredoss など)
        • PROJECT_ID: プロジェクト ID
      8. Assured OSS リポジトリを作成して、Artifact Registry インスタンスに Assured OSS プロキシ サービスを設定します。すべての言語のリポジトリを作成する必要があります。リポジトリをプロビジョニングする Assured OSS プロキシ サービスは、米国リージョンのみをサポートしています。

        alias gcurlj='curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" -X'
        
        gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-java   -d '{"format": "MAVEN", "mode": "AOSS_REPOSITORY"}'
        
        gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-javascript   -d '{"format": "NPM", "mode": "AOSS_REPOSITORY"}'
        
        gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-python   -d '{"format": "PYTHON", "mode": "AOSS_REPOSITORY"}'
        

        PROJECT_ID は Assured OSS の設定時に選択したプロジェクトの ID に置き換えます。

        これらのリポジトリはキュレートされたポートフォリオからパッケージを自動的に pull できます。パッケージがキュレートされたポートフォリオから利用できない場合、リポジトリはリクエストを正規リポジトリにリダイレクトします。

      9. Assured OSS サービス アカウントごとにサービス アカウント キーを作成し、そのキーを JSON 形式でダウンロードします。

      10. コマンドラインで、ダウンロードした鍵ファイルに対して次のコマンドを実行して、base64 でエンコードされた文字列を取得します。

        base64 KEY_FILENAME.json
        

        KEY_FILENAME.json はダウンロードしたサービス アカウント キーの名前に置き換えます。

        base64 でエンコードされた文字列は Assured OSS のリモート リポジトリを設定するときに必要となります。

      11. パッケージをダウンロードするには、Assured OSS が各言語でプロビジョニングするエンドポイントを使用します。このエンドポイントをメモしておきます。

        • Java:
          https://us-maven.pkg.dev/PROJECT_ID/assuredoss-java
        • Python:
          https://us-python.pkg.dev/PROJECT_ID/assuredoss-python
        • JavaScript:
          https://us-npm.pkg.dev/PROJECT_ID/assuredoss-javascript

        PROJECT_ID は Assured OSS の設定時に選択したプロジェクトの ID に置き換えます。

      12. JFrog Artifactory や Sonatype Nexus など、組織のアーティファクト リポジトリ マネージャーを使用して Assured OSS を構成しパッケージをダウンロードします。

      13. 必要に応じて、使用可能な Java、Python、JavaScript パッケージを確認します。

        gcloud auth revoke
        gcloud auth application-default revoke
        gcloud auth login --cred-file=KEY_FILENAME.json
        

        KEY_FILENAME.json はダウンロードしたサービス アカウント キーの名前に置き換えます。

        export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILENAME.json
        

        KEY_FILENAME.json はダウンロードしたサービス アカウント キーの名前に置き換えます。

        gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-java/packages"
        gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-python/packages"
        gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-javascript/packages"
        

        PROJECT_ID は Assured OSS の設定時に選択したプロジェクトの ID に置き換えます。

      次のステップ