トラブルシューティング

このページでは、Secure Source Manager に関する問題を解決する方法について説明します。

リポジトリの作成時のエラー メッセージ

リポジトリを作成しようとすると、次のエラーが表示されます。

There was an error while loading /repo/create. Try refreshing the page.

この問題は、次の場合に発生します。

  • プロジェクトで Secure Source Manager API が有効になっていない。
  • プロジェクトに対するリポジトリ管理者のロール、または Secure Source Manager インスタンスにリポジトリを作成する権限がありません。

この問題を解決するには:

  • プロジェクトで Secure Source Manager API を有効にします。
  • 次のロールを付与するよう管理者に依頼してください。
    • プロジェクトに対するリポジトリ管理者(roles/securesourcemanager.repoAdmin)ロール。
    • Secure Source Manager インスタンスのインスタンス アクセサー(roles/securesourcemanager.instanceAccessor)。
    • Secure Source Manager インスタンスのインスタンス リポジトリ作成者(roles/securesourcemanager.instanceRepositoryCreator)。

詳しくは、IAM によるアクセス制御をご覧ください。

Mac でリポジトリのクローンを作成する際のエラー メッセージ

リポジトリのクローンを作成しようとすると、次のエラーが表示されます。

git: 'credential-gcloud.sh' is not a git command.  See 'git --help'.
fatal: Authentication failed for [repo-url]

この問題は、次のような場合に発生します。

  • gcloud CLI が Homebrew またはその他の標準以外のインストールを使用してインストールされている。
  • git-credential-gcloud.sh が PATH に追加されていない。

この問題を解決するには:

  • source $HOMEBREW_PREFIX/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc を実行する
  • 次のコマンドを実行して、git-credential-gcloud.sh がパスに含まれていることを確認します。

    which git-credential-gcloud.sh
    

「一致なし」エラーで SSH 接続が失敗する

SSH 経由で Git オペレーションを試みると、次のいずれかのエラー メッセージが表示されることがあります。

  • Unable to negotiate with <host> port <port>: no matching key exchange method found.
  • Unable to negotiate with <host> port <port>: no matching cipher found.
  • Unable to negotiate with <host> port <port>: no matching MAC found.

この問題は、SSH クライアントが Secure Source Manager に必要な暗号アルゴリズムをサポートしていない場合に発生します。これは、古い SSH クライアントを使用している場合や、サポートされているアルゴリズムを使用するようにクライアントが構成されていない場合に発生することがあります。

Secure Source Manager には、次のいずれかのアルゴリズムが必要です。

  • 鍵交換アルゴリズム: curve25519-sha256、diffie-hellman-group14-sha256
  • 暗号: chacha20-poly1305@openssh.com、aes128-ctr、aes192-ctr、aes256-ctr、aes128-gcm@openssh.com、aes256-gcm@openssh.com
  • MAC: hmac-sha2-256-etm@openssh.com、hmac-sha2-256

この問題を解決するには、これらのアルゴリズムをサポートする最新バージョンに SSH クライアントを更新します。

Git HTTPS リクエストが権限拒否エラーまたは不正エラーで失敗する

HTTPS 経由で Git コマンドを試行すると、権限拒否または未承認のエラー メッセージが表示されます。

この問題は、次のいずれかが発生した場合に発生します。

  • グローバル Git 構成ファイルに Secure Source Manager 認証ヘルパーがありません。
  • Secure Source Manager 認証ヘルパーを呼び出して新しい認証情報を取得する代わりに、Git の組み込み認証情報ストアが使用されています。
  • Secure Source Manager 認証ヘルパーを呼び出して新しい認証情報を取得する代わりに、システム認証情報ヘルパーが使用されています。
  • HTTPS を使用して Secure Source Manager リポジトリを操作するときに、古いバージョンの Google Cloud CLI が使用されている。Secure Source Manager には、Google Cloud CLI バージョン 395.0.0 以降が必要です。

