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