シークレットと資格情報
シークレットは、API キー、パスワード、認証トークン、証明書、暗号化キーなど、機密性の高いシステムとデータへのアクセスを許可する資格情報です。 シークレットがリポジトリにコミットされると、そのシークレットは Git 履歴の一部になり、最新のコミットから削除された後でもアクセス可能なままになります。
コード リポジトリ内のシークレットは、自動スキャン ツールと未承認のユーザーによって検出できます。 パブリック リポジトリは特に脆弱ですが、プライベート リポジトリから漏洩した資格情報は、フォーク、CI/CD ログ、またはサードパーティの統合を通じて分散することもできます。
公開されたシークレットのセキュリティへの影響
公開されたシークレットは、いくつかの種類のセキュリティ インシデントにつながる可能性があります。
**未承認のアクセスと使用**
-
漏洩したクラウド プロバイダーの資格情報を使用して、アカウントにインフラストラクチャまたはサービスをプロビジョニングできます
-
データベース資格情報を使用すると、機密性の高い顧客または組織のデータにアクセスできます
-
サービス アカウント トークンは、運用システムへのエントリ ポイントを提供します
**運用とコンプライアンスの問題** -
漏洩した資格情報を使用してインフラストラクチャを変更または削除できます
-
公開されたシークレットからのデータ侵害により、GDPR、CCPA、およびその他のフレームワークの下で規制上のペナルティが発生する可能性があります
-
組織は、インシデント対応、資格情報のローテーション、システム修復のコストに直面する
**組織のリスク** -
漏洩したシークレットの公開は、顧客の信頼と組織の評判に影響を与えます
-
公開されたパッケージ レジストリ トークンを使用して、悪意のあるバージョンのソフトウェアを公開できます
-
独自の API キーまたはサービス資格情報が悪用される可能性がある
公開されたシークレットの財務上の影響
シークレット漏えいは、即時の費用から長期的なビジネスの結果まで、組織に直接および間接的なコストが発生する可能性があります。
**即時コスト**
-
漏洩した API キーからの未承認のクラウド リソースの使用により、コンピューティング インスタンス、ストレージ、またはデータ転送に対する料金が発生する可能性があります
-
侵害されたアカウントに対する暗号通貨マイニング操作により、インフラストラクチャに相当な料金が発生する可能性があります
-
緊急インシデント対応には、フォレンジック調査、セキュリティ監査、およびシステム間での資格情報のローテーションのためのリソースが必要です
**データ侵害のコスト** -
データ保護違反に対する規制上の罰金は、GDPR、CCPA、業界固有の規制の下で数百万ドルに達する可能性があります
-
法的費用には、調査、通知の要件、潜在的な訴訟が含まれます
-
影響を受けるお客様向けのクレジット監視と ID 保護サービス
**運用上の影響** -
侵害されたインフラストラクチャによるサービスの中断により、収益と生産性が失われる
-
セキュリティ インシデントへの対応に費やされたエンジニアリング時間は、製品開発からリソースを流用します
-
インシデントに続くセキュリティ ツールと監視コストの増加
**長期的なビジネスへの影響** -
セキュリティ インシデントの公開後の顧客離れ
-
サイバー責任の対象となる保険金の増加
-
セキュリティ評価またはコンプライアンス監査が失敗したため、ビジネス チャンスが失われました
シークレット漏えいの一般的なシナリオ
シークレットは通常、いくつかの一般的なパターンを使用してリポジトリに入ります。
**開発ワークフロー**
-
ローカル テスト中にハードコーディングされ、誤ってコミットされた資格情報
-
`.env` ファイルやコードとしてのインフラストラクチャ テンプレートなどの構成ファイル内のシークレット -
ドキュメント、Wiki、または README ファイル内の実際のトークンを含む資格情報の例
**リポジトリ管理** -
忘れられたが依然としてアクティブな資格情報を含むレガシーリポジトリ
-
GitHub の問題、pull request コメント、ディスカッション、または gists で共有されるシークレット
-
外部の共同作成者または請負業者によって導入された資格情報
**バージョン管理の課題** -
現在のコードから削除した後も、シークレットは Git 履歴に保持されます
-
資格情報は、フォークされたリポジトリ、バックアップ システム、ログに伝達されます
-
公開されたシークレットを含むパブリック リポジトリは、検索エンジンと特殊なスキャン サービスによってインデックスが作成されます
秘密セキュリティGitHub
GitHub には、シークレット漏えいの防止、検出、修復に役立つツールが用意されています。
1. 新しいシークレットが漏洩しないようにする
**リポジトリのプッシュ保護**を有効にして、`git push`操作中にコードをスキャンし、検出されたシークレットを含むコミットをブロックします。 これにより、開発者にリアルタイムのフィードバックを提供しながら、資格情報がリポジトリに入らないようにします。
自分の個人アカウント (この機能は "ユーザーのプッシュ保護" と呼ばれます) のプッシュ保護を有効にして、リポジトリ、フォーク、および GitHub全体で貢献するすべてのリポジトリに対するすべてのプッシュを保護するよう、共同作成者に勧めます。 これにより、個々の開発者は、組織レベルのポリシーを待たずにシークレットの漏洩を防ぐことができます。
2. 既存のシークレットを検出する
**
secret scanning
**を使用して、コミットされたシークレットのリポジトリを継続的に監視し、資格情報が検出されたときにアラートを受信します。 これにより、侵害された資格情報をすばやく取り消してローテーションできます。
次のステップ
組織を秘密漏えいから保護するには:
- プッシュ保護を有効にして、新しいシークレットがコミットされないようにします。
- クリックで secret scanning を有効にして、シークレット リークの検出を開始します。
- 開発チームのセキュリティで保護された資格情報管理プラクティスを確立します。