AWS Systems Manager Session Manager - AWS Systems Manager

AWS Systems Manager Session Manager

Session Manager は、AWS Systems Manager のフルマネージド機能で、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、オンプレミスインスタンス、仮想マシン (VM) を、インタラクティブなワンクリックブラウザベースのシェルまたは AWS コマンドラインインターフェイス (AWS CLI) を介して管理できます。Session Manager は、受信ポートを開いたり、踏み台ホストを維持したり、SSH キーを管理したりすることなく、安全で監査可能なインスタンス管理を行えます。また、Session Manager により、一方でエンドユーザーには マネージドインスタンスへのクロスプラットフォームアクセスをワンクリックで簡単に行えるようにしながら、他方でインスタンスへのアクセスの制御、厳格なセキュリティプラクティス、およびインスタンスアクセスの詳細を含む完全な監査可能なログを必要とする企業ポリシーへの準拠も容易になります。

Session Manager は自分の組織にどのような利点がありますか?

Session Manager には、次の利点があります。

  • IAM ポリシーを使用したインスタンスへの一元的なアクセス制御

    管理者がインスタンスへのアクセスを許可および取り消す場所は、1 か所だけです。AWS Identity and Access Management (IAM) ポリシーを使用するだけで、組織内のどのユーザーまたはグループがセッションマネージャーを使用でき、どのインスタンスにアクセスできるかを制御できます。

  • インバウンドポートを開いたり、踏み台ホストや SSH キーを管理したりする必要はありません

    インスタンスでインバウンド SSH ポートとリモート PowerShell ポートを開いたままにすると、エンティティがインスタンス上で不正なコマンドや悪意のあるコマンドを実行してしまうリスクが大幅に高まります。Session Manager を使用すると、このような着信ポートを閉じることができ、SSH キーと証明書、踏み台ホスト、およびジャンプボックスの管理から解放され、セキュリティポスチャが向上します。

  • コンソールと CLI からインスタンスへのワンクリックアクセス

    AWS Systems Manager コンソール、または Amazon EC2 コンソールを使用すると、ワンクリックでセッションを開始できます。AWS CLI を使用して、1 つのコマンドまたは一連のコマンドを実行するセッションを開始することもできます。インスタンスへのアクセス権限は、SSH キーやその他の仕組みではなく IAM ポリシーによって提供されるため、接続時間が大幅に短縮されます。

  • ポート転送

    リモートインスタンス内の任意のポートをクライアントのローカルポートにリダイレクトします。その後、ローカルポートに接続し、インスタンス内で実行されているサーバーアプリケーションにアクセスします。

  • Windows、Linux、および macOS 間でプラットフォームをサポート

    Session Manager は、単一のツールから、Windows、Linux、および macOS のサポートを提供します。例えば、Linux と macOS インスタンスには SSH クライアントを使用する必要はなく、nWindows Server インスタンスでの RDP 接続も不要です。

  • ログ記録と監査のセッションアクティビティ

    組織内の運用上またはセキュリティ上の要件を満たすために、インスタンスに対して行われた接続と、そのインスタンス上で実行されたコマンドの記録を提供する必要があります。組織内のユーザーがセッションアクティビティを開始または終了すると、通知を受け取ることもできます。

    ログ記録および監査機能は、次の AWS サービスとの統合によって提供されます。

    • AWS CloudTrail – AWS CloudTrail は、 AWS アカウント で行われた Session Manager API 呼び出しに関する情報をキャプチャし、指定した Amazon Simple Storage Service (Amazon S3) バケットに格納されているログファイルに書き込みます。アカウントのすべての CloudTrail ログに対して 1 つのバケットが使用されています。詳細については、「AWS CloudTrail による AWS Systems Manager API 呼び出しのログ記録」を参照してください。

    • Amazon Simple Storage Service - デバッグおよびトラブルシューティングの目的で、選択した Amazon S3 バケットにセッションログデータを保存することができます。ログデータは、AWS KMS キーを使用した暗号化の有無にかかわらず、Amazon S3 バケットに送信できます。詳細については、「Amazon S3 を使用してセッションデータをログ記録する (コンソール)」を参照してください。

    • Amazon CloudWatch Logs – CloudWatch Logs を使用すると、さまざまな AWS のサービスのログファイルを監視、保存、およびアクセスできます。デバッグおよびトラブルシューティングの目的で、セッションログデータを CloudWatch Logs ロググループに送信できます。ログデータは、KMS キーを使用した AWS KMS 暗号化の有無にかかわらずロググループに送信できます。詳細については、「Amazon CloudWatch Logs を使用してセッションデータをログ記録する (コンソール)」を参照してください。

    • Amazon EventBridgeAmazon Simple Notification Service – EventBridge では、指定した AWS リソースに変更がいつ発生したかを検出するルールを設定できます。組織内のユーザーがセッションを開始または停止したタイミングを検出し、そのイベントに関する通知を Amazon SNS 経由で (テキストまたは E メールメッセージなど) 受信するルールを作成できます。CloudWatch イベントを設定して、他の応答を開始することもできます。詳細については、「Amazon EventBridge を使用してセッションアクティビティをモニタリングする (コンソール) 」を参照してください。

    注記

    ログ記録は、ポート転送または SSH を介して接続する Session Manager セッションでは使用できません。これは、SSH はすべてのセッションデータを暗号化し、Session Manager は SSH 接続のトンネルとしてのみ機能するためです。

