AWS Systems Manager
ユーザーガイド

AWS Systems Manager Session Manager

Session Manager はフルマネージド型 AWS Systems Manager 機能で、インタラクティブなワンクリックブラウザベースのシェル、または AWS CLI を介して Amazon EC2 インスタンスを管理できます。Session Manager は、インバウンドポートを開いたり、踏み台ホストを維持したり、SSH キーを管理したりすることなく、安全で監査可能なインスタンスの管理を提供します。Session Manager は、Amazon EC2 インスタンスへの簡単なワンクリックのクロスプラットフォームアクセスをエンドユーザーに提供しつつ、インスタンスへの制御されたアクセス、厳格なセキュリティプラクティス、インスタンスアクセスの詳細を含む、完全に監査可能なログを必要とする企業ポリシーに準拠することを容易にします。

Session Manager はどのように組織にとってメリットになりますか?

Session Manager は、以下の利点を提供します。

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

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

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

    インスタンスでインバウンド SSH ポートとリモート PowerShell ポートを開いたままにすると、エンティティが許可されていないコマンドや、悪意のあるコマンドをインスタンス上で実行するリスクが大幅に増加します。Session Manager は、これらの着信ポートを閉じることにより、SSH キーと証明書、踏み台ホスト、およびジャンプボックスの管理からユーザーを解放して、セキュリティ体制を向上させるのに役立ちます。

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

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

  • ポート転送

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

  • Windows と Linux の両方でクロスプラットフォームをサポート

    Session Manager は、単一のツールから Windows と Linux の両方にサポートを提供します。たとえば、Linux インスタンスには SSH クライアントを使用し、Windows インスタンスには RDP 接続を使用するということは必要ありません。

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

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

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

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

    • Amazon Simple Storage Service – 監査のために選択した Amazon S3 バケットにセッションログデータを保存できます。ログデータは、AWS Key Management Service (AWS KMS) キーを使用した暗号化の有無にかかわらず、S3 バケットに送信できます。詳細については、「Amazon S3 を使用してセッションデータをログ記録する (コンソール)」を参照してください。

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

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

Session Manager はどのようなユーザーに適していますか?

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

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

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

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

Session Manager の主な特徴は何ですか。

  • Windows と Linux インスタンスの両方をサポート

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

    注記

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

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

    次の方法で Session Manager を使用できます。

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

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

    注記

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

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

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

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

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

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

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

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

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

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

  • トンネリング

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

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

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

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

A session is a connection made to an instance using Session Manager. Sessions are based on a secure bi-directional communication channel between the client (you) and the remote managed instance that streams inputs and outputs for commands. Traffic between a client and a managed instance is encrypted using TLS 1.2, and requests to create the connection are signed using Sigv4. This two-way communication enables interactive bash and PowerShell access to instances. You can also use an AWS Key Management Service (AWS KMS) key to further encrypt data beyond the default TLS encryption.

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

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