参照権限ユーザーでもMFAを有効化したい!
こんにちは、望月です。
管理ポリシーのReadOnlyAccessを使っていますか?
参照のみさせるユーザーに利用されることが多い管理ポリシーですが、参照権限がゆえに足りない権限というのもあります。
今回はMFA設定を変更できるインラインポリシーを作成し、そのポリシーとReadOnlyAccessを作成したグループに割り当て、ユーザー自身が参照権限ながらMFA設定を有効化できるグループをCloudFormationで作成していきたいと思います。
やってみた
下記、テンプレートをファイルに保存します。例:ReadOnlyMFA_cfn.yml
AWSTemplateFormatVersion: '2010-09-09' Description: This CloudFormation template to create IAM Resources: # Create IAM Group ReadOnlyMFAGroup: Type: AWS::IAM::Group Properties: GroupName: "ReadOnlyMFAGroup" ManagedPolicyArns: - 'arn:aws:iam::aws:policy/ReadOnlyAccess' Path: "/" # Create IAM Policy ReadOnlyMFAPolicy: Type: AWS::IAM::Policy Properties: PolicyName: "UserMFAPolicy" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "iam:*MFADevice" Resource: - "arn:aws:iam::*:user/${aws:username}" - "arn:aws:iam::*:mfa/${aws:username}" - Effect: "Allow" Action: - "iam:ListAccount*" - "iam:GetAccountSummary" - "iam:ListUsers" - "iam:ListMFADevices" - "iam:ListVirtualMFADevices" Resource: "*" Groups: - !Ref "ReadOnlyMFAGroup" Outputs: ReadOnlyMFAGroup: Value: !Ref ReadOnlyMFAGroup ReadOnlyMFAPolicy: Value: !Ref ReadOnlyMFAPolicy
保存した "ReadOnlyMFA_cfn.yml" からスタックを作成します。
$ aws cloudformation create-stack --stack-name ReadOnlyMFA --region ap-northeast-1 --template-body file://ReadOnlyMFA_cfn.yml --capabilities CAPABILITY_NAMED_IAM { "StackId": "arn:aws:cloudformation:ap-northeast-1:xxxxxxxxxxxxxx:stack/ReadOnlyMFA/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" }
以下コマンドを実行し、問題なくスタックが作成されたことを確認します。
$ aws cloudformation describe-stacks --stack-name ReadOnlyMFA | jq '.Stacks[].StackStatus' "CREATE_COMPLETE"
IAMコンソールのグループを確認し、ReadOnlyMFAGroupが作成されていることを確認します。
あとは参照権限を持たせたいIAMユーザーのグループにReadOnlyMFAGroupを割り当てることで、MFA設定を有効化できるようになります。
まとめ
参照権限しか持たないユーザーとはいえ、MFAを有効化するに越したことはありません。
インラインポリシーを作ったりと、ひと手間発生してしまいますが、ぜひ参照権限ユーザーでもMFAを有効化しましょう。