Session Manager はどのような利用者に適していますか?

  • インスタンスへのアクセス制御を一元化することで、セキュリティと監査の体制を強化し、運用のオーバーヘッドを削減してインバウンドのインタンスアクセスを削減する AWS ユーザー。

  • インスタンスのアクセスとアクティビティの監視および追跡、インスタンスのインバウンドポートのクローズ、パブリック IP アドレスを持たないインスタンスへの接続の有効化を希望する情報セキュリティの専門家。

  • 単一の場所からアクセス権を付与および取り消したり、Linux、macOS、Windows Server インスタンス両方のユーザーに 1 つのソリューションを提供したい管理者。

  • SSH キーを提供せずに、ブラウザまたは AWS CLI からワンクリックでインスタンスに接続したいユーザー。

Session Manager の主な機能は何ですか?

  • Windows Server、Linux、macOS インスタンスのサポート

    Session Manager を使用すると、Amazon Elastic Compute Cloud (EC2) インスタンス、オンプレミスインスタンス、および仮想マシン (VM) への安全な接続を確立できます。サポートされているオペレーティングシステムタイプのリストについては、「Session Manager を設定する」を参照してください。

    注記

    オンプレミスサーバーの Session Manager のサポートは、アドバンストインスタンス層に対してのみ提供されています。詳細については、アドバンストインスタンス層の有効化 を参照してください。

  • Session Manager 機能へのコンソール、CLI、SDK アクセス

    Session Manager は、次の方法で利用できます。

    AWS Systems Manager コンソールでは、管理者とエンドユーザーの両方向けの Session Manager のすべての機能にアクセスすることもできます。セッションに関連するタスクは、すべて Systems Manager コンソールを使用して実行できます。

    Amazon EC2 コンソールは、エンドユーザーがセッションアクセス許可を付与されている EC2 インスタンスに接続できるようにします。

    AWS CLI には、エンドユーザー向けの Session Manager 機能へのアクセスが含まれています。AWS CLI を使用すると、セッションを開始したり、セッションのリストを表示したり、セッションを完全に終了させることができます。

    注記

    AWS CLI を使用してセッションコマンドを実行するには、CLI のバージョン 1.16.12 (またはそれ以降) を使用していて、ローカルマシンに Session Manager プラグインがインストールされている必要があります。詳細については、(オプション) AWS CLI 用の Session Manager プラグインをインストールする を参照してください。

    Session Manager SDK は、アプリケーションデベロッパーがフロントエンドアプリケーションを構築できるようにするライブラリとサンプルコードで構成されています。これには、インスタンスへの接続に Session Manager をネイティブに使用する社内ユーザー用のカスタムシェルや、セルフサービスポータルなどが含まれます。デベロッパーとパートナーは、Session Manager API を使用して、Session Manager をクライアント側のツールまたはオートメーションワークフローに統合できます。カスタムソリューションを構築することもできます。

  • IAM アクセスコントロール

    IAM ポリシーを使用することで、組織のどのメンバーがインスタンスに対してセッションを開始するか、またメンバーがどのインスタンスにアクセスできるかを割り当てることができます。インスタンスへの一時的なアクセス権を提供することもできます。たとえば、オンコールエンジニア (またはオンコールエンジニアのグループ) に、彼らのローテーション期間に限って本稼働サーバーへのアクセス権を与える場合があります。

  • ログ記録および監査機能のサポート

    Systems Manager は、他の多くの AWS のサービスとの統合により、 AWS アカウント のセッション履歴を監査してログに記録するためのオプションを提供します。詳細については、「セッションアクティビティの監査」および「セッションアクティビティのログ記録」を参照してください。

  • 設定可能なシェルプロファイル

    Session Manager には、セッション内で詳細設定を行うためのオプションが用意されています。これらのカスタマイズ可能なプロファイルを使用すると、シェルの設定、環境変数、作業ディレクトリ、セッション開始時の複数のコマンドの実行など、セッション内の設定をカスタマイズできます。

  • お客様のキーデータ暗号化のサポート

    Amazon Simple Storage Service (Amazon S3) バケットに送信する、または CloudWatch Logs ロググループにストリームするセッションデータログを暗号化するように、Session Manager を設定できます。セッション中にクライアントマシンとインスタンス間で送信されるデータをさらに暗号化するように Session Manager を設定することもできます。詳細については、「セッションアクティビティのログ記録」および「セッション設定を構成する」を参照してください。

  • パブリック IP アドレスのないインスタンスの AWS PrivateLink サポート

    AWS PrivateLink を使用して Systems Manager の VPC エンドポイントを設定し、セッションをさらに安全にすることもできます。AWS PrivateLink は、マネージドインスタンス、Systems Manager、および Amazon EC2 間のすべてのネットワークトラフィックを Amazon ネットワークに制限します。詳細については、「(オプション) 仮想プライベートクラウドエンドポイントの作成」を参照してください。

  • トンネリング

    セッションでは、セッションタイプ AWS Systems Manager SSM ドキュメントを使用して、クライアントマシンのローカルポートとインスタンスのリモートポート間のトラフィック (http やカスタムプロトコルなど) をトンネルします。

  • インタラクティブコマンド

    セッションを使用して単一のコマンドをインタラクティブに実行するセッションタイプ SSM ドキュメントを作成します。これにより、インスタンスでユーザーが実行できる操作を管理する方法が得られます。

