2-2-1-2-シークレット管理 (Secrets-Management)

機密情報がリポジトリにプッシュされないようにするにはどのようにすればよいでしょうか?

これは OWASP Top Ten issues の一つであり、 いくつかのバグバウンティの記事がこの種の問題に関連しています。たとえばハードコードされたクレデンシャルが誤ってプッシュされたなどです。

コミットやリポジトリをスキャンして、パスワード、秘密鍵、社外秘などの機密情報を検出する必要があります。 図のようなプロセスに従います。

理想的なアプローチは機密データがリポジトリにヒットする前に露出を検出して防止することです。 なぜならそれらは履歴に表示されるからです。コードホスティングプラットフォームの場合、シークレットはウェブ上に残り、 リポジトリから削除した後でも検索できます。

補完的なアプローチとしてはリポジトリをスキャンして機密情報を探し、それを削除することです。 クレデンシャルが漏洩した場合、それはすでに危険な状態であり、無効にすべきであることに注意してください。

複数の場所でシークレットを検出する

  • 既存のシークレットを検出する リポジトリ内の既存のシークレットを検索します。

  • プレコミットフックを使用する シークレットがコードベースに入ることを防ぐため。

  • パイプラインでシークレットを検出する

なぜシークレットを検出するのか?

  • シークレットがハードコードされていないこと。

  • シークレットが暗号化解除されていないこと。

  • シークレットがソースコードに保存されていないこと。

  • コード履歴に不注意によるシークレットが含まれていないこと。

シークレットをいつどこで検出するか?

そうですね、最適な場所は pre-commit の場所です。これによりシークレットが実際にコードベースに入る前にインターセプトされ、開発者やコミットした人がメッセージを受け取ることができます。もう一つの場所はビルドサーバーまたは build プロセスです。ビルドサーバーは既にコミットされているソースコードを取得して、ソースコードを解析します。新しいシークレットが含まれていたり、既知のシークレットが含まれていた場合にそのシークレットが実際に妥当性確認や監査されます。


ここではリポジトリを自動的にスキャンして機密情報を探すのに役立つツールを紹介します。 スキャンはパイプラインに直接実装でき、再現性と効率性に優れています。

ツール:

  • オープンソース:

    • gittyleaks - git リポジトリの機密情報を検索します

    • git-secrets - シークレットとクレデンシャルを git リポジトリにコミットできないようにします

    • Repo-supervisor - コードのセキュリティ設定ミスをスキャンし、パスワードとシークレットを検索します

    • truffleHog - git リポジトリから高エントロピー文字列とシークレットを検索し、コミット履歴を深く掘り下げます

    • Git Hound - 機密データのコミットを防止する git プラグインです

    • Github Secret Scanning - GitHub に組み込まれたシークレット検出用の機能です。

  • プロプライエタリソフトウェア:

    • GitGuardian - ソースコードからシークレットを締め出します

    • Spectralops - 開発者ファーストのクラウドセキュリティです

    • TruffleSecurity - シークレットを解き明かします

    • GitHub Advanced Security - GitHub はリポジトリをスキャンして既知の種類のシークレットを検出し、誤ってコミットされたシークレットの不正使用を防ぎます

    • BluBracket - コード内のシークレットとクレデンシャルを防ぎます

    • Nightfall - クラウド上のシークレットと鍵を見つけて保護します

Last updated