🐧

[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つまで
  • 実際の権限はAWS管理ポリシーPowerUserAccessなどをIAMユーザーやIAMユーザーグループをアタッチすれば、作成したIAMポリシーのDenyが優先されるので要件を満たせるはず

Discussion