セッションとは何ですか。

セッションは、Session Manager を使用して確立されたインスタンスへの接続です。セッションは、クライアント (ユーザー) と、コマンドの入出力をストリーミングするリモートマネージドインスタンスとの間のセキュアな双方向通信チャネルに基づいています。クライアントとマネージドインスタンスとの間のトラフィックは TLS 1.2 を使用して暗号化され、接続の作成リクエストは Sigv4 を使用して署名されます。この双方向通信により、インスタンスへのインタラクティブバッシュと PowerShell アクセスが可能になります。AWS Key Management Service (AWS KMS) キーを使用して、デフォルトの TLS 暗号化よりも強力なデータの暗号化を行うこともできます。

たとえば、John が IT 部門のオンコールエンジニアであるとします。John は、トラブルシューティングが必要な障害や、インスタンスの単純な構成オプションを変更するディレクティブなど、インスタンスにリモート接続する必要がある問題についての通知を受け取ります。John は AWS Systems Manager コンソール、Amazon EC2 コンソール、または AWS CLI を使用してインスタンスに接続するセッションを開始し、タスクの完了に必要なインスタンス上でコマンドを実行してから、セッションを終了します。

John がセッションを開始するための最初のコマンドを送信すると、Session Manager サービスは ID を認証し、IAM ポリシーにより付与されたアクセス許可を検証して、設定 (セッションの許容限度の確認など) を確認します。それから、SSM エージェントにメッセージを送信して双方向接続を開きます。接続の確立後、John が次のコマンドを入力すると、SSM エージェントからのコマンド出力がこの通信チャネルにアップロードされ、ローカルマシンに送り返されます。