同一アカウントのバッチ処理用IAMロールへ、有効な対称暗号化KMSキーで暗号化したデータのDecryptだけをジョブ中に許可したい。EncryptionContextはJob=job-104の1組だけであり、他の許可経路や明示Denyはない。
キー・IAMポリシーの恒久的な変更と権限の再委任を避ける。承認済みの管理主体はgrantを作成でき、RetiringPrincipalとして指定される。完了後にgrantを終了し、結果を確認する。
要件を満たす権限の設定と終了方法はどれか。
対象キー・処理ロール・Decrypt・contextをgrantで限定し、完了後に明示的に終了して許可結果を確認する。
詳細解説
CreateGrantは新しいgrantを作る権限であり、制約は継承されても再委任を可能にする。処理に不要な権限を含めず、復号操作だけに限定する。
GrantIdとGrantTokenは別の戻り値である。IDはgrantを特定するために使い、伝播前の権限を使用するには返されたGrantTokenを対応する操作へ渡す。
ロールの一時認証情報の期限とgrantの存続は別である。grantはジョブ終了やセッション期限切れだけでは削除されず、RetireGrantまたは適切な権限によるRevokeGrantで終了させる。
キー・主体・操作・contextを限定し、使い終わったgrantを明示的に終了する。作成直後に使用する必要があれば返されたGrantTokenを使い、作成・終了の反映と実際の許可結果を確認する。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
承認された検証キーとロールで、対象contextのDecrypt、別contextと余分な操作の拒否、作成直後のGrantToken利用、終了後の反映を確認する。GrantIdと実行結果を記録する。
参考にした公式資料
確認できる内容
対象contextのDecryptだけが許可され、再委任はできない。他の許可経路がない前提で、grant終了の反映後はDecryptも拒否される。作成・終了の即時反映を保証したと扱わない。
理解のポイント
- KMS grant
- EncryptionContextEquals
- Grant token
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
キー・主体・操作・contextを限定する
本問は対称暗号化キーとIAMロールが対象。KeyId、GranteePrincipal、Operations=Decryptを指定し、EncryptionContextEqualsにJob=job-104を設定する。Equalsはcontextの完全一致を求め、Subsetは指定した組を含む追加の組も許す。CreateGrantによる再委任は要件外である。
一時認証情報とgrantの存続を区別する
grantはキー・IAMポリシーと併せて評価される許可の仕組みであり、Denyを打ち消す設定ではない。STSセッションの期限やジョブ完了で自動終了しない。指定したRetiringPrincipalがRetireGrantを行い、管理側によるRevokeGrantの権限も区別する。grantの終了は、そのgrantが許可した権限を除くもので、他のポリシーによる許可まで削除しない。
GrantIdとGrantToken、反映と結果を分ける
CreateGrantはGrantIdとGrantTokenを返す。GrantIdはキーと組み合わせて終了対象の特定に使い、GrantTokenは新規grantの伝播前の使用に使う。作成・終了にはeventual consistencyによる遅延があり、終了APIの成功だけで即時拒否を保証しない。条件違いと終了後の実際の許可を検証する。