情報セキュリティ

基本情報技術者試験認証情報の保管」の問題

情報セキュリティ情報セキュリティ難易度:normal
I社の業務アプリは、データベースへ接続するためのIDとパスワードを、プログラムのソースコード中に文字列としてそのまま記述している。このソースコードはバージョン管理システムで全開発者が閲覧できる。認証情報の保管方法として、最も適切な改善策はどれか。
認証情報はコード中に残したまま、推測されにくいよう変数名だけを目立たないものに変える。
認証情報を別の設定ファイルへ平文で切り出し、コードからはそれを読み込んで使う。
認証情報はコード外の秘密情報管理の仕組みに預け、実行時に限って取り出して使う。
認証情報はコメントアウトしてコードに残し、使うときだけ有効化する運用にする。
正解
認証情報はコード外の秘密情報管理の仕組みに預け、実行時に限って取り出して使う。

認証情報をソースコードに直書きすると、バージョン管理システムを閲覧できる全開発者や、リポジトリが流出した際の第三者に露出してしまう。コードと分離した秘密情報管理(シークレットマネージャや環境変数による注入)に保管し、実行時にだけ取得して使う方式にすれば、コードや履歴に秘密が残らず、アクセス権限の制御も行える。

?選択肢ごとの解説

ア ×変数名を変えても認証情報の文字列自体はコード中に残り閲覧可能なため、漏えいリスクは実質的に変わらず改善にならない。
イ ×別ファイルへ移しても平文でバージョン管理に含まれれば、結局同じく全開発者や流出時に読まれてしまい、根本的な分離になっていない。
ウ ○認証情報をソースコードに直書きすると、バージョン管理システムを閲覧できる全開発者や、リポジトリが流出した際の第三者に露出してしまう。コードと分離した秘密情報管理(シークレットマネージャや環境変数による注入)に保管し、実行時にだけ取得して使う方式にすれば、コードや履歴に秘密が残らず、アクセス権限の制御も行える。
エ ×コメントアウトしてもコード(および履歴)に文字列が残るため、閲覧やリポジトリ流出による漏えいを防げない。

くわしく

認証情報のハードコーディング(直書き)は典型的なアンチパターンである。コードは共有・複製・履歴保存される性質を持つため、秘密情報を混在させると露出面が広がる。コードと秘密の分離、最小権限でのアクセス、ローテーション可能性を備えたシークレット管理が要諦である。

本番での押さえどころ

試験のコツ

認証情報の直書き是正は、コード外のシークレット管理+実行時取得が正解。ファイル移動や難読化だけでは不十分。

覚え方

秘密は『コードに書かない・履歴に残さない』。実行する瞬間にだけ金庫(シークレット管理)から取り出す。

よくある誤り

『別ファイルに分ければ安全』『変数名を工夫すれば安全』と考えがちだが、平文でバージョン管理に残る限り露出は止まらない。

情報セキュリティの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0069

【基本情報技術者試験】認証情報の保管の問題 — 解答・解説|ukamiru 過去問