すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:Session Managerを使用したインスタンスへの接続

最終更新日:Jan 16, 2025

Session Managerは、Alibaba Cloudが提供する無料ツールで、Elastic Compute Service (ECS) インスタンスに接続できます。 Cloud AssistantやWebSocketなどのテクノロジーに基づいて開発されたSession Managerは、インターネット接続を必要とせずに、インスタンスへのパスワードなしおよびジャンプサーバーなしのログオンをサポートします。 このトピックでは、Session Managerの使用シナリオと使用上の注意事項について説明します。

セッションマネージャーとは

重要

Session Managerは無料です。 Session Managerの操作レコードを保存する場合は、[セッション操作レコードの配信] 機能を有効にする必要があります。 詳細については、「セッションレコード配信機能の使用」をご参照ください。

セッションマネージャには次の機能があります。

  • パスワードフリー接続: インスタンスに接続するときにパスワードを入力する必要はありません。

  • インターネットアクセスなしのインスタンスへの接続: Session Managerでは、インターネットに接続したり、ジャンプサーバーを設定したりすることなく、インスタンスに接続できます。

    Session Managerを使用してインスタンスに接続すると、関連するコマンドがAlibaba CloudのSession ManagerサーバーによってECSインスタンスに送信されます。
  • 複数のクライアントタイプのサポート:

ログインユーザーの説明

既定では、Session Managerを使用して、Linuxインスタンスをecs-assist-userユーザーとして接続し、Windowsインスタンスをsystemユーザーとして接続します。

  • ecs-assist-user: Linuxの通常のユーザー。 ecs-assist-userユーザーにはシステムレベルの権限がなく、許可された操作のみを実行できます。 sudoコマンドを実行して、ecs-assist-userユーザーに一時的なroot権限を付与できます。

  • system: 最も高いシステム権限を持つWindowsのオンプレミスシステムアカウント。

制限と前提条件

  • 接続するインスタンスのステータスは [実行中] です。

  • Cloud Assistant Agentがインスタンスにインストールされています。 Session ManagerはCloud Assistant Agentに基づいて実装されています。

    Cloud Assistant Agentは、2017年12月1日以降にAlibaba Cloudパブリックイメージから作成されたECSインスタンスにプリインストールされます。 2017 12月1日より前に作成されたECSインスタンスの場合、Cloud Assistant Agentを手動でインストールする必要があります。 詳細については、「Cloud Assistant Agentのインストール」をご参照ください。
  • ネットワーク接続が利用可能です。 インスタンスがCloud Assistantサーバーに接続されていることを確認します。 これにより、Cloud Assistant AgentはWebSocketを介してCloud Assistantサーバーと通信できます。 詳細については、このトピックの「セキュリティグループの設定」をご参照ください。

  • リージョンごとに最大1,000のセッションを作成し、引き続き使用できます。 各ECSインスタンスは、接続状態で最大20セッションを持つことができます。 帯域幅は、各セッションに対して200 kbit/sに制限される。

その他の機能とシナリオ

  • ポート転送機能を使用したインターネット接続なしのアクセスサービス

    Session Manager Clientのポート転送機能を使用して、ECSインスタンスのサービスポートをオンプレミスマシンのポートにマッピングできます。 その後、ECSインスタンス上のサービスにアクセスするためのリクエストをオンプレミスポートに送信できます。 たとえば、内部ネットワーク経由でデプロイされたwebバックエンドサービスにアクセスしたり、SSHを使用して内部ネットワーク経由でインスタンスに接続したりできます。 Session Managerは、TCP経由でWebSocket接続を確立します。 したがって、ポート転送機能はTCPポート転送のみをサポートし、UDPポート転送はサポートしません。 詳細については、「Session Manager CLIのポート転送機能を使用したインターネット接続なしのインスタンスへの接続」をご参照ください。

  • インスタンスへの一時的なSSH公開鍵の追加

    SSHを使用してインスタンスに接続する場合、Session Managerを使用して、60秒間有効な一時公開キーをインスタンスに追加できます。 次に、一時公開キーと秘密キーを含むキーペアを使用して、インスタンスに接続できます。 詳細については、「Session Manager CLIを使用してインスタンスにパスワードなしでログオンするための一時公開キーを登録する」をご参照ください。

  • セッションレコード配信機能の使用

    複数のユーザーとのセッションを確立する場合は、セッションレコードの配信機能を使用して、特定のユーザーの操作レコードを表示し、その後の操作監査を行うことができます。 セッションレコード配信機能を有効にする方法の詳細については、「セッションレコード配信機能の使用」をご参照ください。

セッションマネージャーの仕組み

