Session Managerを使用して、パスワードやパブリックIPアドレスを必要とせずにElastic Compute Service (ECS) インスタンスに接続したり、インスタンスでSSHポートとリモートデスクトッププロトコル (RDP) ポートを開いたりできます。 SSHおよび仮想ネットワークコンピューティング (VNC) と比較して、Session Managerを使用すると、より便利で安全な方法でインスタンスに接続できます。 このトピックでは、Session Managerを使用してインスタンスに接続する方法について説明します。
セッションマネージャーの仕組みの詳細については、「セッションマネージャー」をご参照ください。
前提条件
インスタンスは実行中の状態である必要があります。
インスタンスにCloud Assistant Agentがインストールされ、Cloud Assistant AgentのバージョンはSession Managerをサポートしています。
インスタンスがLinuxインスタンスの場合、Cloud Assistant Agentのバージョンは2.2.3.196以降である必要があります。
インスタンスがWindowsインスタンスの場合、Cloud Assistant Agentのバージョンは2.1.3.196以降である必要があります。
Cloud Assistant Agentのバージョンを表示する方法については、「Cloud Assistant Agentのインストール」トピックの「Cloud Assistant Agentに関する情報をインスタンスに表示する」をご参照ください。 Cloud Assistant Agentのアップグレード方法については、「Cloud Assistant Agentのアップグレードまたは無効化」をご参照ください。
インスタンスは、Session Managerが使用可能なリージョンにあります。 詳細については、「セッションマネージャー」トピックのサポートされているリージョンセクションを参照してください。
Resource Access Management (RAM) ユーザーとしてSession Managerを使用する場合は、StartTerminalSession操作を呼び出す権限を付与するポリシーがRAMユーザーにアタッチされていることを確認します。 RAMユーザーにアタッチされたサンプルポリシーの詳細については、このトピックのサンプルポリシーを参照してください。
重要Session Managerを有効にして、パスワードを必要とせずにインスタンスに接続できます。 パスワードなしでRAMユーザーとしてインスタンスに接続する場合は、RAMユーザーにポリシーをアタッチするときに注意してください。 そうしないと、RAMユーザーの不適切な管理や意図しない承認により、不正な操作が実行される可能性があります。
手順
ECSコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーで、リソースが属するリージョンとリソースグループを選択します。
[インスタンス] ページで、接続するインスタンスを見つけ、[操作] 列の [接続] をクリックします。
[その他のログイン方法の表示] をクリックし、[セッション管理] (フルリージョン) が表示されているかどうかを確認します。 [Session Management] が表示された場合は、[Session Manager] を有効にします。
重要RAMユーザーとしてSession Managerを有効にする前に、RAMユーザーに、セッション管理設定を表示するDescribeUserBusinessBehavior権限と、session Managerを有効または無効にするModifyUserBusinessBehavior権限があることを確認してください。 サンプルポリシーの詳細については、このトピックのサンプルポリシーを参照してください。
[Secret-free login] をクリックします。
インスタンスが接続された後、インスタンスがLinuxを実行している場合はecs-assist-userとして、インスタンスがWindowsを実行している場合はシステムユーザーとしてログオンします。 次の図は、Linuxインスタンスへのログインを示しています。
サンプルポリシー
ポリシーの作成方法とRAMユーザーへのポリシーのアタッチ方法については、「カスタムポリシーの作成」と「RAMユーザーへの権限付与」をご参照ください。 次のセクションでは、Session Managerを使用してインスタンスに接続するために必要なポリシーについて説明します。
RAMユーザーにポリシーをアタッチしてStartTerminalSession操作を呼び出す権限を付与した後、Session Managerを使用してRAMユーザーとしてインスタンスに接続できます。 サンプルポリシー:
すべてのインスタンスに接続する権限を付与するポリシー
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StartTerminalSession" ], "Resource": [ "acs:ecs:*:*:instance/*" ] } ], "Version": "1" }
特定のインスタンスに接続する権限を付与するポリシー
重要i-**** パラメーターを、接続するインスタンスのIDに置き換えます。
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StartTerminalSession" ], "Resource": [ "acs:ecs:*:*:instance/i-bp11igy9rss1hu8y****", "acs:ecs:*:*:instance/i-bp1fihgzdytqve94****" ] } ], "Version": "1" }
特定のタグが追加されたインスタンスに接続する権限を付与するポリシー
重要key-**** 変数を指定されたタグのキーに置き換え、value-**** 変数を指定されたタグの値に置き換えます。
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StartTerminalSession" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:tag/key-****": "value-****" } } } ], "Version": "1" }
特定のIPアドレスまたはCIDRブロックからインスタンスに接続する権限を付与するポリシー
重要192.168.XX.XXパラメーターを指定されたIPアドレスに置き換えるか、192.168.XX.XX/24パラメーターを指定されたCIDRブロックに置き換えます。
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StartTerminalSession" ], "Resource": "*", "Condition": { "IpAddress": { "acs:SourceIp": [ "192.168.XX.XX", "192.168.XX.XX/24" ] } } } ], "Version": "1" }
Session Managerを有効にする前に、RAMユーザーには、セッション管理設定を表示するためのDescribeUserBusinessBehavior権限と、session Managerを有効または無効にするためのModifyUserBusinessBehavior権限のみを付与する必要があります。 Session Managerを有効にすると、ビジネス要件に基づいてRAMユーザーから権限を取り消すことができます。 サンプルポリシー:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:ModifyUserBusinessBehavior", "ecs:DescribeUserBusinessBehavior" ], "Resource": "acs:ecs:*:*:instance/*" } ] }
アプリケーションでのリモートログオンにSession Managerを使用する
オープンソースプロジェクトcloud-assistant-starterには、Session Manager機能を使用してECSインスタンスまたはマネージドインスタンスにリモート接続するための完全なコードが含まれています。 プロジェクトでは、AxtSession.tsxは、インスタンスに接続し、StartTerminalSessionによって返されるWebSocket URLを使用するための完全なコードを提供します。 コードスニペットをアプリケーションコードにコピーして、パスワード不要およびパブリックIPアドレス不要のリモートログオンを実装できます。
参考資料
Session Managerは、ECSインスタンスに接続するための複数の方法をサポートしています。 ビジネス要件に基づいて接続方法を選択します。 詳細については、以下のトピックをご参照ください。