プライベートサブネットEC2インスタンスでセッションマネージャーを使うための経路確保確認

SSM Agent バージョン 3.0.222.0 、AmazonLinux2でした。SSMエージェントが対象のプライベートサブネットのEC2インスタンスにインストールされ、有効化(active)になっているか?バージョンは古くないか?それぞれ確認。

amazon-ssm-agent確認コマンド(AmazonLinux2)

sudo systemctl status amazon-ssm-agent

amazon-ssm-agent起動コマンド(2つのどちらでもいい)(AmazonLinux2)

sudo systemctl start amazon-ssm-agent
sudo systemctl enable amazon-ssm-agent

セッションマネージャーで使うVPCエンドポイント用のセキュリティグループをつくる

セッションマネージャーで使うVPCエンドポイント用のセキュリティグループを作ります。

インバウンドのHTTPS443でセッションマネージャーを使う「プライベートサブネットのEC2インスタンス」のセキュリティグループを送信元で指定したりVPCを指定する

アウトバウンドは全部なし、なにかポートが開放されていたら削除でOK.

SSM用VPCエンドポイントがあることを確認

以下4つが必要

  1. com.amazonaws.リージョン.ssm
  2. com.amazonaws.リージョン.ec2messages
  3. com.amazonaws.リージョン.ssmmessages
  4. com.amazonaws.リージョン.s3

1,2,3 はGatewayタイプではなくInterface型なのでセキュリティグループが必要。上記のセキュリティグループ1つをVPCエンドポイント3つに使い回す。

上記VPCエンドポイントの4つめに「com.amazonaws.リージョン.s3」があるので、プライベートサブネットのEC2インスタンスからS3バケットへの経路確保も必要。リージョンを指定するため、プライベートサブネットのEC2インスタンスaws s3 lsコマンドが使えなくなり、以下のようにリージョン指定しなければならない。これハマってセキュリティグループまで開放しまくって検証した・・・。

aws s3 ls --region ap-northeast-1

のように東京などのリージョン指定したAWS CLIコマンドがプライベートサブネットのEC2インスタンスからS3に対して必要になる。

S3のVPCエンドポイント経路ができると、InternetGateway経由で外部ネットワークと通信出来なくても、プライベートサブネットのEC2インスタンスでyum check-updateできるケースが発生するので要注意。S3内にAWSが用意しているAmazonLinux2のyumリポジトリがあり、S3フルアクセスなどのIAMポリシーを使っていてS3バケット単位でアクセス制限していない場合に発生します

このあたりから、「S3バケットポリシー」、「EC2のIAMロールのIAMポリシー」、「VPC エンドポイントのポリシー」、「S3のACLポリシー」、「S3アクセスポイントのアクセスポリシー」、(「KMSのキーポリシー」)など、ポリシー地獄になります。ポリシー間違えるとアプリ開発者やプロジェクト出資者などチームに大変な迷惑をかけてしまいます。内部の人たちから恨まれるだけで、情報漏洩が起きないなら、まだマシですが、慎重に作業をする必要があります。セキュリティポリシー管理系の見積は安く提示すると爆死しますので、くれぐれも安請け合いしないようにしましょう。

4 の「com.amazonaws.リージョン.s3」のVPCエンドポイントは、セキュリティグループではなく、「ルートテーブルの設定」と「VPCエンドポイントポリシー」の設定が必要。ルートテーブルは、プライベートサブネットのルートテーブルを選択し、VPCエンドポイントポリシーはフルアクセスを選ぶと、yum check-updateできるケースが発生する

プライベートサブネットのEC2インスタンスのセキュリティグループのセッションマネージャー経路確保

プライベートサブネットのEC2インスタンスのセキュリティグループでSSMのVPCエンドポイント(のセキュリティグループ)に送るため、アウトバウンドHTTPSで送信先「SSMのVPCエンドポイント用のセキュリティグループ」が必要。

プライベートサブネットのEC2インスタンスのIAMロールにIAMポリシーをアタッチ

余分なものも書いてますが、念の為に確認。

プライベートサブネットのAmazonLinux2のEC2インスタンスのIAMロールに以下のIAMポリシーをアタッチ

  • AmazonSSMManagedInstanceCore

プライベートサブネットのWindows Server の EC2 インスタンスを Microsoft AD ディレクトリに結合

  • AmazonSSMDirectoryServiceAccess

CloudWatchエージェント をインストールして実行する場合

  • CloudWatchAgentServerPolicy

IAMポリシーのjsonの例

ステップ 4: Systems Manager の IAM インスタンスプロファイルを作成するを参考に。

AWSの記事でコメントをいただくことがしばしばあるため、コメント機能を有効化しました。
ただ、申し訳ないのですが過去のコメントについては、WPの仕様で基本的に表示できません。
そのうち調べて表示します。お気軽にコメントください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください