マネージメントコンソールにMFAを強制する

Posted on 2022/08/15

ToC

ログインセキュリティの向上

AWSを利用する際のベストプラクティスの一つとして、MFAデバイスを利用するというものがあります。 個人アカウントであれば1つのIAMユーザーぐらいなので労せず設定できますが、大量のユーザーを管理している環境だと 設定を失念しているメンバーがいたり、忙しくてなかなか対応できないメンバーがいたりとMFA設定を浸透させることも本当に大変です。

MFA強制設定のポリシー作成

AWSのサイトでも紹介されている内容なので、車輪の再開発的な要素は多分にありますが試してみたいと思います。 今回は、IAM Groupにポリシーを設定して、MFAを設定する必要のあるユーザーはこのグループに所属するという構成とします。 すでにMFA設定しているIAMユーザーの場合は、グループに所属してもマネージメントコンソールにて動作上の変化はありませんが、 MFAを設定していないIAMユーザーは、パスワードの変更MFA設定しかできなくなります。

特に新規で発行したIAMユーザーが本格的に利用を始める前にMFA設定をしてもらおうということが狙いになります。 ポリシー設定は下記のとおりです。

  ForceMfaAccess:
    Type: AWS::IAM::Group
    Properties:
      GroupName: 'ForceMfaAccess'
      Policies:
        - PolicyName: 'ForceMfaAccess'
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Sid: 'DenyAllExcept0010'
                Effect: Deny
                NotAction: [
                    'iam:CreateVirtualMFADevice',
                    'iam:EnableMFADevice',
                    'iam:GetUser',
                    'iam:ListMFADevices',
                    'iam:ListVirtualMFADevices',
                    'iam:ResyncMFADevice',
                    'iam:ChangePassword',
                    'iam:GetAccountPasswordPolicy',
                    'sts:GetSessionToken'
                  ]
                Resource:
                  - '*'
                Condition:
                  BoolIfExists:
                    aws:MultiFactorAuthPresent: false
              - Sid: 'ManageUser0010'
                Effect: Allow
                Action:
                  - 'iam:DeactivateMFADevice'
                  - 'iam:EnableMFADevice'
                  - 'iam:ListMFADevices'
                  - 'iam:ResyncMFADevice'
                  - 'iam:ChangePassword'
                  - 'iam:GetUser'
                Resource:
                  - 'arn:aws:iam::*:user/${aws:username}'
              - Sid: 'ManageUser0020'
                Effect: Allow
                Action:
                  - 'iam:GetAccountPasswordPolicy'
                  - 'iam:ListVirtualMFADevices'
                Resource:
                  - '*'
              - Sid: 'ManageMfaDevice0010'
                Effect: Allow
                Action:
                  - 'iam:CreateVirtualMFADevice'
                  - 'iam:DeleteVirtualMFADevice'
                Resource:
                  - 'arn:aws:iam::*:mfa/${aws:username}'

初回ログイン後のMFA設定

グループ設定された新規のユーザーがマネージメントコンソールにログインすると期待通りではありますが、見事に何もできません。
ただ、このままにしておくと「マネージメントコンソールが利用できない」というクレームになってしまうので、MFA設定の手順が必要になりそうです。 具体的には、マネージメントコンソールの左上のメニューからSecurity credentialsを選択ということをお知らせしたほうが良いかと思います。 これで、当該のIAMユーザーの設定画面に移動できます。

なお、MFA設定後には、マネジメントコンソールから一度ログオフした後に再度ログインすることを忘れないでください。 (忘れていると変更が反映されずにハマります)


参照