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 パッケージから選択できます。
  • 安全なプロキシを構成して Assured OSS の証明書とともに Java、Python、JavaScript パッケージをすべてダウンロードすると、知名度があり信頼性の高い Google がサプライヤーになります。
  • SPDX や CycloneDX などの業界標準の形式で提供される Assured OSS の SBOM と VEX を使用して、構成要素について詳しく把握します。
  • Google の改ざん履歴がないことを示す署名入り証明書により、使用しているパッケージの整合性に対する信頼度が高まります。
  • Google がキュレート済みパッケージを常時スキャンし、新しい脆弱性を検出、修正しているため、リスクを軽減できます。

始める前に

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

Security Command Center のエンタープライズ ティアを有効にする

Security Command Center のエンタープライズ ティアが組織レベルで有効になっており、設定ガイドの最初の 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 colunn 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 colunn 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 を設定する

      このページの gcloud CLI のサンプルは、次のいずれかの開発環境から使用できます。

      • Cloud Shell: gcloud CLI がすでに設定されているオンライン ターミナルを使用するには、Cloud Shell をアクティブにします。

        このページの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。セッションが初期化されるまで数秒かかることがあります。

      • ローカルシェル: ローカル開発環境で gcloud CLI を使用するには、gcloud CLI をインストールして初期化してください。

      Assured OSS を設定する

      コンソール

      1. Google Cloud コンソールで、Security Command Center の [リスクの概要] ページに移動します。

        [リスクの概要] に移動

      2. Security Command Center のエンタープライズ ティアを有効にした組織が表示されていることを確認します。

      3. [設定ガイドを読む] をクリックします。

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

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

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

      7. [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 が所有するプロジェクトのパッケージ メタデータと通知にアクセスする権限を、ユーザーとサービス アカウントに付与します。
      8. 指定された Assured OSS サービス アカウントごとにサービス アカウント キーを作成し、そのキーを JSON 形式でダウンロードします。

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

        base64 KEY_FILENAME.json
        

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

        Assured OSS のリモート リポジトリを設定する場合は、base64 でエンコードされた文字列が必要です。

      10. パッケージをダウンロードするには、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 に置き換えます。

      11. [次へ] をクリックします。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 は、ダウンロードしたサービス アカウント キーの名前に置き換えます。

        Assured OSS のリモート リポジトリを設定する場合は、base64 でエンコードされた文字列が必要です。

      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 に置き換えます。

      次のステップ