キーペアというネックポイント
EC2を作成すると、通常はキーペアを使用してSSH接続するかと思います
誰もが使用する22番ポートへの攻撃は、SecurityGroupでIPを絞るなどの対応ができますが
キーペアを紛失してしまうとあまりよろしくない。
AWSのSystemsManagerではセッションマネージャーというものがあり、
AWSマネジメントコンソールから、ブラウザ上でセッションを確立でき、いつも通りコマンドも叩けます。
方法
今回はPublicSubnetにあるEC2への、セッションマネージャによるアクセスをやってみます。
前提として、使用する IAMユーザー がSSM等の使用権限を持っていること
※マネジメントコンソールでSSMを操作する権限の話
対象のEC2にRoleをアタッチ
EC2に最低限必要なポリシーは1つ
・AmazonSSMManagedInstanceCore
このIAMポリシーを持ったIAM Roleを作成したら、EC2にアタッチします。
①IAMRoleの作成画面へ
②Roleにアタッチするポリシーはデフォルトで存在する、
AmazonSSMManagedInstanceCore を選択
③EC2インスタンスの画面へ移動して、アクセスするEC2に対して、作成したRoleをアタッチ
SSMで確認、セッション開始
Roleがアタッチされると、SystemsManager > マネージドインスタンス内にインスタンスが存在するので
この時点で準備OKかと思います。
※出てこない場合、プロファイルが読み込まれていないので暫く待つか、再起動で表示されます。
EC2インスタンス画面からも接続可能です。↓
「接続」から↓
注意点など
Networkingの観点
今回はPublicSubnet、つまりインターネットゲートウェイがルーティングされた環境のインスタンスへの接続を実行しました
よりセキュアにしたい場合は、VPCエンドポイントがルーティングされたSubnetの用意が必要です
VPCエンドポイントは、AWSネットワークからインターネットに出ずにアクセス先のAWSリソースへアクセスさせてくれる子なので
今回であればSSMまでのアクセスをAWSネットワーク内で完結してくれます。
VPCエンドポイントに登録するAWSサービス名は以下です
※詳細は時間あったらまた今後追記
com.amazonaws.region.ssm
com.amazonaws.region.ec2messages
com.amazonaws.region.ssmmessages
コスト観点
EC2セッションマネージャーの使用でかかる追加料金はありません
https://aws.amazon.com/jp/systems-manager/pricing/
ただし、VPCリソースの料金はかかります。
例えばVPCエンドポイントの場合
VPCエンドポイントの料金目安、東京リージョン
・各AZのVPCエンドポイント料金:0.014USD/時間
・処理データ1GBあたりの料金:0.01USD/GB
サービス(エンドポイント)毎にかかる
接続の有無に関わらずエンドポイントの料金はかかる
あらかじめVPCリソースの料金は算出しておいたほうがいいですね。
(個人で使っていると、このエンドポイント料金は大きかった)
こう考えてみると、よりコストを意識(重視)する必要がある場合、予め存在する踏み台サーバーのSSHポートを閉じて、PublicSubnetの踏み台サーバーを経由したアクセスが無難そう。
スペックによるが、踏み台のEC2料金のほうが安い場合がある。。
ただ、あくまでセキュリティを重視すべきであれば、PrivateSubnetならVPCエンドポイントで構築したほうが良い。
監査観点
SSMはCloudTrailと統合されているため、APIコールのログが残ります。
CloudTrailはデフォルトで有効となっているので、確認できます
また、セッションマネージャーの画面から、監査ログ等を取得する設定も可能
まとめ
セッションマネージャーを使うメリットがたくさんある
・キーペアが不要のため、管理する危なっかしいものが減る
・ブラウザでアクセスできるから、WindowsサーバーもRDPであることを意識しなくても済む
・VPC Network環境によって使い分ける
・ログも残してくれる
お試しの場合
・IAMやVPCの勉強になる
以上です!ありがとうございました。
次はトラブルシューティングの記事とか書こうかなーと思っています