正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

シークレット検出

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

アプリケーションは、CI/CDサービス、データベース、外部ストレージなどの外部リソースを使用する場合があります。これらのリソースへのアクセスには認証が必要で、通常は秘密キーやトークンなどの静的な方法を使用します。これらの方法は、他の人と共有することを意図していないため、「シークレット」と呼ばれます。

シークレットが漏洩するリスクを最小限に抑えるために、常にリポジトリの外部にシークレットを保存してください。ただし、シークレットが誤ってGitリポジトリにコミットされることがあります。機密性の高い値がリモートリポジトリにプッシュされると、リポジトリへのアクセス権を持つ人は誰でも、そのシークレットを使用して承認されたユーザーになりすませるようになってしまいます。

シークレット検出は、アクティビティーをモニタリングして、次の両方を行います。

  • シークレットの漏洩を防止できるようにする。
  • シークレットが漏洩した場合に対応できるようにする。

多層的なセキュリティアプローチを採用し、利用可能なすべてのシークレット検出方法を有効にする必要があります。

  • シークレットプッシュ保護は、変更をGitLabにプッシュするときに、コミットをスキャンしてシークレットを探します。シークレットが検出された場合、シークレットプッシュ保護をスキップしない限り、プッシュはブロックされます。この方法により、シークレットが漏洩するリスクが軽減されます。
  • パイプラインシークレット検出は、プロジェクトのCI/CDパイプラインの一部として実行されます。リポジトリのデフォルトブランチへのコミットは、シークレットがないかスキャンされます。マージリクエストパイプラインでパイプラインシークレット検出が有効になっている場合、開発ブランチへのコミットはシークレットがないかスキャンされるため、デフォルトブランチにコミットされる前に対応できます。
  • クライアント側のシークレット検出は、イシューとマージリクエストの両方で、GitLabに保存される前に、説明とコメントをスキャンしてシークレットを探します。シークレットが検出された場合は、インプットを編集してシークレットを削除するか、誤検出の場合は説明またはコメントを保存できます。

シークレットがリポジトリにコミットされると、GitLabは脆弱性レポートにその漏洩を記録します。一部のシークレットタイプでは、GitLabは漏洩したシークレットを自動的に失効させることもできます。漏洩したシークレットは、できるだけ早く失効させて交換する必要があります。シークレット固有の修正ガイダンスについては、脆弱性レポートに記載されている詳細を確認してください。