25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS IAMでのMFA強制

Last updated at Posted at 2017-01-06

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以外はエラーとなり、見えないはずです。

また、上記設定すると、自身のMFAの有効化もできなくなってしまうので、下記も一緒にアタッチした方が良いです。
私は別のPolicyとして作りましたが、一緒のPolicyにしても良いかと思います。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "iam:DeactivateMFADevice",
                "iam:EnableMFADevice",
                "iam:ResyncMFADevice",
                "iam:ListMFADevices"
            ],
            "Resource": "arn:aws:iam::489928898057:user/${aws:username}"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteVirtualMFADevice",
                "iam:CreateVirtualMFADevice"
            ],
            "Resource": "arn:aws:iam::489928898057:mfa/${aws:username}"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "iam:ListUsers",
            "Resource": "arn:aws:iam::489928898057:user/"
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": "iam:ListVirtualMFADevices",
            "Resource": "arn:aws:iam::489928898057:mfa/"
        }
    ]
}
25
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?