🐧
[AWS IAM] IAMユーザーの権限でAWS管理ポリシーを使用しつつ、アクセス元やMFAを強制したい
概要
IAMユーザーのAWSマネジメントコンソールへのログインでアクセス元やMFAを強制したい場合
- 1つのカスタムポリシーにそれらを強制するステートメントに加えて、許可したい権限のステートメントを設定するやり方がある
- しかし、1つのカスタムポリシーではIAMユーザーグループごとIAMポリシーをカスタマイズする手間が発生する
- AWS管理ポリシーと共通のアクセス元やMFAを強制するカスタムポリシーをIAMユーザーやIAMユーザーグループにアタッチしたほうが、運用コストを抑えられるのでは
- 個別にリソースを制限する場合はカスタムポリシーを別途作成する必要はある
- IAMポリシーのカスタムポリシーは許可が広いとSecurity Hubで検知されていまう
設計
- IAMポリシー (JSON)
内容
- 1つ目ステートメント
DenyAllExceptSourceIpでは指定されたIPアドレス以外は拒否しつつ、CloudShellからのawsコマンドが実行できるようにしている - 2つ目のステートメント
DenyAllExceptSelfMFAAndPasswordでは自身のパスワード変更やMFAデバイス登録以外はMFA有効ではない場合すべて拒否 - 3つ目のステートメント
AllowSelfMFAAndPasswordでは2つ目のステートメントDenyAllExceptSelfMFAAndPasswordのリソースを明示的に許可- MFAデバイス名は自身の<IAMユーザー名>か<IAMユーザー名>-<任意の1文字>のみ登録可能としている
- AWSアカウント内で同名のMFAデバイス名は1つまで
- MFAデバイス名は自身の<IAMユーザー名>か<IAMユーザー名>-<任意の1文字>のみ登録可能としている
- 実際の権限はAWS管理ポリシー
PowerUserAccessなどをIAMユーザーやIAMユーザーグループをアタッチすれば、作成したIAMポリシーのDenyが優先されるので要件を満たせるはず
Discussion