【AWS】SSM RunCommand実行時のアクセス拒否対処~IPアドレス縛りをしているIAMユーザでの実行に注意

SSM RunCommand実行時のアクセス拒否対処アイキャッチ

コンソールからSSM RunCommandを実行する際に「アクセス拒否」になる場合があります。実はこれ、今コンソールにログインしているユーザのIAM権限が原因であることが大半です。すべてのリソースにAdmin権限がある場合でも、IAMユーザに割当たっているIAMポリシーのCondition句でIPアドレス制限を行っている場合も発生します。本件理由がわからずにハマったので内容を記事にします。

マネジメントコンソールでRunCommandのエラー確認
目次

原因 コンソールログインしているIAMユーザの設定

冒頭で述べた通り、現在ログインしているユーザにSSM(SystemsManager)の権限が不足している、または何らかのIPアドレス制限がかかっていることが原因です。IPアドレス制限がかかっている場合、そのIPの範囲からコンソールにアクセスしていたとしてもアクセス拒否となります。

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Deny",
        "Action": "*",
        "Resource": "*",
        "Condition": {
            "NotIpAddress": {
                "aws:SourceIp": [
                    "192.0.2.0/24",
                    "203.0.113.0/24"
                ]
            }
        }
    }
}

おそらく、コンソールにログインしているIAMユーザの権限でSSMがRunCommandを発行するのですが、そのアクセス元IPが範囲外にあることが原因だと思います。文章では説明しづらいので以下図にしました。

RunCommandでIPアドレス範囲外エラーが起きる仕組み解説

対処法 2パターン

対処法1:スイッチロールを活用する

SSM RunCommandの実行権限を持ったIAMロールを作成し、現在コンソールにログインしているIAMユーザからスイッチロールを行います。

作成するIAMロールについてはCondition句でのIPアドレス制限は行わないようにします。

IAMロールを作成してある前提での手順です。コンソール右上のIAMユーザ名からロールの切り替えを選択します。

マネジメントコンソールからIAMロールの切り替えを行うには右上のIAMユーザ名を選択する

アカウントとロール名を入力してロールの切り替えを行います。

マネジメントコンソールからロールの切り替えを行うために必要事項を入力する画面の説明

切り替えができると切り替えたロール名が右上に表示されます。

マネジメントコンソールでロールの切り替えを行うとロール名が右上に表示される

対処法2:IAMユーザのポリシーからIPアドレス制限を削除する

IAMユーザのポリシーからIPアドレス制限を削除すると手っ取り早く対処ができます。しかし、セキュリティの観点から望ましくない場合があるかと思うので状況に合わせて判断してください。

PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!

SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ

ランキング

ランキングに参加しています。クリックして応援いただけると嬉しいです。
にほんブログ村 IT技術ブログ クラウドコンピューティングへ
にほんブログ村
AWSランキング
AWSランキング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次