基本情報技術者試験「認証情報の保管」の問題
I社の業務アプリは、データベースへ接続するためのIDとパスワードを、プログラムのソースコード中に文字列としてそのまま記述している。このソースコードはバージョン管理システムで全開発者が閲覧できる。認証情報の保管方法として、最も適切な改善策はどれか。
ア認証情報はコード中に残したまま、推測されにくいよう変数名だけを目立たないものに変える。
イ認証情報を別の設定ファイルへ平文で切り出し、コードからはそれを読み込んで使う。
ウ認証情報はコード外の秘密情報管理の仕組みに預け、実行時に限って取り出して使う。
エ認証情報はコメントアウトしてコードに残し、使うときだけ有効化する運用にする。
正解
ウ.認証情報はコード外の秘密情報管理の仕組みに預け、実行時に限って取り出して使う。
認証情報をソースコードに直書きすると、バージョン管理システムを閲覧できる全開発者や、リポジトリが流出した際の第三者に露出してしまう。コードと分離した秘密情報管理(シークレットマネージャや環境変数による注入)に保管し、実行時にだけ取得して使う方式にすれば、コードや履歴に秘密が残らず、アクセス権限の制御も行える。
?選択肢ごとの解説
ア ×変数名を変えても認証情報の文字列自体はコード中に残り閲覧可能なため、漏えいリスクは実質的に変わらず改善にならない。
イ ×別ファイルへ移しても平文でバージョン管理に含まれれば、結局同じく全開発者や流出時に読まれてしまい、根本的な分離になっていない。
ウ ○認証情報をソースコードに直書きすると、バージョン管理システムを閲覧できる全開発者や、リポジトリが流出した際の第三者に露出してしまう。コードと分離した秘密情報管理(シークレットマネージャや環境変数による注入)に保管し、実行時にだけ取得して使う方式にすれば、コードや履歴に秘密が残らず、アクセス権限の制御も行える。
エ ×コメントアウトしてもコード(および履歴)に文字列が残るため、閲覧やリポジトリ流出による漏えいを防げない。
✎くわしく
認証情報のハードコーディング(直書き)は典型的なアンチパターンである。コードは共有・複製・履歴保存される性質を持つため、秘密情報を混在させると露出面が広がる。コードと秘密の分離、最小権限でのアクセス、ローテーション可能性を備えたシークレット管理が要諦である。
✓本番での押さえどころ
試験のコツ
認証情報の直書き是正は、コード外のシークレット管理+実行時取得が正解。ファイル移動や難読化だけでは不十分。
覚え方
秘密は『コードに書かない・履歴に残さない』。実行する瞬間にだけ金庫(シークレット管理)から取り出す。
よくある誤り
『別ファイルに分ければ安全』『変数名を工夫すれば安全』と考えがちだが、平文でバージョン管理に残る限り露出は止まらない。
情報セキュリティの他の問題
A社の経理担当者が、取引先を装ったメールに添付された請求書ファイルを業務PCで開いたところ、見慣れない画面が一瞬表示されて消…B社のWebサービスで、複数の利用者アカウントに対し正しいIDとパスワードの組合せによるログインが短時間に外部から成立する事…C社では、退職予定者や異動者のアカウント権限の見直しが滞り、業務上不要になった共有フォルダへのアクセス権が残り続けている。情…D社のファイルサーバがランサムウェアに感染し、業務ファイルが暗号化された。D社は日次でバックアップを取得しているが、バックア…E社の従業員に、取引先銀行を名乗る『口座情報の更新が必要』というメールが届いた。本文中のリンク先URLにアクセスすると、銀行…F社は社外の従業員が、カフェなどの公衆無線LANを利用して社内システムへアクセスしている。通信内容が経路上で第三者に盗聴・改…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0069