QUIZ 30分

クイズの説明

Step 3「シークレット管理を設計しよう」の理解度を確認します。シークレット管理のアーキテクチャ、Vault設計、ローテーション戦略、ゼロスタンディング権限について問います。

合格ライン: 80%(5問中4問正解)


問題

Q1. シークレット管理のアンチパターン

以下のシークレット管理方式のうち、最もリスクが高いものはどれですか?

  • A. HashiCorp Vaultに保存し、アプリケーション起動時に動的に取得する
  • B. AWS Secrets Managerに保存し、IAMロールで認証してアクセスする
  • C. ECSタスク定義の環境変数にデータベースのパスワードを平文で設定する
  • D. Kubernetes SecretにBase64エンコードして保存し、ボリュームマウントで提供する
答えを見る

正解: C

ECSタスク定義の環境変数に平文でパスワードを設定する方式は最もリスクが高いです。環境変数はdocker inspectで閲覧可能、ログに出力される可能性がある、ECSタスク定義はバージョン管理されるためAWSコンソールやAPI経由で誰でも閲覧可能、そして暗号化されていないため漏洩リスクが高いです。D(Kubernetes Secret)もBase64は暗号化ではありませんが、RBACによるアクセス制御やetcdの暗号化と組み合わせることで一定の保護が可能です。A(Vault)とB(Secrets Manager)は専用のシークレット管理サービスであり、暗号化・監査・アクセス制御が標準で提供されます。


Q2. Vaultの動的シークレット

HashiCorp Vaultの動的シークレットの最大の利点として最も適切なものはどれですか?

  • A. シークレットの生成速度が速い
  • B. 一時的な認証情報がTTL後に自動失効するため、漏洩しても影響が限定的
  • C. データベースのパフォーマンスが向上する
  • D. 開発者がパスワードを覚える必要がなくなる
答えを見る

正解: B

動的シークレットの最大の利点は、認証情報が一時的であり、TTL(Time to Live)後に自動で失効することです。これにより、シークレットが漏洩した場合でも有効期間が限定的(例: 1時間)で、攻撃者が利用できる時間窓が大幅に縮小されます。さらに、各サービスインスタンスに固有の認証情報が発行されるため、「どのインスタンスが漏洩したか」の追跡も容易になります。長期間有効な静的パスワードと比較して、セキュリティが根本的に改善されます。


Q3. ゼロダウンタイムローテーション

データベースパスワードのゼロダウンタイムローテーションを実現する「デュアルアクティブパターン」の正しい手順はどれですか?

  • A. 旧パスワード無効化 → 新パスワード生成 → クライアント切り替え
  • B. 新パスワード生成 → 旧パスワード無効化 → クライアント切り替え
  • C. 新パスワード生成 → クライアント切り替え → 旧パスワード無効化
  • D. クライアント切り替え → 新パスワード生成 → 旧パスワード無効化
答えを見る

正解: C

デュアルアクティブパターンの正しい手順は: (1) 新しいパスワードを生成し、データベースに設定する(この時点で新旧両方のパスワードが有効)、(2) クライアント(アプリケーション)を順次新しいパスワードに切り替える(切り替え期間中、まだ旧パスワードを使っているクライアントがいてもOK)、(3) すべてのクライアントの切り替えが完了したことを確認後、旧パスワードを無効化する。A(先に無効化)やB(クライアント切り替え前に無効化)では、旧パスワードを使っているクライアントの接続が切れ、ダウンタイムが発生します。


Q4. Envelope暗号化

Envelope暗号化においてKEK(Key Encryption Key)をローテーションする際の利点として最も適切なものはどれですか?

  • A. データベースの全データを再暗号化する必要がないため、高速にローテーションできる
  • B. KEKのローテーションにより暗号化アルゴリズムも自動的にアップグレードされる
  • C. ローテーション中もデータへのアクセスが完全にブロックされるため安全性が高い
  • D. KEKのローテーション後は過去のデータを復号できなくなるため、データ漏洩のリスクがなくなる
答えを見る

正解: A

Envelope暗号化では、データはDEK(Data Encryption Key)で暗号化され、DEKはKEK(Key Encryption Key)で暗号化されて保存されます。KEKをローテーションする際は、DEKをRewrap(旧KEKで復号→新KEKで再暗号化)するだけで済みます。データ自体の再暗号化は不要です。大量のデータを持つシステムでも、ローテーション対象は小さなDEKのみなので高速に完了します。B(アルゴリズム変更は別の操作)、C(アクセスブロックは不要)、D(過去データは新KEKで保護されたDEKで復号可能)はいずれも不正確です。


Q5. ゼロスタンディング権限

ゼロスタンディング権限(Zero Standing Privileges)において「ブレイクグラス(Break Glass)」手順が必要な理由として最も適切なものはどれですか?

  • A. ゼロスタンディング権限の仕組みが正しく動作しているかテストするため
  • B. 重大障害時に承認者が不在でも迅速に本番環境にアクセスし対応するため
  • C. セキュリティ監査で「常に人間が関与している」ことを証明するため
  • D. JITアクセスのコストを削減するため
答えを見る

正解: B

ブレイクグラス(Break Glass)手順は、ゼロスタンディング権限環境において、通常のJIT承認フローが使えない緊急時(重大障害の対応中に承認者が不在、SLAの猶予がない等)に、迅速に特権アクセスを取得するための手順です。通常の承認を省略する代わりに、(1) 使用時に全件アラートが発報され、(2) 24時間以内に事後レビューが実施され、(3) 不正使用は懲戒対象とする統制が設けられます。ゼロスタンディング権限を導入する際には、必ずブレイクグラス手順をセットで設計する必要があります。


結果

合格(4問以上正解)

Step 3の内容をよく理解しています。シークレット管理基盤の設計、Vaultの活用、ローテーション戦略、ゼロスタンディング権限の知識を身につけました。次のStep 4「ID管理基盤を構築しよう」に進みましょう。

不合格(3問以下正解)

Step 3の内容を復習しましょう。特に以下のポイントを重点的に確認してください:

  • シークレット管理のアンチパターン — 環境変数平文、ハードコード等の危険性
  • 動的シークレット — TTLベースの一時認証情報のメリット
  • ローテーション — デュアルアクティブパターンとEnvelope暗号化
  • ゼロスタンディング権限 — JITアクセスとブレイクグラスの関係

推定所要時間: 30分