シークレット管理とは?その課題やベストプラクティスを解説

特権アクセス管理

シークレットとは?

シークレットとは、システムやアプリケーションにアクセスする際に必要になるデジタル認証情報のことを指します。特に、DevSecOps※などの開発運用プロセスにおいて重要な概念です。ユーザー名、パスワード、パスフレーズ、認証トークン、SSHキー、SSL/TLS証明書、アプリケーションキー、APIキーなどが該当します。

※DevSecOpsは、システムの開発と運用を統合的に行う「DevOps」に、セキュリティを融合した手法・概念です。

シークレットのライフサイクル

企業におけるシークレットのライフサイクルは、シークレットがシステムで自動的に生成された、または手動で作成された時点から始まります。シークレットは、生成された後、シークレット管理システムやボールト(機密情報を保管する暗号化されたストレージ)などの保護された環境に格納されます。一般的なライフサイクル管理では、異常検知のために、シークレットへのアクセスや利用状況が監視されます。不要になったシークレットは、権限が有効なまま放置される状態や不正な復元を防ぐために、削除されます。

シークレット管理とは?

シークレットは、企業運営に欠かせないシステム処理やフローで使用される、サービスやアプリケーションにアクセスするための認証情報です。そして、シークレット管理とは、シークレットへのアクセスを制御し、シークレットをセキュアに保管・管理するプロセスを指します。

シークレットの種類

通常、企業で取り扱うシークレットの種類は、社内のIT方針や運用体制によって異なります。一般的には、以下のようなシークレットが主に使用されています。パスワード:ユーザーの本人確認を行うための認証情報

  • 証明書:ネットワーク上で通信の暗号化や通信相手の証明に使われるデジタル証明書
  • SSHキー:主に社内ネットワークで安全な接続や認証に使われる暗号鍵
  • 認証トークン:OAuthに対応したデバイス間での認可に使われるトークン
  • ハードコーディングされたシークレット:アプリケーションのコードやDevOpsの設定ファイルなどに直接書き込まれた機密情報
  • サービスアカウントの認証情報:サービスがリソースにアクセスする際に使う認証情報
  • PIN:個人認証用の暗証番号
  • セッションCookie:ユーザーの操作状態をブラウザに安全に維持するためのCookie

企業におけるシークレット管理の重要性

シークレット管理は、組織が大きくなればなるほど、情報システム部門やDevOpsチームにとって避けては通れない課題となります。組織の成長に伴い、当然コードベースやプロセスも拡大・増加します。結果として、アプリケーションやマイクロサービス、開発・自動化ツール、コンテナやオーケストレーション環境などで使用されるシークレットも激増します。このようなIT環境では特に、シークレット管理を適切に行わないと多くの問題が発生します。

認証情報は、一般的にファイルやスクリプトにプレーンテキストで保存されます。そして、CI/CD(継続的インテグレーション/継続的デリバリー)パイプラインや自動化されたタスク、開発フローに関わる担当者間で共有され利用されます。つまり、適切な計画や連絡を行わずに認証情報を変更すると、複数の業務プロセスに連鎖的に影響を及ぼす可能性があります。

さらに、このような認証情報が不注意によって流出した場合、攻撃者に悪用され、クリティカルな情報システムが侵害される可能性があります。そのため、不正アクセスや悪用を防ぐには、シークレットを適切に保護・管理する体制が必要になります。

この課題は、シークレット管理ソリューションによって解決できます。効果的なシークレット管理ソリューションを導入すれば、ハードコーディングのリスクを回避し、暗号化されたデジタルストレージでシークレットを一元管理できます。これにより、シークレットの安全な取得・更新・追跡が可能になります。

シークレット管理における主な課題

シークレット管理に関連する一般的なリスクと注意事項は、次のとおりです。

01. シークレットの散在とデータ侵害のリスク

管理が行き届いていないと、コードに埋め込まれたAPIキーや、複数のシステムに散在するパスワードなどが無秩序に増えます。結果として、攻撃者にデータを盗難・侵害されるリスクが高まり、組織全体の評判悪化や、多額の経済的な損失を招きかねません。

02. 追跡・管理の困難さ

シークレット管理が適切に行われていないと、システム処理やタスクフローで認証に使われるシークレットの利用状況を追跡できません。その結果、セキュリティ担当者がシークレットの不正利用を未然に防ぐことは困難になります。

03. システム停止や業務混乱の可能性

ハードコーディングされた認証情報が計画や承認なしに変更された場合、サービスやプロセスで連鎖的に障害が発生し、業務や事業全体に影響を及ぼす可能性があります。

