シークレットの散逸とは?
- IAM 用語集
- シークレットの散逸とは?
シークレットの散逸とは、APIキー、パスワード、暗号化キーなどのシークレットが、組織のインフラ、コードリポジトリ、コミュニケーションチャネル全体に無秩序に広がる状態です。これらの認証情報は、一元管理されたシークレットマネージャーに保管される代わりに、ソースコードに直接記述されたり、メッセージアプリで共有されたり、各種エンドポイントに分散したりします。その結果、シークレットの所在を完全に把握できず、全体像が見えにくくなります。セキュリティチームは、こうしたシークレットを効果的に監視、ローテーション、無効化できません。
組織の規模が拡大すると、シークレットの数も急速に増加し、それに伴って認証情報を悪用した攻撃やサプライチェーンの脆弱性に関連するリスクも高まります。
シークレットとは?仕組みと管理方法を解説
シークレットとは、人間ではなくアプリケーションやサービス、システムが認証に使用する認証情報です。代表的な例として、APIキー、データベース接続文字列、暗号化キー、アクセストークン、SSHキー、デジタル証明書などがあります。1つのシークレットで機密性の高いシステムやデータにアクセスできる場合があるため、シークレットは、チームが自由に共有するユーザー名などの識別子よりも、はるかに厳格に保管・管理する必要があります。
シークレットの散逸が起こる原因
シークレットの散逸は通常、機密性の高い認証情報が、一貫した監視や管理のないまま作成・配布されることで発生します。
認証情報の作成と増加
現代のIT環境では、人間のユーザーだけでなく、サービスアカウント、ボット、アプリケーションワークロードなどの非人間アイデンティティ (NHI) も広く利用されています。これらはAPIキーやトークンなどのシークレットを使用して認証を行います。組織でクラウドネイティブアーキテクチャの導入が進むにつれて、シークレットの数は急速に増加します。新しいシステム、ワークロード、連携が追加されるたびに認証が必要となり、攻撃対象領域が拡大するとともに、管理されていないシークレットが増える可能性も高まります。組織の規模が拡大し、非人間アイデンティティの活用が進むにつれて、シークレットの散逸のリスクが高まります。
シークレットの管理・共有方法のばらつき
セキュリティポリシーが整備されていても、開発者やチームによって認証情報の扱いは異なります。ある開発者は認証情報をローカルに保存し、別の開発者はソースコードに直接記述したり、メッセージツールで共有したりするかもしれません。認証情報をコピー&ペーストするよりも安全な手順のほうが手間がかかる場合、ユーザーは一般に、セキュリティよりも作業の速さを優先しがちです。複数のチームが数百ものサービスに対して、時間をかけて同じような方法を取り続けると、シークレットが組織全体に無秩序に広がり、管理できない状態になります。
シークレットの一元管理の欠如
シークレットを一元管理していなければ、組織はシークレットの保存場所、アクセス権を持つユーザー、使用状況を正確に把握できません。こうした可視性の欠如により、セキュリティインシデントの発生後や従業員の退職時に、認証情報をローテーションまたは無効化することが難しくなります。その結果、セキュリティチームはシークレットを事前に統制するのではなく、問題が起きてから対応せざるを得なくなります。
ライフサイクル管理の不備
多くの場合、シークレットは一時的な用途のために作成されますが、プロジェクトの完了後も適切に管理または削除されないまま残されています。使用されていない認証情報や重複した認証情報が複数のシステムに残り続けることで、時間の経過とともにリスクが高まります。古いシークレットや使用されていないシークレットがローテーションまたは削除されない場合、コードベースやリポジトリ、長い間使われていない設定ファイルへのアクセスが期限なく許可された状態になる可能性があります。ライフサイクル管理に関するポリシーが定められていないと、アクセス可能でありながら管理されていない古いシークレットが組織内に蓄積され、システム全体でシークレットの散逸がさらに広がります。
シークレット散逸の兆候
次のいずれかに心当たりがある場合は、シークレットが散逸している可能性があります。
- シークレットが複数の場所に保管されており、コピーがいくつ存在するのか誰も把握していない。
- 認証情報がチャット、メール、共有ドライブで共有されている。
- シークレットがソースコード、設定ファイル、CI/CDパイプラインに直接記述されている。
- 特定の認証情報の保管場所を把握している従業員が、少数しかいない。
- 古いプロジェクトや退職した従業員の認証情報が、現在も有効なままになっている。
- 依頼されても、組織内のシークレットを漏れなく正確に把握した最新の一覧を、誰もすぐに作成できない。
シークレットの散逸がもたらすリスク
シークレットが適切な監視や管理のないまま広範囲に分散すると、その影響は組織のあらゆる領域に及びます。侵害された認証情報は、データ侵害の最も一般的な原因の一つです。だからこそ、散在して管理されていないシークレットは非常に危険です。ここでは、不適切に管理されたシークレットの主なリスクを紹介します。
- データ漏えい: システムやツールに散在するシークレットは、データ漏えいによって外部に流出する可能性が高くなります。1つのシークレットが露出するだけで、機密データや重要なシステムへのアクセスを許してしまう可能性があります。
- システム侵害: 適切に管理されていないシークレットが侵害されると、それを悪用してインフラ内を横展開し、権限を昇格させられる可能性があります。
- チームの生産性低下: セキュリティチームやDevOpsチームは、優先度の高い業務に取り組む代わりに、シークレットの所在を突き止めたり、分散した認証情報を管理したりするために時間を費やすことになります。
- コンプライアンスおよび金銭的影響: 不適切に管理されたシークレットが情報漏えいにつながると、規制上の罰金、インシデント対応費用、法的責任が発生する可能性があります。PCI DSS、HIPAA、SOC 2の要件では、情報漏えいが発生したかどうかにかかわらず、認証情報へのアクセスを管理していることを証明できなければ、それ自体がコンプライアンス上の指摘事項となります。
- 評判への悪影響: 不適切に管理されたシークレットが原因の情報漏えいは、特に顧客から機密データを預かる組織にとって、長期的な損害につながる可能性があります。失われた信頼や取引関係は、インシデント発生から何年も影響を残すことがあります。
シークレットの散逸の代表例
シークレットの散逸は、一般に次のような形で現れます。
- ソースコードに直接記述されたシークレット: 開発者が、シークレットを埋め込んだコードをリポジトリにコミットすることがあります。パブリックリポジトリでは、シークレットをローテーションしない限り、直ちに公開され、その状態が半永久的に続きます。プライベートリポジトリであっても、リポジトリが侵害された場合の被害範囲を広げることになります。シークレットスキャンでこうした露出を検出できますが、検索エンジンやサードパーティのスキャナーにすでにインデックス化されたシークレットは、削除した後も危険にさらされ続けます。
- 複数の場所に保存されたAPIキー: チームがAPIキーを実行時に注入するのではなく、設定ファイルにコピーすると、同じシークレットが複数の場所に保存されることになります。シークレット管理を行っていなければ、どこにコピーが存在するのか誰も把握できず、キーをローテーションしたり、アクセスを無効化したりできません。
- CI/CDパイプラインで露出するシークレット: 設定ファイル、ビルドログ、サードパーティ製CI連携に埋め込まれたシークレットは、コードに直接アクセスできなくても、パイプラインの実行権限を持つ人なら誰でも閲覧できる可能性があります。
- 放置された認証情報: 古いプロジェクトや退職した従業員に関連するシークレットは、目的を終えた後も長期間にわたって有効なまま残ることがあります。アクセス可能でありながら、継続的な監視の対象外になっています。
- システム間で重複するシークレット: 同じシークレットが複数のチームや環境に複製されると、アクセス制御を一貫して適用できなくなります。
- 安全性の低い共有方法: メッセージアプリやメールで送信されたシークレットは、確実に追跡できません。誰が閲覧したのか、どこに転送されたのか、どのように保存されたのかを把握することもできません。
シークレットの散逸リスクを軽減する方法
シークレットの散逸を抑えるには、シークレットの保管、アクセス、管理の方法を一元化する必要があります。シークレットマネージャーを利用すれば、組織内のすべてのシークレットを管理し、その全体像を把握できます。
シークレットを安全なボルトで一元管理する
認証情報がファイルやリポジトリに分散するのを防ぐため、すべてのシークレットを専用のシークレットマネージャーに保管します。一元管理された暗号化ボルトを、認証情報の保管、アクセス、配布における唯一の信頼できる情報源として利用できます。
最小権限アクセスを徹底する
すべてのユーザーが、すべてのシークレットにアクセスする必要はありません。最小権限アクセスでは、各ユーザーやサービスに必要なシークレットだけを、必要な期間に限って付与します。そのため、認証情報が侵害された場合でも、被害を大幅に抑えられます。
リポジトリ内のシークレットをスキャンする
一元管理を機能させるには、まず既存のシークレットの散逸を整理する必要があります。シークレットスキャンツールを使えば、リポジトリ、設定ファイル、ビルド成果物に残っている認証情報を検出できます。シークレットが適切に管理されていると思い込む前に初回スキャンを実行し、その後は継続的なスキャンを設定して、新たな露出を検出できるようにします。
認証情報のローテーションを自動化する
自動ローテーションを利用すれば、規模の拡大に対応できない手作業に頼らず、シークレットを常に更新された状態に保てます。シークレットが露出する期間を短縮し、数百もの認証情報のローテーションを追跡する負担もなくせます。
可視性と監査を強化する
シークレットの保存場所や使用状況を含む最新の一覧を、リアルタイムで把握します。こうした可視性があれば、チームは不審な挙動や所有者不明のシークレットを見つけ、インシデントにも迅速に対応できます。
シークレットのライフサイクルポリシーを定め徹底する
シークレットの作成、ローテーション、廃止のタイミングに関する明確なルールを定め、可能な限り自動的に適用します。不要になったシークレットは放置せず、無効化する必要があります。
これらすべてを大規模に実現するには、専用のシークレットマネージャーを利用するのが最も効果的です。Keeperシークレットマネージャーは、すべてのシークレットを1か所の暗号化された保管場所に集約し、組織のシークレット管理を一元化します。チームは、インフラ全体に散在する認証情報を探し回るのではなく、信頼できる唯一の情報源からシークレットを追跡・監査できます。