LoginSignup
6
4

More than 3 years have passed since last update.

AWS System Manager Session ManagerでEC2にSSH,SCP接続する

Posted at

はじめに

Session Managerというものを今更知った。

セキュリティグループでsshを開けたり、踏み台サーバを経由してEC2にアクセスしたり、といったことがより楽に、安全になるようだ。

本記事では

  • Session Managerの基本的な設定手順
  • 監査ログの出力設定手順
  • Session Manager + ssh,scpコマンドでEC2にアクセスする手順
  • Session Managerでのアクセスを無効にする手順

を示す。

Session Managerとは

公式ユーザガイドより

Session Manager はフルマネージド型 AWS Systems Manager 機能であり、インタラクティブなワンクリックブラウザベースのシェルや AWS CLI を介して、EC2 インスタンス、オンプレミスインスタンス、仮想マシン (VM) を管理できます。Session Manager を使用すると、インバウンドポートを開いたり、踏み台ホストを維持したり、SSH キーを管理したりすることなく、監査可能なインスタンスを安全に管理できます。また、Session Manager を使用すると、マネージドインスタンスへの簡単なワンクリックのクロスプラットフォームアクセスをエンドユーザーに提供しつつ、インスタンスへの制御されたアクセス、厳格なセキュリティプラクティス、完全に監査可能なログ (インスタンスアクセスの詳細を含む) が要求される企業ポリシーに簡単に準拠できます。

上記をまとめるとSession Managerのメリットは大きく分けると以下の2つである。

  • SSH鍵、アクセス制御、踏み台サーバの管理・設定が不要になる
  • 監査ログを残すことができる

Session Managerの基本的な設定手順

EC2インスタンス、ロール作成などの基本的な部分は掻い摘んで説明させていただく。

EC2インスタンスの作成

セキュリティグループでSSHを許可する必要はない。

1-1.png

キーペアの作成も不要。

1-2.png

ロール作成

IAMでロールの作成を行う。ユースケースの選択EC2を選択する。

2-1.png

AmazonSSMFullAccessを選択する。

2-2.png

適当に名前を入力し、ロールを作成する。

2-4.png

ロールをEC2へアタッチ

EC2インスタンスの作成で作成したインスタンスを選択し、IAM ロールの割り当て/置換を選択する。

3-1.png

ロール作成で作成したロールを選択し、適用する。

3-2.png

Session Managerを起動し、EC2にログイン

インスタンスをチェックし、接続ボタンを押下する。

4-1.png

セッションマネージャーを選択し、接続ボタンを押下する。

4-2.png

別タブでターミナルが表示される。
以下のコマンドでec2-userにスイッチすれば、いつものように扱える。

sudo su --login ec2-user

4-3.png

監査ログの出力設定手順

CloudWatch Logsの有効化

AWS Systems Managerでナビゲーションペインのセッションマネージャーを選択する。

5-1.png

設定タブを選択し、編集ボタンを押下する。

5-2.png

CloudWatch Logsをチェック。ログデータを暗号化するは今回はチェックしない。CloudWatchのロググループは、事前に作成したものを指定する。

5-3.png

ログ出力の確認

ログの出力を確認するため、もう一度EC2インスタンスにログインし、コマンドを実行してみる。

Session ManagerのTOP画面からログインする。セッションの開始を押下する。

5-4.png

インスタンスを選択し、セッションを開始するを押下する。

5-5.png

無事ログインできた。

適当にコマンドを入力した後、右上の終了ボタンを押下し、セッションを終了する。

5-6.png

CloudWatch Logsに移動し、監査ログの出力設定手順で指定したロググループにログストリームが作成されていること、入力したコマンドが出力されていることを確認する。

5-7.png

Session Manager + ssh,scpコマンドでEC2にアクセスする手順

Session ManagerでEC2インスタンスにSSH, SCPで接続するためにはEC2の秘密鍵が必要だ。

これを試す際はEC2インスタンスを再作成して、秘密鍵をダウンロードしておくこと。

SSMエージェントのインストール

EC2インスタンスにSSMエージェントのバージョン2.3.672.0以降がインストールされている必要がある。

Amazon Linuxにはデフォルトでインストールされているため、インストール作業は不要。

その他の場合はこちらの目次を参考にインストールしていただきたい

SSM許可ポリシーの作成し、接続を有効化

本手順はユーザが管理者権限を持つ場合、実施不要。

Session Managerのセッション開始を許可するIAMポリシーを作成する。

IAMコンソールからポリシーを選択し、ポリシーの作成ボタンを押下する。

JSONタブを選択し、以下のJSONを貼り付け、ポリシーを作成する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ssm:StartSession",
            "Resource": [
                "arn:aws:ec2:*:*:instance/instance-id",
                "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
            ]
        }
    ]
}

9-1.png

IAMコンソールに戻り、ユーザを選択し、先ほど作成したポリシーをアタッチする。

9-2.png

AWS CLIのインストール

以下にしたがってAWS CLIをインストールする。

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-configure.html

6-1.png

Session Managerプラグインのインストール

以下にしたがってSession Managerプラグインをインストールする。

6-2.png

SSH設定ファイルを更新

~/.ssh/configに以下を追記する。なかったら新規作成。

# SSH over Session Manager
host i-* mi-*
    ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

接続

ssh -i /path/my-key-pair.pem username@instance-id

7-1.png

無事接続することができた。
scpコマンドも同様に接続することができる。

Session Managerでのアクセスを無効にする手順

Session Managerのセッション開始を拒否するIAMポリシーを作成する。

IAMコンソールからポリシーを選択し、ポリシーの作成ボタンを押下する。

8-1.png

JSONタブを選択し、以下のJSONを貼り付け、ポリシーを作成する。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Deny",
            "Action": "ssm:StartSession",
            "Resource": "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
        }
    ]
}

8-2.png

IAMコンソールに戻り、ユーザを選択し、先ほど作成したポリシーをアタッチする。

8-3.png

SSHコマンドを実行し、EC2への接続が拒否されることを確認する。

8-4.png

おわりに

System Managerについて基本を学んだ。より、手軽に安全にEC2にアクセスできるので積極的に活用したい。

余談だが、SSH接続の際、パーミッション問題などでなかなか接続するのに苦労した。
デバッグログ出力させるとトラブルシューティングしやすかった。

ssh -vT

参考

https://qiita.com/e__koma/items/009565384efbecb8a46e
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html
https://dev.classmethod.jp/articles/session-manager-launches-tunneling-support-for-ssh-and-scp/
https://www.bioerrorlog.work/entry/session-manager-ec2-user

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4