この問題を解決するには:

  1. 次のコマンドを実行して、グローバル Git 構成の内容を確認します。

    git config --list | grep credential
    
  2. macOS で *credential*.helper=store、Windows OS で credential.helper = manager のような行が表示された場合は、それらの行を削除し、gcloud auth login を使用して再認証してから、Git コマンドを再度試してください。

  3. レスポンスに credential.https://*.*.sourcemanager.dev.helper=gcloud.sh(macOS または Linux の場合)または credential.https://*.*.sourcemanager.dev.helper=gcloud.cmd(Windows の場合)が含まれていない場合は、Secure Source Manager 認証ヘルパーをグローバル Git 構成に追加します。

    Linux

    1. Secure Source Manager 認証ヘルパーをグローバル Git 構成に追加するには、次のコマンドを実行します。

      git config --global credential.'https://*.*.sourcemanager.dev'.helper gcloud.sh
      
    2. 次のコマンドを実行して、認証ヘルパーの行がグローバル Git 構成に追加されていることを確認します。

      git config --list | grep credential
      

      出力には credential.https://*.*.sourcemanager.dev.helper=gcloud.sh が含まれます。

    3. gcloud auth login を実行して認証します。

    4. Git コマンドを実行して認証をテストします。

    Windows

    1. Git と Google Cloud CLI をインストールするの手順に沿って、gcloud CLI のバージョンを確認します。
    2. Secure Source Manager 認証ヘルパーをグローバル Git 構成に追加するには、次のコマンドを実行します。

      git config --global credential.https://*.*.sourcemanager.dev.helper gcloud.cmd
      
    3. 次のコマンドを実行して、認証ヘルパーの行がグローバル Git 構成に追加されていることを確認します。

      git config --list | grep credential
      

      出力に credential.https://*.*.sourcemanager.dev.helper=gcloud.cmd が含まれているはずです。

    4. gcloud auth login を実行して認証します。

    5. Git コマンドを実行して認証をテストします。

  4. 以前に Git ホストの認証情報を gcloud.sh に設定したにもかかわらず、'credential-gcloud.sh' is not a git command のようなエラーが発生した場合は、Git がマシンの PATH で git-credential-gcloud.sh スクリプトを見つけられないことを示しています。PATH を更新するか、gitconfig ファイルの gcloud.sh を絶対パスに置き換えます。

無効なトークンが原因で Git HTTPS リクエストが失敗する

Git HTTPS オペレーションのパスワードとして、有効な OAuth トークンが必要です。これは通常、Git 認証情報ヘルパーによって処理されますが、他の方法(アプリケーションのデフォルト認証情報など)を使用して生成された OAuth トークンでも機能します。

無効なトークンが原因で Git リクエストが拒否された場合、通常は受信トークンからユーザー情報を抽出できなかったことを意味します。このエラーには、次のような複数の原因が考えられます。

  • gcloud CLI のログインの有効期限が切れている可能性があります。

    gcloud auth login を使用してもう一度ログインします。

  • トークンのスコープが不十分です。OAuth トークンには次のスコープが必要です。

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/userinfo.email

    トークンのスコープを確認するには、curl https://oauth2.googleapis.com/tokeninfo?access_token=${TOKEN} を呼び出します。

  • GKE フリートの Workload Identity から生成されたトークンを使用している。

  • 特定の境界外でトークンを使用できないようにする組織ポリシー(コンテキストアウェア アクセスなど)がある。

    この問題を解決するには、git_helper_use_adc gcloud CLI 構成プロパティを true に設定し、アプリケーションのデフォルト認証情報(ADC)を更新します。

    1. application-default を使用してログインします。

      gcloud auth application-default login
      
    2. git_helper_use_adc プロパティを設定します。

      gcloud config set auth/git_helper_use_adc true
      

認証情報が古いため、macOS で Git HTTPS リクエストが 403 エラーで失敗する

macOS で HTTPS 経由で Git オペレーションを実行すると、403 エラーが発生することがあります。

この問題は、iCloud キーチェーンを使用している場合に macOS で発生することがあります。iCloud キーチェーンは、古いトークンを保存して同期することで、gcloud CLI 認証トークンを妨げる可能性があります。これらの古いトークンが原因で、gcloud auth login を使用して再認証した後でも、Secure Source Manager での認証が失敗することがあります。

この問題を解決するには、キーチェーン アクセスから古い認証情報を手動で削除します。

  1. Mac でキーチェーン アクセス アプリケーション(/Applications/Utilities/ にあります)を開きます。
  2. sourcemanager.dev を検索します。
  3. *.*.sourcemanager.dev または Secure Source Manager インスタンスの URL と一致する「インターネット パスワード」種類のエントリを削除するには、エントリを右クリックして [削除] を選択します。
  4. エントリを削除したら、Git オペレーションを再試行します。gcloud CLI での再認証を求められることがあります。Git オペレーションが引き続き失敗する場合は、gcloud auth login を実行してからもう一度お試しください。

GKE フリートの Workload Identity で Kubernetes サービス アカウント(KSA)トークンを使用すると、SSM がエラーを返す

GKE フリート Workload Identity を使用する場合、Secure Source Manager では未加工の KSA トークンはサポートされません。これらのトークンを使用するとエラーが発生します。

この問題を解決するには、サービス アカウントの権限を借用し、ワークロードを Google サービス アカウントにバインドする必要があります。また、次のアノテーションを KSA 構成に追加する必要があります。

iam.gke.io/gcp-service-account: SERVICE_ACCOUNT@PROJECT_ID.

ウェブ インターフェースのプロダクト セレクタにプロジェクトが表示されない

Secure Source Manager ウェブ インターフェースのプロダクト セレクタを使用すると、プロジェクトが表示されない。

この問題は、Secure Source Manager に複数のログイン認証情報がある場合に発生します。

