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