Session Manager は、Elastic Compute Service (ECS) インスタンスに接続できるようにするために Alibaba Cloud が提供する無料ツールです。Cloud Assistant や WebSocket などのテクノロジーに基づいて開発された Session Manager は、インターネット接続を必要とせずに、インスタンスへのパスワードなし、ジャンプサーバーなしのログインをサポートします。このトピックでは、Session Manager の使用シナリオと使用上の注意について説明します。
Session Manager とは?
Session Manager は無料です。Session Manager 操作レコードを保存する場合は、[セッション操作レコード配信] 機能を有効にする必要があります。詳細については、「セッションレコード配信機能を使用する」をご参照ください。
Session Manager は、次の機能を提供します。
パスワードなし接続: インスタンスに接続するときにパスワードを入力する必要はありません。
インターネットアクセスがないインスタンスへの接続: Session Manager を使用すると、インターネットに接続したり、ジャンプサーバーを構成したりすることなく、インスタンスに接続できます。
Session Manager を使用してインスタンスに接続する場合、関連するコマンドは Alibaba Cloud の Session Manager サーバーによって ECS インスタンスに送信されます。
複数のクライアントタイプをサポート:
[Alibaba Cloud 管理コンソール]: ブラウザで Session Manager クライアントを使用してインスタンスに接続する方法については、「ECS コンソールで Session Manager を使用してインスタンスに接続する」をご参照ください。
ali-instance-cli のインストールが必要なコマンドライン: Session Manager を使用してコンピューター上のインスタンスに接続する方法については、「Session Manager CLI (ali-instance-cli) を使用してインスタンスに接続する」をご参照ください。
ログインユーザーの説明
デフォルトでは、Session Manager を使用して Linux インスタンスに ecs-assist-user ユーザーとして、Windows インスタンスに system ユーザーとして接続します。
ecs-assist-user: Linux の一般ユーザーです。ecs-assist-user ユーザーはシステムレベルの権限を持たず、承認された操作のみを実行できます。sudoコマンドを実行して、ecs-assist-user ユーザーに一時的な root 権限を付与できます。system: 最上位のシステム権限を持つ Windows のオンプレミス システムアカウントです。
制限事項と前提条件
接続先のインスタンスは、[実行中] 状態です。
Cloud Assistant エージェント がインスタンスにインストールされている。Session Manager は Cloud Assistant エージェント に基づいて実装されています。
Cloud Assistant エージェント は、2017年12月1日以降に Alibaba Cloud パブリックイメージ から作成された ECS インスタンスにプリインストールされています。2017年12月1日より前に作成された ECS インスタンスの場合は、Cloud Assistant エージェントを手動でインストールする必要があります。詳細については、「Cloud Assistant エージェントをインストールする」をご参照ください。
ネットワーク接続が利用可能である。インスタンスが Cloud Assistant サーバーに接続されていることを確認してください。これにより、Cloud Assistant エージェントは WebSocket 経由で Cloud Assistant サーバーと通信できます。詳細については、このトピックの「セキュリティグループ設定」セクションをご参照ください。
リージョンごとに最大 1,000 セッションを作成し、利用可能な状態を維持できます。各 ECS インスタンスは、接続状態で最大 20 セッションを持つことができます。帯域幅はセッションごとに 200 kbit/s に制限されています。
その他の機能とシナリオ
ポート転送機能を使用してインターネットに接続せずにサービスにアクセスする
Session Manager クライアントのポート転送機能を使用して、ECS インスタンスのサービスポートをオンプレミス マシンのポートにマッピングできます。次に、オンプレミス ポートにリクエストを送信して、ECS インスタンス上のサービスにアクセスできます。たとえば、内部ネットワーク上にデプロイされた Web バックエンド サービスにアクセスしたり、SSH を使用して内部ネットワーク上のインスタンスに接続したりできます。Session Manager は TCP 経由で WebSocket 接続を確立します。したがって、ポート転送機能は TCP ポート転送のみをサポートし、UDP ポート転送はサポートしていません。詳細については、「Session Manager CLI のポート転送機能を使用してインターネットに接続せずにインスタンスに接続する」をご参照ください。
インスタンスに一時的な SSH 公開鍵を追加する
SSH を使用してインスタンスに接続する場合、Session Manager を使用して、60 秒間有効な一時的な公開鍵をインスタンスに追加できます。次に、一時的な公開鍵と秘密鍵を含むキーペアを使用して、インスタンスに接続できます。詳細については、「Session Manager CLI を使用して、インスタンスへのパスワードなしログインのための一時的な公開鍵を登録する」をご参照ください。
セッションレコード配信機能を使用する
複数のユーザーとセッションを確立する場合、セッションレコード配信機能を使用して、特定のユーザーの操作レコードを表示し、後続の操作監査を行うことができます。セッションレコード配信機能を有効にする方法については、「セッションレコード配信機能を使用する」をご参照ください。
Session Manager のしくみ
次の図に示すように、Session Manager を使用して ECS インスタンスに接続する場合、Session Manager クライアントと ECS インスタンスは Cloud Assistant サーバーへの WebSocket 接続を確立します。接続が確立されると、入力した各コマンドは Cloud Assistant サーバーによってインスタンスに転送され、インスタンス上の Cloud Assistant エージェント によって実行されます。
図に含まれるモジュール
Cloud Assistant クライアント: 使用するクライアントツール。ECS コンソールの Session Manager、オンプレミス マシンの ali-instance-cli、または Cloud Assistant エージェントなど。
Cloud Assistant サーバー: Session Manager は、Cloud Assistant に基づいて実装され、権限とセッションステータスを管理します。
インスタンスにインストールされている Cloud Assistant エージェント: 入力したコマンドを実行します。
接続の説明
[Session Manager クライアント] が [Cloud Assistant サーバー] への WebSocket 接続を確立すると(手順 2 ~ 4)、Cloud Assistant サーバーは Session Manager クライアントを認証して、Session Manager を使用してインスタンスに接続する権限があるかどうかを判断します。関連する権限については、このトピックの「権限管理」セクションをご参照ください。
ECS 内の Cloud Assistant Agent が Cloud Assistant サーバーへの WebSocket 接続を確立すると (ステップ 5 および 6)、Cloud Assistant サーバーは Cloud Assistant Agent に接続を確立するよう通知します。その後、Cloud Assistant Agent は Cloud Assistant サーバーにアクティブに接続を確立します。
ECS インスタンスが Cloud Assistant サーバーにアクセスするには、アウトバウンド WebSocket ポートを開く必要があることに注意してください。接続プロセスは、ECS インスタンスが属するセキュリティグループのインバウンドルールとは無関係です。詳細については、このトピックの「セキュリティグループ設定」セクションをご参照ください。
セキュリティ
暗号化: Web Socket Secure (WSS) プロトコルは、Session Manager クライアントと Cloud Assistant サーバー間、および Cloud Assistant サーバーと Cloud Assistant エージェント 間で永続的な WebSocket 接続を確立するために使用されます。データセキュリティを向上させるために、WSS プロトコルは Secure Socket Layer (SSL) プロトコルを使用して永続的な WebSocket 接続を暗号化します。
認証: Session Manager を使用してインスタンスに接続する場合、インスタンスパスワードを管理する必要はなく、インスタンスにパスワード漏洩のリスクはありません。ユーザー名/パスワードベースの認証を使用する SSH や Virtual Network Computing (VNC) と比較して、Session Manager は Resource Access Management (RAM) ベースの認証を使用します。関連する権限については、このトピックの「権限管理」セクションをご参照ください。
ネットワーク: インスタンスにインストールされている Cloud Assistant エージェント と Cloud Assistant サーバー間で WebSocket 接続が確立されると、インスタンスのインバウンドトラフィック用のポートを開くことなく、SSH や VNC の代わりに Session Manager を使用してインスタンスに接続できます。これにより、インスタンスのセキュリティが向上します。
接続プロセス
ECS コンソール(ブラウザ内)で Session Manager を使用してインスタンスに接続する。
ブラウザで Alibaba Cloud 管理コンソールにログインし、Session Manager を使用してインスタンスに接続します。詳細については、「ECS コンソールで Session Manager を使用してインスタンスに接続する」をご参照ください。次の図は、プロセスを示しています。
オンプレミス コンピューター(オンプレミス CLI)で Session Manager を使用してインスタンスに接続する。
オンプレミス コンピューターに ali-instance-cli をインストールし、オンプレミス CLI を使用して Session Manager を介してインスタンスに接続できます。
詳細については、「Session Manager CLI (ali-instance-cli) を使用してインスタンスに接続する」をご参照ください。次の図は、プロセスを示しています。
権限管理
RAM ユーザーを使用して Session Manager によってインスタンスに接続する場合は、必要な権限を持っている必要があります。次の表に、必要な権限を示します。
[アクション] 列は、RAM ポリシーのアクションに対応しています。
アクション | 説明 |
| (必須) Session Manager を使用して ECS インスタンスに接続します。 |
| Cloud Assistant エージェント が ECS インスタンスにインストールされているかどうかをクエリします。ECS コンソールでインスタンスに接続する前に、システムはこの権限を確認します。 |
| Session Manager が有効になっているかどうかをクエリします。ECS コンソールでインスタンスに接続する前に、システムはこの権限を確認します。 |
| Session Manager を有効または無効にします。現在の Alibaba Cloud アカウントで Session Manager が有効になっている場合は、この権限を付与する必要はありません。 |
権限ポリシーの例
例 1: ECS コンソールで Session Manager を使用する
例 2: ali-instance-cli を使用してインスタンスに接続する
例 3: 特定のユーザーに Session Manager を使用する権限を付与する RAM ポリシーを作成する
セキュリティグループ設定
Session Manager を使用して ECS インスタンスに接続する場合は、次のルールをアウトバウンド セキュリティグループに追加することで、ECS インスタンスで実行されている Cloud Assistant エージェント が Cloud Assistant サーバーに接続されていることを確認してください。
SSH やリモート デスクトップ プロトコル (RDP) などの接続方法と比較して、Cloud Assistant エージェント は Session Manager サーバーへの WebSocket 接続をアクティブに確立します。セキュリティルールでは、Cloud Assistant サーバーのアウトバウンド WebSocket ポートのみを開く必要があります。Session Manager のしくみについては、このトピックの「Session Manager のしくみ」セクションをご参照ください。
デフォルトセキュリティグループを含む基本セキュリティグループを使用する場合、すべてのアウトバウンドトラフィックが許可されます。追加の構成は必要ありません。
高度なセキュリティグループを使用する場合、すべてのアウトバウンドトラフィックが拒否されます。関連するルールを構成する必要があります。次の表に、ルールを示します。セキュリティグループについては、「基本セキュリティグループと高度なセキュリティグループ」をご参照ください。
セキュリティグループにルールを追加する方法については、「セキュリティグループルールを追加する」をご参照ください。
アクション | 優先度 | プロトコルタイプ | ポート範囲 | 承認オブジェクト | 説明 |
許可 | 1 | カスタム TCP | 443 |
| このポートは、Cloud Assistant サーバーへのアクセスに使用されます。 |
許可 | 1 | カスタム TCP | 443 |
| このポートは、Cloud Assistant エージェント をインストールまたは更新する場合に、Cloud Assistant エージェント インストールパッケージが保存されているサーバーへのアクセスに使用されます。 |
許可 | 1 | カスタム UDP | 53 |
| このポートは、ドメイン名の解決に使用されます。 |
Session Manager のみを使用してインスタンスに接続する場合は、ECS インスタンスのセキュリティを向上させるために、セキュリティグループから SSH ポート(デフォルト 22)と RDP ポート(デフォルト 3389)を許可するインバウンドルールを削除します。
インスタンスにログインするためのアプリケーションに Session Manager 機能を統合する
Session Manager を使用して ECS インスタンスまたはマネージドインスタンスに接続するために使用される完全なコードについては、cloud-assistant-starter をご参照ください。このプロジェクトの AxtSession.tsx ファイルには、StartTerminalSession 操作を呼び出して WebSocketURL を取得し、接続を確立するためのサンプルコードが含まれています。コードをエンタープライズ アプリケーションに移植した後、Session Manager を使用してインスタンスに接続できます。