次の図に示すように、Session Managerを使用してECSインスタンスに接続すると、Session ManagerクライアントとECSインスタンスがクラウドアシスタントサーバーへのWebSocket接続を確立します。 接続が確立されると、入力した各コマンドはクラウドアシスタントサーバーによってインスタンスに転送され、インスタンス上でクラウドアシスタントエージェントによって実行されます。

image

図に含まれるモジュール

  • Cloud Assistantクライアント: ECSコンソールのSession Manager、オンプレミスマシンのali-instance-cli、Cloud Assistant Agentなど、使用するクライアントツールです。

  • クラウドアシスタントサーバー: セッションマネージャーはクラウドアシスタントに基づいて実装され、権限とセッションステータスを管理します。

  • インスタンスにインストールされたCloud Assistant Agent: 入力したコマンドを実行します。

接続の説明

  • Session Manager ClientCloud AssistantサーバーへのWebSocket接続を確立すると (手順2〜4) 、Cloud AssistantサーバーはSession Managerクライアントを認証して、Session Managerを使用してインスタンスに接続する権限があるかどうかを判断します。 関連する権限の詳細については、このトピックの権限管理セクションを参照してください。

  • ECSのクラウドアシスタントエージェントクラウドアシスタントサーバーへのWebSocket接続を確立すると (手順5および6) 、クラウドアシスタントサーバーはクラウドアシスタントエージェントに接続の確立を通知します。 その後、Cloud Assistant Agentは、Cloud Assistantサーバーへの接続をアクティブに確立します。

    ECSインスタンスがCloud Assistantサーバーにアクセスするには、送信WebSocketポートが開いている必要があります。 接続プロセスは、ECSインスタンスが属するセキュリティグループのインバウンドルールとは無関係です。 詳細については、このトピックの「セキュリティグループの設定」をご参照ください。

セキュリティ

  • 暗号化: Web Socket Secure (WSS) プロトコルを使用して、Session ManagerクライアントとCloud Assistantサーバー間、およびCloud AssistantサーバーとCloud Assistant Agent間に永続的なWebSocket接続を確立します。 データのセキュリティを向上させるために、WSSプロトコルはSSL (Secure Socket Layer) プロトコルを使用して永続的なWebSocket接続を暗号化します。

  • 認証: Session Managerを使用してインスタンスに接続する場合、インスタンスのパスワードを管理する必要はなく、インスタンスにパスワード漏洩のリスクはありません。 ユーザー名 /パスワードベースの認証を使用するSSHおよび仮想ネットワークコンピューティング (VNC) と比較して、セッションマネージャーはリソースアクセス管理 (RAM) ベースの認証を使用します。 関連する権限の詳細については、このトピックの権限管理セクションを参照してください。

  • ネットワーク: インスタンスにインストールされているCloud Assistant AgentとCloud Assistantサーバーの間にWebSocket接続が確立された後、SSHまたはVNCの代わりにSession Managerを使用してインスタンスに接続できます。インスタンスのインバウンドトラフィック用のポートを開く必要はありません。 これにより、インスタンスのセキュリティが向上します。

接続プロセス

  • ECSコンソール (ブラウザ) でSession Managerを使用してインスタンスに接続します。

    ブラウザでAlibaba Cloud管理コンソールにログインし、Session Managerを使用してインスタンスに接続します。 詳細については、「Session Managerを使用したインスタンスへの接続」をご参照ください。 次の図にプロセスを示します。

    image
  • オンプレミスのコンピューター (オンプレミスCLI) でSession Managerを使用してインスタンスに接続します。

    オンプレミスのコンピューターにali-instance-cliをインストールし、オンプレミスのCLIを使用して、Session Managerを使用してインスタンスに接続できます。

    詳細については、「ali-instance-cliを使用したインスタンスへの接続」をご参照ください。 次の図にプロセスを示します。

    image

権限管理

RAMユーザーを使用してSession Managerを使用してインスタンスに接続する場合は、必要な権限が必要です。 次の表に、必要な権限を示します。

[アクション] 列は、RAMポリシーのアクションに対応します。

Action

説明

ecs:StartTerminalSession

Session Managerを使用してECSインスタンスに接続します。 (必須)

ecs:DescribeCloudAssistantStatus

ECSインスタンスにCloud Assistant Agentがインストールされているかどうかを照会します。 ECSコンソールでインスタンスに接続する前に、システムはこの権限を確認します。

ecs:DescribeUserBusinessBehavior

Session Managerが有効かどうかを照会します。 ECSコンソールでインスタンスに接続する前に、システムはこの権限を確認します。

ecs:ModifyCloudAssistantSettings

Session Managerを有効または無効にします。 現在のAlibaba CloudアカウントでSession Managerが有効になっている場合、この権限を付与する必要はありません。

権限ポリシーの例

例1: ECSコンソールでのセッションマネージャーの使用

