IAM ポリシーで新規 IAM ユーザーがマネジメントコンソールへアクセスするのを防ぐための対処方法

2021.05.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

IAM ポリシーで IAM ユーザー作成時のプログラムによるアクセス用の IAM ユーザの作成は許可するが、AWS マネジメントコンソールへのアクセス用の IAM ユーザの作成を拒否するという設定は可能でしょうか。可能な場合は方法を教えてください。

IAM コンソールでは以下の設定箇所に該当します。

どう対応すればいいの?

プログラムによるアクセスを許可し、AWS マネジメントコンソールへのアクセスを拒否する IAM ポリシーは設定可能です。

IAM コンソールのチェック項目は以下の API に該当します。

  • プログラムによるアクセス: CreateAccessKey
  • AWS マネジメントコンソールへのアクセス: CreateLoginProfile

新規作成する IAM ユーザーの AWS マネジメントコンソールへのアクセスを判定するアクションはiam:CreateLoginProfileです。このアクションを明示的に Deny としたポリシーを作成し、IAM ユーザー作成操作を行う IAM ユーザー/ロールへアタッチしてください。

ポリシー例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyIAMCreateLoginProfile",
            "Effect": "Deny",
            "Action": "iam:CreateLoginProfile",
            "Resource": "*"
        }
    ]
}

試してみた

上記の IAM ポリシー例をアタッチした IAM ユーザーで、AWS マネジメントコンソールへのアクセスを有効化した新しい IAM ユーザーを作成してみます。

IAM ユーザーは作成できますが、ログインプロファイル(マネジメントコンソールサインイン時に入力するパスワード)の作成に失敗します。つまり、マネジメントコンソールへサインインできない IAM ユーザーが作られました。

運用上の観点

コンソールにサインイン可能な IAM ユーザーの作成は禁止と運用ルールで決めるのは簡単ですが、人は操作ミスする生き物です。

IAM ポリシーであらかじめアクションを拒否しておけば、もしものときも安全です。

参考資料