この問題を解決するには:

  • Secure Source Manager インスタンスの URL に /_oauth/consent を追加して、Cookie を削除します。

    たとえば、インスタンス URL が https://my-instance-098765432123.us-central1.sourcemanager.dev/ の場合は、ブラウザのアドレスバーに https://my-instance-098765432123.us-central1.sourcemanager.dev/_oauth/consent と入力し、正しい認証情報でログインします。

トリガー ファイルがビルドをトリガーしない

トリガー ファイルを送信してもビルドが想定どおりにトリガーされない場合は、次のいずれかの問題が発生している可能性があります。

  • トリガー ファイルがデフォルト ブランチにありません。この問題を解決するには、トリガー ファイルをデフォルトのブランチに移動します。
  • トリガー ファイルの形式が無効です。このエラーは、リポジトリ ページに Build triggers configuration error: ... というバナーで示されます。この問題を解決するには、トリガー ファイルのスキーマをご覧ください。トリガー ファイルの構成が正しい場合、リポジトリ ページのバナーに Valid build triggers configuration と表示されます。

ビルドトリガーの構成エラー

triggers.yaml ファイルを Secure Source Manager リポジトリに送信すると、次のエラーがバナーに表示されます。

Build cannot be created.

この問題は、次の理由で発生します。

  • Cloud Build のビルド構成ファイルのオプションまたは形式が無効です。
  • Secure Source Manager サービス エージェントに、リポジトリのユーザー管理サービス アカウントに対するサービス アカウント トークン作成者のロールが付与されていない。
  • ユーザー管理のサービス アカウントに、Cloud Build サービス アカウントのサービス アカウント ユーザーのロールが付与されていない。
  • ユーザー管理のサービス アカウントに、ビルドが実行されるプロジェクトの Cloud Build 編集者のロールが付与されていない。
  • 組織のポリシー iam.disableCrossProjectServiceAccountUsage が、ユーザー管理のサービス アカウントの使用をブロックしている(サービス アカウントが別のプロジェクトにある場合)。

問題を解決するには:

  • 正しいトリガー ファイル スキーマに従っていることを確認します。
  • 必要なロールがすべて付与されていることを確認します。必要なサービス アカウントのロールをご覧ください。
  • 別のプロジェクトでユーザー管理のサービス アカウントを使用している場合は、サービス アカウントをホストしているプロジェクトで組織のポリシー iam.disableCrossProjectServiceAccountUsage が無効になっていることを確認します。

実行中にビルドが失敗する

ビルドが正常にトリガーされたものの、実行中に失敗した場合、関連する commit のステータスは Failure になります。

失敗したビルドのトラブルシューティングを行うには、リポジトリ ページの失敗した commit ステータスの横にある [詳細] をクリックします。

Cloud Build の実行ログが開きます。Cloud Build でのビルドのトラブルシューティングの詳細については、ビルドエラーのトラブルシューティングをご覧ください。

機密データが検出されたため、Git push が拒否されました

シークレット スキャンが有効になっているリポジトリに commit を push すると、push が失敗し、次のようなエラー メッセージが表示されます。

remote: Push rejected: Sensitive data detected.

この問題は、シークレット スキャンまたはカスタム検査テンプレートが commit 履歴で機密情報を特定した場合に発生します。

この問題を解決するには:

  • git reset --soft を使用して問題のある commit を元に戻し、機密情報を削除してから再度 commit します。
  • 検出された情報が許容範囲内で、適切な権限がある場合は、-o dlpskip=true push オプションを使用してチェックをバイパスします。

    git push -o dlpskip=true origin BRANCH_NAME
    

再作成後に 1 日あたりの割り当てがリセットされない

Secure Source Manager インスタンスを削除し、同日に同じインスタンス ID で再作成すると、シークレット スキャンの割り当てが不足しているか、上限に達したというエラーが表示されることがあります。

この問題は、シークレット スキャンの割り当てが、インスタンス ID にリンクされた 1 日あたりのレートに基づく割り当てであるために発生します。同日に同じ ID のインスタンスを削除して再作成しても、割り当ての使用量はリセットされません。

この問題を解決するには、次のいずれかを行います。

  • 2 日目まで待って、1 日の割り当て使用量が自動的に 0 にリセットされるようにします。
  • 別の一意のインスタンス ID を使用してインスタンスを再作成します。
  • シークレット スキャンを一時的にスキップするか、割り当ての増加をリクエストしてください。詳細については、使用可能な割り当てを増やすをご覧ください。

リポジトリ サービス アカウントの構成中にエラーが発生する

ユーザー管理のサービス アカウントでリポジトリを作成または更新しようとすると、次のエラーが表示されます。

Permission denied on resource ...

この問題は、リポジトリに関連付けようとしているサービス アカウントにサービス アカウント ユーザー(roles/iam.serviceAccountUser)ロールがない場合に発生します。Secure Source Manager は、サービス アカウントとして機能する権限があることを確認してから、サービス アカウントをリポジトリに関連付けることを許可します。

この問題を解決するには、サービス アカウントにサービス アカウント ユーザーのロールを付与するよう管理者に依頼してください。