RAMユーザーがSession Managerを使用してECSコンソールのインスタンスに接続する場合、RAMユーザーには最小権限の原則に基づいて次の権限が付与されている必要があります。

  • ecs:StartTerminalSession: Session Managerを使用してインスタンスに接続する権限。 Resourceパラメーターを設定して、RAMユーザーがSession Managerを使用して接続できるECSインスタンスを指定できます。

  • ecs:DescribeCloudAssistantStatus: Cloud Assistant AgentをECSインスタンスにインストールする必要があるかどうかを照会する権限。 ECSコンソールでインスタンスに接続する前に、システムはこの権限を確認します。

  • ecs:DescribeUserBusinessBehavior: Session Managerが有効かどうかを照会する権限。 ECSコンソールでインスタンスに接続する前に、システムはこの権限を確認します。

  • (オプション) ecs:ModifyCloudAssistantSettings: セッションマネージャーを有効または無効にする権限。 現在のAlibaba CloudアカウントでSession Managerが有効になっている場合、この権限を付与する必要はありません。

サンプルのカスタムポリシー:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:StartTerminalSession",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeUserBusinessBehavior",
        "ecs:DescribeCloudAssistantStatus",
        "ecs:ModifyCloudAssistantSettings"
      ],
      "Resource": "*"
    }
  ]
}

RAMユーザーに権限を付与する方法については、「RAMユーザーに権限を付与する」をご参照ください。

例2: ali-instance-cliを使用したインスタンスへの接続

ali-instance-cliを使用する場合、RAMユーザーのAccessKeyペアSecurity Token Service (STS) トークンを指定する必要があります。 Session Managerを使用してインスタンスに接続すると、資格情報を持つRAMユーザーがecs:StartTerminalSession権限も持っているかどうかがシステムによって検証されます。

カスタムポリシーを設定する場合、Resourceパラメーターを設定して、RAMユーザーがSession Managerを使用して接続できるECSインスタンスを指定できます。 サンプルポリシー:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:StartTerminalSession",
      "Resource": "*"
    }
  ]
}

CredentialsURIおよびSTS Tokenパラメーターの詳細については、「AccessKeyペアの作成」および「STSとは」をご参照ください。

RAMユーザーに権限を付与する方法については、「RAMユーザーに権限を付与する」をご参照ください。

セキュリティグループの設定

Session Managerを使用してECSインスタンスに接続する場合、次のルールをアウトバウンドセキュリティグループに追加して、ECSインスタンスで実行されているCloud Assistant AgentがCloud Assistantサーバーに接続されていることを確認します。

SSHやリモートデスクトッププロトコル (RDP) などの接続方法と比較して、Cloud Assistant Agentは、Session ManagerサーバーへのWebSocket接続をアクティブに確立します。 セキュリティルールでは、Cloud Assistantサーバーの送信WebSocketポートのみを開く必要があります。 セッションマネージャーの仕組みについては、このトピックのセッションマネージャーの仕組みを参照してください。
重要
  • デフォルトセキュリティグループを含む基本セキュリティグループを使用する場合、すべての送信トラフィックが許可されます。 追加の設定は必要ありません

  • 高度なセキュリティグループを使用すると、すべてのアウトバウンドトラフィックが拒否されます。 関連するルールを設定する必要があります。 次の表にルールを示します。 セキュリティグループの詳細については、「基本的なセキュリティグループと高度なセキュリティグループ」をご参照ください。

セキュリティグループにルールを追加する方法については、「セキュリティグループルールの追加」をご参照ください。

Action

優先度

プロトコルタイプ

ポート範囲

権限付与オブジェクト

説明

許可

1

カスタムTCP

443

100.100.0.0/16

このポートは、Cloud Assistantサーバーへのアクセスに使用されます。

許可

1

カスタムTCP

443

100.0.0.0/8

このポートは、Cloud Assistant Agentをインストールまたは更新するときに、Cloud Assistant Agentインストールパッケージが保存されているサーバーにアクセスするために使用されます。

許可

1

カスタムUDP

53

0.0.0.0/0

このポートはドメイン名を解決するために使用されます。

Session Managerのみを使用してインスタンスに接続する場合は、セキュリティグループからSSHポート (デフォルト22) とRDPポート (デフォルト3389) を許可するインバウンドルールを削除して、ECSインスタンスのセキュリティを向上させます。

インスタンスへのログインのためのアプリケーションへのセッションマネージャー機能の統合

Session Managerを使用してECSインスタンスまたはマネージドインスタンスに接続するために使用される完全なコードについては、「cloud-assistant-starter」をご参照ください。 このプロジェクトのAxtSession.tsxファイルには、StartTerminalSession操作を呼び出してWebSocketURLを取得し、接続を確立するためのサンプルコードが含まれています。 コードをエンタープライズアプリケーションに移植した後、Session Managerを使用してインスタンスに接続できます。