1. Qiita
  2. 投稿
  3. AWS

AWS IAMでのMFA強制

  • 3
    いいね
  • 0
    コメント
に投稿

AWSのIAMをユーザに割り振ったけど、セキュリティ強化のためにMFA(多要素認証)を強制にしたい場合ってありますよね?

MFAとは

セキュリティを向上させるには、多要素認証(MFA)を設定して AWS リソースを保護することを推奨します。MFA は、AWS ウェブサイトまたはサービスへのアクセス時に承認済みの認証デバイスまたは SMS テキストメッセージから取得した一意の認証コードを入力するようユーザーに要求することで、セキュリティをさらに高めます。
(AWS公式より)

手順

MFAによるアクセスでなければ何もさせたくない場合は

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BlockAnyAccessOtherThanAboveUnlessSignedInWithMFA",
            "Effect": "Deny",
            "NotAction": "iam:*",
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        }
    ]
}

としてIAMのポシリーを作成し、IAMユーザにアタッチすれば良いようです。
NotActionの部分でiamのアクションを許可しているのは、ログインした後、iamの設定画面でmfaを有効化してもらうためです。
厳密にはiamのmfa有効化のアクションのみに絞るべきですね。
(ただ、ユーザにMFAを有効化するにはどうするかを教えなければいけません。。MFA有効化を管理者が行い、初期ログイン時に設定フローが出てくる、とかしてほしいです。。。)

上記ポリシーをアタッチしたユーザでMFAを使わずログインすると、IAM以外はエラーとなり、見えないはずです。