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

始める前に

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

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

Security Command Center Enterprise ティアが組織レベルで有効になっていることを確認します。

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

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

    組織で次のロール(複数の場合あり)が割り当てられていることを確認します。 Security Center 管理者、組織管理者

    ロールを確認する

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

      IAM に移動
    2. 組織を選択します。
    3. [プリンシパル] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。

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

    ロールを付与する

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

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

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

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

    プロジェクトに次のロールがあることを確認します。 Service Usage 管理者、サービス アカウント管理者、プロジェクト IAM 管理者

    ロールを確認する

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

      IAM に移動
    2. プロジェクトを選択します。
    3. [プリンシパル] 列で、自分または自分が所属するグループの行をすべて確認します。所属するグループについては、管理者にお問い合わせください。

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

    ロールを付与する

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

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

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

Google Cloud CLI を設定する

Google Cloud コンソールで Cloud Shell をアクティブにします。

Cloud Shell をアクティブにする

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

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、Go、JavaScript)ごとにプロビジョニングされます。これらのリポジトリはキュレートされたポートフォリオからパッケージを自動的に pull できます。パッケージがキュレートされたポートフォリオから利用できない場合、リポジトリはリクエストを正規リポジトリにリダイレクトします。プロキシ サービスは米国のリージョンのみをサポートしています。 詳細については、Assured OSS リポジトリ オプションをご覧ください。
    • 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
    • Go:
      https://us-go.pkg.dev/PROJECT_ID/assuredoss-go

    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. gcloud を使用して Assured OSS プレミアムを設定した後でセキュリティ メタデータ リポジトリにアクセスするには、Assured OSS で有効にしたサービス アカウントを記載して customer-support-aoss@google.com にメールを送信してください。
  9. 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"}'
    
    gcurlj POST https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories\?repositoryId\=assuredoss-go   -d '{"format": "GO", "mode": "AOSS_REPOSITORY"}'
    

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

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

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

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

    base64 KEY_FILENAME.json
    

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

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

  12. パッケージをダウンロードするには、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
    • Go:
      https://us-go.pkg.dev/PROJECT_ID/assuredoss-go

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

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

  14. 必要に応じて、使用可能な Java、Python、Go、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"
    gcurlj GET "https://artifactregistry.googleapis.com/v1/projects/PROJECT_ID/locations/us/repositories/assuredoss-go/packages"
    

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

次のステップ