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

Assured Open Source Software(Assured OSS)を使用すると、Google が独自のデベロッパー ワークフローに利用している OSS パッケージを使用して、コードのセキュリティを強化できます。Assured OSS を使用すると、デベロッパーは Google が自社のオープンソースの依存関係を保護するために適用しているセキュリティの専門知識と経験を利用できます。

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

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

始める前に

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

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

Security Command Center のエンタープライズ ティアが組織レベルで有効化されており、設定ガイドの最初の 6 つの手順が完了していることを確認します。

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

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

  1. 組織に次のロールがあることを確認します。 Security Center Admin, Organization Admin

    ロールを確認する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. 組織を選択します。
    3. [プリンシパル] 列で、自分のメールアドレスを含む行を見つけます。

      自分のメールアドレスがその列にない場合、ロールは割り当てられていません。

    4. 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうかを確認します。

    ロールを付与する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. 組織を選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、自分のメールアドレスを入力します。
    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。

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

  1. プロジェクトに次のロールがあることを確認します。 Service Usage Admin, Service Account Admin, Project IAM Admin

    ロールを確認する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [プリンシパル] 列で、自分のメールアドレスを含む行を見つけます。

      自分のメールアドレスがその列にない場合、ロールは割り当てられていません。

    4. 自分のメールアドレスを含む行の [ロール] 列で、ロールのリストに必要なロールが含まれているかどうかを確認します。

    ロールを付与する

    1. Google Cloud コンソールの [IAM] ページに移動します。

      [IAM] に移動
    2. プロジェクトを選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、自分のメールアドレスを入力します。
    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 プロキシ サービスは、US リージョンのみをサポートします。

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

次のステップ