セッションマネージャーを使うと、ブラウザのAWSマネジメントコンソールから、対象のEC2インスタンスにSSHの設定無しでアクセスすることができる。
Session Manager を許可する IAM ポリシー の作成
- IAM コンソールを開く
- ポリシーを選択し、ポリシーの作成を選択
- JSONタブを選択
- 下記のJSONを張り付ける
key-name を、使用する AWS KMS key の Amazon リソースネーム (ARN) に置き換え{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:UpdateInstanceInformation", "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "key-name" } ] }
- 次へ、次へを押す
- 名前に
SessionManagerPermissions
を入れる - ポリシーの作成を押す
Session Manager の許可ポリシーを付与した IAM ロール の作成
- ロール -> ロールを作成を押す
- AWS サービスで、ユースケースはEC2を選択する
- 次へを押す
- アクセス許可を追加で、
SessionManagerPermissions
にチェックを入れる -
SecretsManagerReadWrite, AmazonSSMManagedInstanceCore, AmazonSSMManagedEC2InstanceDefaultPolicy
にチェックを入れる - 次へを押す
- ロール名に、
MySessionManagerRole
を入れる - ロールの作成を押す
- 作成したロールはインスタンスへアタッチする
10分ほど待つと、接続できるようになる。
再起動すると、つながるようになるかも。
ec2-userでログインする方法
セッションマネージャーは、デフォルトでssm-userでログインし、/aws/以下のファイルのみマウントされている。そのため、SSHで立ち上げた環境設定をセッションマネージャーでは引き継げない。セッションマネージャーには、ルート権限が与えられておらず、カスタムスクリプトを実行できない場合がある。
- セッションマネージャーを開く
- 設定のタブを開く
- Linux shell profileに下記を記載する
'''
bash
sudo su - ec2-user
'''
まとめ
今回は、Systems Managerを用いて、セキュアにEC2へアクセスする方法を紹介した。