04. コンプライアンス違反

データ保護に関する規制が各業界で存在します。シークレットが適切に管理されていない場合、規制違反と見なされ、罰金やその他の処罰が課される可能性があります。

シークレット管理における特権アクセス管理(PAM)ツールの役割

IT環境のシステム処理やワークフローが増加・複雑化する中で、重要となるのは効果的なシークレット管理の導入です。具体的には、組織内で分散しているシークレットの定期的なスキャン・検出、ローテーション、リアルタイム監視などの仕組みが必要になります。

前述のとおり、手動管理を行うと、シークレットが散在し管理が行き届かなくなります。特に、シークレットのハードコーディングは、管理に手間がかかる上に、セキュリティリスクにもなります。この解決策としてシークレット・パスワード管理ツールが挙げられますが、依然として課題が残ります。現在市場に出回っているシークレット管理ツールは、特定の環境(KubernetesやDocker、Jenkinsなど)に特化しており、他のツールに対応していない場合が多いです。一方、近年注目を集めているアプリケーション向けのパスワード管理ツールは、取得・保存に限った基本機能しか備わっていません。

多くの業界でコンプライアンスが急務になりつつある中で、シークレットを保管するだけでは対策として不十分です。セキュアな保管に加えて、シークレットの定期ローテーションや利用状況の監視、認証されるユーザーのアクティビティやプロセスの監査も欠かせません。効果的かつ徹底的なコンプライアンスを実現し、業界基準を満たすためには、このような高度な管理が企業に求められます。

上記のような課題を解決するソリューションが、特権アクセス管理(PAM)ツールです。最先端のPAMツールには、シークレット管理のモジュールが必須機能として組み込まれています。このモジュールにより、保管だけでなく、シークレットを閲覧・利用するユーザーに対するきめ細かいアクセス制御が可能になります。さらに、PAMツールは、アプリケーション間のパスワード管理(AAPM:Application-to-Application Password Management)機能も備えています。この機能により、企業全体に分散したあらゆる非人間エンティティ(アプリケーション、エンドポイント、アカウント、プロセス、サービス)のセキュアな認証を実現します。

シークレット管理のベストプラクティス

  • シークレットの検出・管理:シークレット(パスワードや暗号鍵など)を定期的に検出し、ダッシュボードで一元管理する
  • アカウントの監査:シークレットにアクセスする必要があるアカウント(特に特権アカウント)を徹底的かつ定期的に監査する
  • パスワードポリシーの導入:パスワードに関するルール(複雑さや文字数など)、ローテーションの周期、有効期限の管理方法を規定した厳格なパスワードポリシーを設定する
  • ハードコーディングの回避:ファイルやスクリプト、ビルドされたコードやアプリケーションに認証情報を直接埋め込む運用方法を廃止する
  • アクセス制御最小特権の原則を適用し、アクセス権を常時有効にせず、デフォルトでユーザーに最小限の権限のみを割り当てる(付与する権限は限りなく少ない方が望ましい)
  • 外部関係者の権限管理:サービス提供者や外部関係者への権限付与が必要な場合、特定の役割や業務に必要な最小限の権限のみをデフォルトで付与する
  • 高度な分析:脅威分析ツールを活用し、特権アクセスの監査データを企業全体で発生したイベントと関連付ける。分析結果に基づき、セキュリティ対策に関するデータドリブンな意思決定を行う

シークレット管理ツールの機能

シークレット管理ツールは、シークレット(パスワード、APIキー、証明書、暗号鍵など)を安全に保存・管理し、ユーザー間で安心して共有するためのツールです。一般的なシークレット管理ツールには、認証情報を暗号化して保管するためのボールト(認証情報の中身を公開せず、アクセスを安全に許可する仕組み)が備わっています。このような機能により、認証情報の散在や過剰な権限付与を防ぎ、データ侵害のリスクを軽減します。

効率的なシークレット管理を実現する「ManageEngine PAM360」

ManageEngineのPAM360(エンタープライズ向けPAMソリューション)は、DevOpsまたはDevSecOpsにおけるコンテナプラットフォームやCI/CDソリューション、RPAツールと簡単に連携できます。このスムーズな連携により、タスクやアプリケーションによる認証情報の自動取得が可能になり、セキュアなシークレット管理を実現します。さらに、日常的な業務に影響を与えず、重要な管理操作(アクセス制御、定期的なパスワードの変更、柔軟な管理機能の設定、監査など)を実行できます。