シークレット【secret】
概要

シークレットは、主にシステムが特定のサービスやリソースへアクセスする権限を証明するために用いられる。第三者に漏洩すると、不正ログインや機密データの窃取、なりすましなどの被害につながるため、厳重な管理が求められる。
Web APIやクラウドサービスなどにシークレットを用いてプログラムから自動的にアクセスする手法が広まった初期には、ソースコード上これに直接記述する手法が見られた。しかし、コードを共有・公開した際に誤って流出する事故が多発したため、現在はシークレットをコードから切り離して管理する方式が定着している。
代表的な方法として、プログラムの実行時に環境変数としてシークレットを渡す方式がある。また、「HashiCorp Vault」や「AWS Secrets Manager」などシークレット管理専用のツールやクラウドサービスを利用し、必要なときだけ安全に取り出す仕組みも広く採用されている。こうしたサービスは暗号化保管やアクセス制御、監査ログの記録といった機能を備える。
開発・検証・本番の各環境でそれぞれ異なる認証情報を使い分けるのが一般的であり、環境ごとの適切な制御が必要となる。クラウド環境やDevOpsの普及に伴い、一つのシステムで管理するシークレットの数は増加する傾向にある。マイクロサービスアーキテクチャでは、多数のサービスがそれぞれ独自の認証情報を持つため、管理対象が膨大になることもある。
シークレットの漏洩リスクを下げる手段として、有効期限を設けて定期的に更新する「ローテーション」がある。近年ではソースコードへのシークレットの混入を自動検知するツールも普及しており、開発フローに組み込むことで人為的なミスによる流出を未然に防ぐ体制が整えられつつある。
(2026.6.15更新)