SAP-C02-067 · 理解確認
理解確認:CredentialとSecret管理
12問 · 1問ずつ確認
EC2上のアプリケーションがAmazon S3 APIを利用する。設計案ではIAMユーザーのアクセスキーをSecrets Managerに保存しているが、EC2ではIAMロールを利用可能である。最も適切な設計はどれか?
B. EC2へIAMロールを割り当て、一時的な認証情報を利用して長期アクセスキー自体を不要にする
C. アクセスキーをParameter Store SecureStringへ移し、取得元サービスを変更して認証情報の保管場所を分離する
D. アクセスキーをSecrets ManagerとParameter Storeへ複製し、片方を障害時のフォールバック認証情報として保持する
答えと解説
答え:B
ワークロードでロールを利用できるなら、長期AWS認証情報を安全に保管するより認証情報自体をなくす方を優先します。
データベースパスワードを定期ローテーションする。アプリケーション停止を最小化しながら認証情報のライフサイクルを成立させる設計として最も適切なのはどれか?
B. データベース側パスワードだけを先に変更し、アプリケーションは次回デプロイでシークレット保管先から新しい値を取得する
C. シークレット保管先とデータベースを更新した後、アプリケーションはプロセス再起動まで旧認証情報を保持する前提にする
D. シークレット保管先、対象データベース、利用側の更新を1つのローテーションライフサイクルとして設計し、切替時の可用性も確認する
答えと解説
答え:D
ローテーションはシークレット保管先、対象システム、利用側の3者で成立させます。
Secrets ManagerのLambda関数によるローテーションで、新しい認証情報を現在として公開する前に対象への反映と検証を行いたい。最も適切なバージョン切り替えはどれか?
B. 現在値のAWSCURRENTを先に削除し、その後で新バージョンを作成して対象システムへ反映する
C. AWSPREVIOUSを新認証情報候補として対象へ反映し、成功後もAWSCURRENTは旧バージョンのまま維持する
D. 新バージョンを最初からAWSCURRENTとして公開し、利用側エラーが出なければ対象システムを後から更新する
答えと解説
答え:A
ローテーションを単純な上書きとして扱わず、候補バージョンの準備・対象反映・検証・現在切替を分けます。
新規アプリケーションではデータベースパスワードをリポジトリやコンテナイメージへ保持してはならず、認証情報変更をアプリケーションリリースと独立して実施できる必要がある。最も適切な設計はどれか?
B. デプロイマニフェストに暗号化認証情報を固定し、ローテーション時だけマニフェスト更新と再デプロイを実施する
C. アプリケーションアーティファクトには認証情報を含めず、認証されたワークロードが実行時にシークレット保管先から取得する
D. 環境ごとのソースブランチへ暗号化認証情報を分離し、リリースと同じバージョン管理で更新する
答えと解説
答え:C
認証情報をアーティファクトから分離し、実行時受け渡しによってリリースのライフサイクルとの結合を減らします。
シークレットのローテーション後にアプリケーション認証が失敗した。シークレット保管先には新パスワードがあるが、データベース側は旧パスワードのままである。最も重要な設計上の問題はどれか?
B. ローテーションをシークレット保管先の値変更だけとして扱い、対象システム側の認証情報更新を同じライフサイクルへ含めていない
C. シークレット保管先の取得権限をアプリケーションロールへ限定したため、データベース側のパスワード更新が実行されなかったと判断している
D. ローテーションスケジュールとアプリケーションデプロイスケジュールを同じ時刻に設定せず、別々の運用時間帯で管理している
答えと解説
答え:B
対象システムが新認証情報へ更新されなければローテーションは成立しません。
Amazon ECSサービスでSecrets Managerのデータベースパスワードを環境変数として注入している。シークレットがローテーションされた後、既存タスクが旧パスワードを使い続けている。最も適切な対応はどれか?
B. 環境変数注入を維持し、シークレットのバージョンステージをAWSCURRENTへ変更すれば既存タスクも再起動なしで新値を読み込むと判断する
C. ECSサービスの希望するタスク数を維持したままシークレットキャッシュTTLだけを短縮し、既存環境変数が更新されるのを待つ
D. Secrets Managerのローテーションを継続しつつタスク定義のリビジョンを固定すれば、既存タスクも次回認証情報利用時に現在のシークレットを取得すると判断する
答えと解説
答え:A
環境変数はタスク起動時に注入されるため、ローテーション後の既存タスクへ新値が自動反映されるとは限りません。
シークレットのローテーションをアプリケーションアーキテクチャへ組み込む際に適切な判断を3つ選択してください。
B. シークレット保管先のバージョンが現在へ切り替われば対象システム更新の成否はアプリケーション側で確認しなくてよい
C. ローテーション処理が対象システム側の認証情報も新しい値へ更新できることを確認する
D. 認証情報をアーティファクトへ暗号化して保存し、ローテーションのたびにイメージを再ビルドすることを標準方式にする
E. 利用側の再取得タイミングやキャッシュTTLを認証情報の鮮度要件に合わせる
F. ローテーション中の古い/新しい認証情報切替がアプリケーション可用性へ与える影響を確認する
答えと解説
答え:C / E / F
ローテーションは対象更新、利用側の更新、可用性を含めて設計します。
Secrets Managerを使用するアプリケーションがシークレットを長時間キャッシュしている。セキュリティチームがローテーション間隔を短縮し、ローテーション後10分以内の新認証情報利用を要求した。最も適切なアーキテクチャレビューはどれか?
B. AWSPREVIOUSをフォールバックとして常時利用し、キャッシュ期限切れ後も旧認証情報が使える期間を延長する
C. ローテーション頻度、必要な更新時間、キャッシュTTLを合わせ、利用側が10分以内に現在の認証情報へ追従できるようにする
D. シークレットのKMSキーローテーションを10分以内に設定し、暗号鍵更新によってアプリケーションキャッシュも自動更新させる
答えと解説
答え:C
認証情報の鮮度要件とキャッシュ / 更新動作を一緒に設計します。
Parameter Store SecureStringにデータベースパスワードを保存し、高度なパラメータのNoChangeNotificationを設定している。要件はデータベースパスワードを30日ごとに自動変更することである。最も適切な判断はどれか?
B. Expiration ポリシーでパラメータを失効させ、データベース側は失効イベントを受けて同じ値を自動変更する前提にする
C. SecureStringのKMS暗号化キーを定期ローテーションし、パラメータ値を変更せず認証情報のローテーション要件を満たす
D. パラメータポリシーは期限・通知の制御であり対象認証情報更新ではないため、対応するローテーション機能を別途設計する
答えと解説
答え:D
パラメータポリシーはライフサイクル監視に使えても、対象認証情報を更新するローテーションエンジンではありません。
新しいシークレットをSecrets Managerで管理する。提供側によって利用可能なローテーション機能が異なる可能性がある。最も適切な設計判断はどれか?
B. 対象認証情報と提供側が現在対応するローテーション方式を確認し、必要権限・接続・対象更新まで成立する方式を選ぶ
C. Secrets Managerへ保存できるシークレットならマネージドローテーションが必ず利用できるとみなし、提供側機能は確認しない
D. ローテーション方式の差はシークレット保管先内部だけの実装差なので、対象システムや利用側アーキテクチャには影響しないと判断する
答えと解説
答え:B
ローテーションエンジン名を固定せず、提供元が現在サポートする機能とライフサイクル全体への適合で選びます。
アプリケーションを廃止する。シークレットはローテーションされており、現在は利用されていない。認証情報のライフサイクルを閉じる設計として最も適切なのはどれか?
B. シークレットを残したままアプリケーションロールだけ削除し、将来再利用できるよう対象側認証情報は有効な状態で保持する
C. シークレットのローテーションだけ停止し、対象側認証情報は監査目的で無期限に有効化してシークレット保管先に保存し続ける
D. シークレットをAWSPREVIOUSへ移して現在から外せば、対象システム側認証情報の失効は不要と判断する
答えと解説
答え:A
ライフサイクルはローテーションで終わらず、不要になった認証情報と権限を失効・削除するところまで含みます。
新規Amazon ECSサービスがデータベースパスワードを利用する。要件は「コンテナイメージへ認証情報を含めない」「30日ごとにデータベース側も含めてローテーションする」「ローテーション後10分以内に新しい認証情報へ追従する」「サービス廃止時に不要な認証情報と取得権限を残さない」である。適切な設計判断を4つ選択してください。
B. デプロイ時に現在のパスワードをコンテナイメージへ埋め込み、30日ごとにイメージを再ビルドする
C. ローテーション処理でシークレット保管先だけでなく対象データベース側の認証情報も更新・検証する
D. キャッシュTTLやタスク更新方式を調整し、ローテーション後10分以内に現在値へ追従できるようにする
E. Secrets Manager内の値だけを30日ごとに変更し、データベース側の値はアプリケーション障害時に更新する
F. サービス廃止手順にデータベースユーザー、シークレット、不要になった取得権限の失効・削除を含める
答えと解説
答え:A / C / D / F
認証情報をアーティファクトから分離し、ローテーションでは保管先・対象システム・利用側の追従を1つのライフサイクルとして成立させます。廃止時は認証情報と取得権限も残さないようにします。