ある企業が、AWS マネジメントコンソールへのすべてのアクセスに対して多要素認証(MFA)を必須にしたい。特に、MFA デバイスが登録されていない IAM ユーザーは、MFA を登録する操作以外は一切実行できないようにしたい。最も適切な方法はどれか。
- A. IAM ポリシーで aws:MultiFactorAuthPresent 条件キーが false の場合に Deny する(MFA なしのリクエストを拒否する)ポリシーを作成し、全ユーザーにアタッチする。ただし MFA デバイスの自己登録操作(iam:CreateVirtualMFADevice 等)は例外として許可する。
- B. AWS Organizations の SCP で MFA なしのすべての API コールを Deny し、MFA デバイス登録の操作も SCP でブロックする。
- C. すべての IAM ユーザーにコンソールサインイン時の MFA を手動で設定し、各ユーザーに MFA デバイスを配布する。
- D. Amazon Cognito を使ってコンソールアクセスを Cognito 認証に置き換え、Cognito の MFA 機能を有効化する。
解答と解説を見る
正解: A
aws:MultiFactorAuthPresent 条件キーを使った Deny ポリシーは、MFA なしで行われた API コールをすべて拒否する。このポリシーを全ユーザーが所属するグループにアタッチし、例外として iam:CreateVirtualMFADevice・iam:EnableMFADevice などのMFA自己登録に必要なアクションは Deny の除外リストに含めることで、MFA 未登録のユーザーでも MFA デバイスを登録できる。選択肢Cは管理者による手動設定が必要で、ユーザーが多い場合や新規追加時の漏れが発生しやすい。選択肢BはSCP でMFA デバイス登録もブロックすると、ユーザーが MFA を登録できなくなってしまい矛盾が生じる。また SCP はメンバーアカウントの IAM エンティティに適用されるが、管理アカウント自体には効かない点も留意が必要。選択肢DのCognito はコンソールアクセスの認証基盤として使用できず、AWS マネジメントコンソールは IAM 認証を使用する。
📚 関連サービスの解説: AWS IAM