

• AWS Systems Manager CloudWatch ダッシュボードは、2026 年 4 月 30 日以降は利用できなくなります。お客様は、これまでと同様に Amazon CloudWatch コンソールを使用して、Amazon CloudWatch ダッシュボードの表示、作成、管理を継続できます。詳細については、「[Amazon CloudWatch ダッシュボードのドキュメント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)」を参照してください。

# AWS Systems Manager Session Manager
<a name="session-manager"></a>

Session Manager はフルマネージド型の AWS Systems Manager ツールです。Session Manager を使用すると、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) を管理できます。ワンクリックのブラウザベースのインタラクティブシェルまたは AWS Command Line Interface (AWS CLI) を使用できます。Session Manager は安全なノード管理を実現し、インバウンドポートを開いたり、踏み台ホストを維持したり、SSH キーを管理したりする必要はありません。また Session Manager はマネージドノードの制御されたアクセス、厳格なセキュリティプラクティス、ノードアクセス詳細があるログを要件とする社内ポリシーの尊守を実現しつつ、エンドユーザーが簡単なワンクリックのクロスプラットフォームを使用してマネージドノードにアクセスできるようにします。Session Manager の使用を開始するには、[Systems Manager コンソール](https://console.aws.amazon.com/systems-manager/session-manager)を開きます。ナビゲーションペインで、**[Session Manager]** を選択します。

## Session Manager はどのように組織にとってメリットになりますか?
<a name="session-manager-benefits"></a>

Session Manager は、以下の利点を提供します。
+  **IAM ポリシーを使用してマネージドノードの一元化アクセス制御** 

  管理者はマネージドノードのアクセスを許可および取り消す場所は1カ所あります。AWS Identity and Access Management (IAM) ポリシーのみを使用して、Session Manager の使用とアクセス可能なマネージドノードにおいて、組織内で対象となる個々のユーザーまたはグループを管理することができます。
+  **インバウンドポートを開いたり、踏み台ホストや SSH キーを管理したりする必要はありません** 

  マネージドノードのインバウンド SSH ポートとリモート PowerShell ポートを開いたままにした場合、エンティティが未許可または悪意のあるコマンドをマネージドノード上で実行するリスクが大幅に増加します。Session Manager はこれらのインバウンドポートを塞ぎ、SSH キーと証明書の管理、踏み台ホスト、ジャンプボックスの管理からユーザーを解放して、セキュリティ体制の向上に役立ちます。
+  **コンソールと CLI からワンクリックでマネージドノードへアクセス** 

  AWS Systems Manager コンソール、または Amazon EC2 コンソールを使用すると、ワンクリックでセッションを開始できます。AWS CLI を使用して、1 つのコマンドまたは一連のコマンドを実行するセッションを開始することもできます。マネージドノードへのアクセス権限はSSH キーやその他メカニズムではなく、IAM ポリシーによって付与されるため、接続時間が大幅に短縮されます。
+  **[ハイブリッドおよびマルチクラウド](operating-systems-and-machine-types.md#supported-machine-types)環境で Amazon EC2 インスタンスと非 EC2 マネージドノードの両方に接続する** 

  [ハイブリッドおよびマルチクラウド](operating-systems-and-machine-types.md#supported-machine-types)環境では、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスと非 EC2 ノードの両方に接続できます。

  Session Manager を使用して EC2 以外のノードに接続するには、最初にアドバンストインスタンス層をアクティブ化する必要があります。**アドバンストインスタンス層の使用には料金が発生します。**ただし、Session Manager を使用して EC2 インスタンスに接続するための追加料金はありません。詳細については、「[インスタンス層の設定](fleet-manager-configure-instance-tiers.md)」を参照してください。
+  **ポート転送** 

  マネージドノード内の任意のポートをクライアントのローカルポートにリダイレクトします。その後、ローカルポートに接続してノード内で実行されているサーバーアプリケーションにアクセスします。
+  **Windows、Linux、および macOS のクロスプラットフォームサポート** 

  Session Manager は、Windows、Linux、および macOS に対して単一のツールからサポートを提供します。例えば、Linux と macOS のマネージドノードには SSH クライアントを使用する必要はなく、Windows 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 コールのログ記録](monitoring-cloudtrail-logs.md)」を参照してください。
  + **Amazon Simple Storage Service** - デバッグおよびトラブルシューティングの目的で、選択した Amazon S3 バケットにセッションログデータを保存することができます。ログデータは、AWS KMS key を使用した暗号化の有無にかかわらず、Amazon S3 バケットに送信できます。詳しくは、「[Amazon S3 を使用してセッションデータをログ記録する (コンソール)](session-manager-logging-s3.md)」を参照してください。
  + **Amazon CloudWatch Logs** – CloudWatch Logs を使用すると、さまざまな AWS のサービスのログファイルを監視、保存、およびアクセスできます。デバッグおよびトラブルシューティングの目的で、セッションログデータを CloudWatch Logs ロググループに送信できます。ログデータは、KMS キーを使用した AWS KMS 暗号化の有無にかかわらずロググループに送信できます。詳細については、「[Amazon CloudWatch Logs を使用してセッションデータをログ記録する (コンソール)](session-manager-logging-cloudwatch-logs.md)」を参照してください。
  + **Amazon EventBridge** と **Amazon Simple Notification Service** – EventBridge では、指定した AWS リソースに変更がいつ発生したかを検出するルールを設定できます。組織内のユーザーがセッションを開始または停止したタイミングを検出し、そのイベントに関する通知を Amazon SNS 経由で (テキストまたは E メールメッセージなど) 受信するルールを作成できます。CloudWatch イベントを設定して、他の応答を開始することもできます。詳細については、「[Amazon EventBridge を使用してセッションアクティビティをモニタリングする (コンソール)](session-manager-auditing.md#session-manager-auditing-eventbridge-events)」を参照してください。
**注記**  
ログ記録は、ポート転送または SSH を介して接続する Session Manager セッションでは使用できません。これは、SSH が AWS CLI と Session Manager エンドポイントの間で確立された安全な TLS 接続内のすべてのセッションデータを暗号化し、Session Manager が SSH 接続のトンネルとしてのみ機能するためです。

## Session Manager はどのようなユーザーに適していますか?
<a name="session-manager-who"></a>
+ セキュリティの体制を強化し、マネージドノードのアクセス制御を一元化することで運用のオーバーヘッドを削減し、インバウンドノードアクセスを削減することを目指すすべての AWS カスタマー。
+ マネージドノードのアクセスとアクティビティの監視と追跡、マネージドノードのインバウンド ポートの閉鎖、パブリック IP アドレスがないマネージドノードへの接続許可を希望する情報セキュリティの専門家。
+ 単一の場所からアクセス権の付与と取り消しと、Linux、macOS および Windows Server のマネージドノードのユーザーに 1 つのソリューションの提供を希望する管理者。
+ ブラウザまたは AWS CLI からワンクリックかつSSH キーを提供せずにマネージドノードに接続を希望するユーザー。

## Session Manager の主な特徴は何ですか?
<a name="session-manager-features"></a>
+ **Windows Server、Linux および macOS のマネージドノードを対象にしたサポート**

  Session Manager では Amazon Elastic Compute Cloud (EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) への安全な接続を確立できます。サポートされているオペレーティングシステムタイプのリストについては、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。
**注記**  
オンプレミスマシンの Session Manager サポートは、アドバンストインスタンス層に対してのみ提供されています。詳細については、「[アドバンストインスタンス層を有効にするには](fleet-manager-enable-advanced-instances-tier.md)」を参照してください。
+  **コンソール、CLI、および SDK の Session Manager 機能へのアクセス** 

  次の方法で 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-working-with-install-plugin.md)」を参照してください。GitHub でプラグインを表示するには、「[session-manager-plugin](https://github.com/aws/session-manager-plugin)」を参照してください。
+  **IAM アクセスコントロール** 

  IAM ポリシーにより、組織のどのメンバーがマネージドノードにセッションを開始できるか、およびどのノードにアクセスできるかについて管理できます。マネージドノードへの一時的なアクセス権を付与することもできます。たとえば、オンコールエンジニア (またはオンコールエンジニアのグループ) に、彼らのローテーション期間に限って本稼働サーバーへのアクセス権を与える場合があります。
+  **ログ記録のサポート** 

  Session Manager は、他の多くの AWS のサービスとの統合により、AWS アカウント内のセッション履歴をログに記録するためのオプションを提供します。詳細については、「[「セッションアクティビティのログ記録」](session-manager-auditing.md)」および「[セッションロギングの有効化と無効化](session-manager-logging.md)」を参照してください。
+  **設定可能なシェルプロファイル** 

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

  Amazon Simple Storage Service (Amazon S3) バケットに送信する、または CloudWatch Logs ロググループにストリームするセッションデータログを暗号化するように、Session Manager を設定できます。セッション中にクライアントマシンとマネージドノード間で送信されるデータをさらに暗号化するように Session Manager を設定することもできます。詳細については、「[セッションロギングの有効化と無効化](session-manager-logging.md)」および「[セッション設定を構成する](session-manager-getting-started-configure-preferences.md)」を参照してください。
+  **パブリック IP アドレスのないマネージドノード用の AWS PrivateLink サポート** 

  また、AWS PrivateLink を使用して Systems Manager の VPC エンドポイントを設定し、セッションのセキュリティ保護を強化することができます。AWS PrivateLink は、マネージドノード、Systems Manager、Amazon EC2 と Amazon ネットワーク間すべてのネットワークトラフィックを制限します。詳細については、「[Systems Manager のために VPC エンドポイントを使用して EC2 インスタンスのセキュリティを強化する](setup-create-vpc.md)」を参照してください。
+  **トンネリング** 

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

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

## セッションとは何ですか。
<a name="what-is-a-session"></a>

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

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

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

**Topics**
+ [Session Manager はどのように組織にとってメリットになりますか?](#session-manager-benefits)
+ [Session Manager はどのようなユーザーに適していますか?](#session-manager-who)
+ [Session Manager の主な特徴は何ですか?](#session-manager-features)
+ [セッションとは何ですか。](#what-is-a-session)
+ [Session Manager を設定する](session-manager-getting-started.md)
+ [Session Manager の使用](session-manager-working-with.md)
+ [「セッションアクティビティのログ記録」](session-manager-auditing.md)
+ [セッションロギングの有効化と無効化](session-manager-logging.md)
+ [セッションドキュメントスキーマ](session-manager-schema.md)
+ [Session Manager のトラブルシューティング](session-manager-troubleshooting.md)

# Session Manager を設定する
<a name="session-manager-getting-started"></a>

AWS Systems Manager の Session Manager を使ってアカウント内のマネージドノードに接続する前に、以下のトピックの手順を完了してください。

**Topics**
+ [ステップ 1: Session Manager の前提条件を満たす](session-manager-prerequisites.md)
+ [ステップ 2: Session Manager のインスタンスのアクセス権限の確認または追加](session-manager-getting-started-instance-profile.md)
+ [ステップ 3: マネージドノードへのセッションアクセスを制御](session-manager-getting-started-restrict-access.md)
+ [ステップ 4: セッション設定を構成する](session-manager-getting-started-configure-preferences.md)
+ [ステップ 5: (オプション) セッションでのコマンドへのアクセスを制限する](session-manager-restrict-command-access.md)
+ [ステップ 6: (オプション) AWS PrivateLink を使用して Session Manager の VPC エンドポイントを設定する](session-manager-getting-started-privatelink.md)
+ [ステップ 7: (オプション) ssm-user アカウントの管理アクセス許可を有効または無効にする](session-manager-getting-started-ssm-user-permissions.md)
+ [ステップ 8: (オプション) Session Manager を通して SSH 接続のアクセス許可を付与および制御する](session-manager-getting-started-enable-ssh-connections.md)

# ステップ 1: Session Manager の前提条件を満たす
<a name="session-manager-prerequisites"></a>

Session Manager を使用する前に、環境が以下の要件を満たしていることを確認します。


**Session Manager の前提条件**  

| 要件 | 説明 | 
| --- | --- | 
|  サポートされるオペレーティングシステム  |  Session Manager はアドバンストインスタンス層を使用する[ハイブリッドおよびマルチクラウド](operating-systems-and-machine-types.md#supported-machine-types)環境内の非 EC2 マシンに加え、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスへの接続もサポートします。 Session Manager では、次のオペレーティングシステムのバージョンがサポートされています。  Session Manager はアドバンストインスタンス層を使用する[ハイブリッドおよびマルチクラウド](operating-systems-and-machine-types.md#supported-machine-types)環境内の EC2 インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) をサポートします。アドバンストインスタンスの詳細については、「[インスタンス層の設定](fleet-manager-configure-instance-tiers.md)」を参照してください。   **Linux および **macOS****  Session Manager は、AWS Systems Manager でサポートされている Linux および macOS のすべてのバージョンをサポートしています。詳細については、「[サポートされているオペレーティングシステムとマシンタイプ](operating-systems-and-machine-types.md)」を参照してください。  ** Windows **  Session Manager は Windows Server 2012 以降のバージョンをサポートしています。  Microsoft Windows Server 2016 Nano はサポートされていません。   | 
|  SSM Agent  |  少なくとも、セッションを介して接続するマネージドノードに AWS Systems Manager の SSM Agent バージョン 2.3.68.0 以降をインストールする必要があります。 AWS Key Management Service (AWS KMS) で作成したキーを使用してセッションデータを暗号化するオプションを使用するため、SSM Agent のバージョン 2.3.539.0 以降がマネージドノードにインストールされている必要があります。 セッションでシェルプロファイルを使用するには、マネージドノードに SSM Agent のバージョン 3.0.161.0 以降がインストールされている必要があります。 Session Manager ポート転送または SSH セッションを開始するには、マネージドノードに SSM Agent のバージョン 3.0.222.0 以降がインストールされている必要があります。 Amazon CloudWatch Logs を使用してセッションデータをストリーミングするには、マネージドノードに SSM Agent のバージョン 3.0.284.0 以降がインストールされている必要があります。 インスタンスで実行されているバージョン番号を確認する方法については、「[SSM Agent バージョン番号の確認](ssm-agent-get-version.md)」を参照してください。SSM Agent の手動インストールまたは自動アップグレードについては、「[「SSM Agent」 の使用](ssm-agent.md)」を参照してください。  ssm-user アカウントについて SSM Agent のバージョン 2.3.50.0 以降、エージェントはマネージドノード上にルートまたは管理者アクセス許可 (`ssm-user` と呼ばれる) のあるユーザーアカウントを作成します。(2.3.612.0 より前のバージョンでは、SSM Agent が起動または再起動するときにアカウントが作成されます。2.3.612.0 以降のバージョンでは、マネージドノード上でセッションが開始されるときに `ssm-user` が初めて作成されます) セッションは、このユーザーアカウントの管理者認証情報を使用して起動します。このアカウントの管理上の制御を制限することの詳細については、「[ssm-user アカウントの管理権限を無効または有効する](session-manager-getting-started-ssm-user-permissions.md)」のトピックで入手できます。   Windows Server ドメインコントローラーの ssm-user SSM Agent の バージョン 2.3.612.0 以降、`ssm-user` アカウントは Windows Server のドメインコントローラーとして使用されているマネージドノードに自動的に作成されません。ドメインコントローラーとして使用されている Windows Server マシンで Session Manager を使用するには、 アカウントが存在しない場合は手動で `ssm-user` アカウントを作成し、ユーザーに Domain Administrator のアクセス許可を割り当てる必要があります。Windows Server で、SSM Agent はセッションが開始されるたびに `ssm-user` アカウントの新しいパスワードを設定するので、アカウントを作成するときにパスワードを指定する必要はありません。   | 
|  エンドポイントへの接続  |  接続するマネージドノードは、以下のエンドポイントへの HTTPS (ポート 443) アウトバウンド・トラフィックも許可する必要があります: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-prerequisites.html) 詳細については、以下の各トピックを参照してください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-prerequisites.html) または、インターフェイスエンドポイントを使用して必要なエンドポイントに接続することもできます。詳細については、「[ステップ 6: (オプション) AWS PrivateLink を使用して Session Manager の VPC エンドポイントを設定する](session-manager-getting-started-privatelink.md)」を参照してください。  | 
|  AWS CLI  |  (オプション) (AWS Systems Manager コンソールまたは Amazon EC2 コンソールを使用する代わりに) AWS Command Line Interface (AWS CLI) を使用してセッションを開始する場合は、CLI のバージョン 1.16.12 以降をローカルマシンにインストールする必要があります。 `aws --version` を呼び出すとバージョンを確認できます。 CLI をインストールまたはアップグレードする必要がある場合は、AWS Command Line Interface ユーザーガイドの「[AWS Command Line Interface のインストール](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)」を参照してください。 新しいツールが Systems Manager に追加されるか、既存のツールが更新されると必ず、更新されたバージョンの SSM Agent がリリースされます。最新バージョンのエージェントを使用しないと、マネージドノードが Systems Manager の各種ツールや機能を使用できなくなる可能性があります。このため、マシン上で SSM Agent を最新状態に維持するプロセスを自動化することをお勧めします。詳細については、「[SSM Agent への更新の自動化](ssm-agent-automatic-updates.md)」を参照してください。GitHub の「[SSM Agent リリースノート](https://github.com/aws/amazon-ssm-agent/blob/mainline/RELEASENOTES.md)」ページをサブスクライブすると、SSM Agent の更新に関する通知を受け取ることができます。 さらに CLI を使って Session Manager でノードを管理する場合、まずローカルマシンに Session Manager プラグインをインストールする必要があります。詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。  | 
|  アドバンストインスタンス層 ([ハイブリッドおよびマルチクラウド](operating-systems-and-machine-types.md#supported-machine-types)環境) を有効にする  |  Session Manager で非 EC2 に接続する場合、非 EC2 マシンをマネージドノードとして登録するためにハイブリッドアクティベーションを作成する際に AWS アカウント と AWS リージョン のアドバンストインスタンス層を有効にします。アドバンストインスタンス層の使用には料金が発生します。アドバンストインスタンス層の詳細については、[インスタンス層の設定](fleet-manager-configure-instance-tiers.md) をご参照ください。  | 
|  IAM サービスロールの許可 ([ハイブリッドおよびマルチクラウド](operating-systems-and-machine-types.md#supported-machine-types)環境) の確認  |  ハイブリッドアクティベーションノードは Systems Manager API オペレーションと通信するため、ハイブリッドアクティベーションで指定された AWS Identity and Access Management (IAM) サービスロールを使用します。このサービスロールには、Session Manager を使用して[ハイブリッドおよびマルチクラウド](operating-systems-and-machine-types.md#supported-machine-types)マシンに接続するために必要な許可が含まれている必要があります。サービスロールが AWS 管理ポリシー `AmazonSSMManagedInstanceCore` を含む場合、Session Manager に必要なアクセス許可は既に付与されています。 サービスロールに必要な許可が含まれていない場合、マネージドインスタンスの登録を解除し、必要な許可を持った IAM サービスロールを使用する新しいハイブリッドアクティベーションで登録する必要があります。マネージドインスタンスの登録解除の詳細については「[ハイブリッドおよびマルチクラウド環境でのマネージドノードの登録解除](fleet-manager-deregister-hybrid-nodes.md)」をご参照ください。Session Manager アクセス権限付き IAM ポリシーの作成方法の詳細については「[ステップ 2: Session Manager のインスタンスのアクセス権限の確認または追加](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-instance-profile.html)」を参照してください。  | 

# ステップ 2: Session Manager のインスタンスのアクセス権限の確認または追加
<a name="session-manager-getting-started-instance-profile"></a>

デフォルトでは、AWS Systems Manager にはインスタンスでアクションを実行する権限がありません。インスタンスのアクセス許可は、AWS Identity and Access Management (IAM) ロールを使用してアカウントレベルで付与するか、またはインスタンスプロファイルを使用してインスタンスレベルで付与することができます。可能であれば、デフォルトのホスト管理設定を使用してアカウントレベルでアクセスを付与することをお勧めします。`AmazonSSMManagedEC2InstanceDefaultPolicy` ポリシーを使用してアカウントのデフォルトホスト管理設定を既にセットアップしている場合は、次のステップに進むことができます。デフォルトのホスト管理設定の詳細については、「[Default Host Management Configuration を使用した EC2 インスタンスの自動管理](fleet-manager-default-host-management-configuration.md)」を参照してください。

インスタンスプロファイルを使用してインスタンスに必要なアクセス権限を提供することもできます。インスタンスプロファイルは IAM ロールを Amazon EC2 インスタンスに渡します。IAM インスタンスプロファイルは、起動時の Amazon EC2 インスタンスまたは以前に起動したインスタンスにアタッチできます。詳細については[インスタンスプロファイルの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-instanceprofile.html)をご参照ください。

オンプレミスサーバーまたは仮想マシン (VM) の場合、アクセス許可はハイブリッドアクティベーションに関連付けられた IAM サービスロールによって付与されます。ハイブリッドアクティベーションは、Systems Manager 付きオンプレミスサーバーおよび VM の登録に使用します。オンプレミスサーバーと VM はインスタンスプロファイルを使用しません。

Run Command や Parameter Store など、他の Systems Manager ツールを既に使用している場合、Session Manager に必要な基本許可を持つインスタンスプロファイルが既に Amazon EC2 インスタンスに添付されている可能性があります。AWS 管理ポリシー `AmazonSSMManagedInstanceCore` を含むインスタンスプロファイルが既にインスタンスにアタッチされている場合、Session Manager に必要なアクセス許可は既に付与されています。これはハイブリッドアクティベーションで使用される IAM サービスロールに `AmazonSSMManagedInstanceCore` 管理ポリシーが含まれる場合も適用されます。

ただし、場合によっては、インスタンスプロファイルにアタッチされたアクセス許可を変更する必要があります。例えば、インスタンスのアクセス許可のセットを絞り込む場合、インスタンスプロファイルのカスタムポリシーを作成した場合、Amazon Simple Storage Service (Amazon S3) 暗号化オプションまたは AWS Key Management Service (AWS KMS) 暗号化オプションを使用してセッションデータを保護する場合などです。このような場合は、次のいずれかを実行して、インスタンスで Session Manager アクションを実行できるようにします。
+  **カスタム IAM ロールの Session Manager アクション用の許可を埋め込む** 

  AWS が提供するデフォルトのポリシー `AmazonSSMManagedInstanceCore` に依存しない既存の IAM ロールに Session Manager アクションのアクセス許可を追加するには、次の [既存の IAM ロールに Session Manager 許可を追加する](getting-started-add-permissions-to-existing-profile.md) の手順に従います。
+  **Session Manager の許可のみ付与したカスタム IAM ロールを作成** 

  Session Manager アクションのみの許可を含む IAM ロールを作成する場合、[Session Manager のカスタム IAM ロールを作成](getting-started-create-iam-instance-profile.md) のステップにしたがいます。
+  **すべての Systems Manager アクション用の許可を持った新しい IAM ロールの作成と使用** 

  AWS が提供するデフォルトポリシーを使用する Systems Manager マネージドインスタンスの IAM ロールを作成してすべての Systems Manager にアクセス許可を付与する場合は、「[Systems Manager に必要なインスタンスのアクセス許可を設定する](setup-instance-permissions.md)」のステップに従います。

**Topics**
+ [既存の IAM ロールに Session Manager 許可を追加する](getting-started-add-permissions-to-existing-profile.md)
+ [Session Manager のカスタム IAM ロールを作成](getting-started-create-iam-instance-profile.md)

# 既存の IAM ロールに Session Manager 許可を追加する
<a name="getting-started-add-permissions-to-existing-profile"></a>

以下の手順を使用して、既存の AWS Identity and Access Management (IAM) ロールに Session Manager 権限を追加します。既存のロールに権限を追加することで、インスタンス権限に AWS `AmazonSSMManagedInstanceCore` ポリシーを使用することなく、コンピューティング環境のセキュリティを強化できます。

**注記**  
以下の情報に注意してください。  
この手順は、アクセスを許可するアクションに対する他の Systems Manager `ssm` 権限が、既存のロールに既に含まれていることを前提とします。このポリシーだけでは、Session Manager を使用するには十分ではありません。
次のポリシー例には、`s3:GetEncryptionConfiguration` アクションが含まれています。このアクションは、Session Manager ロギング設定で **[S3 ログ暗号化を強制]** オプションインを選択した場合に必要です。
IAM インスタンスプロファイルまたは IAM サービスロールにアタッチされたポリシーから `ssmmessages:OpenControlChannel` アクセス許可が削除されると、マネージドノード上の SSM Agent はクラウド内の Systems Manager サービスへの接続を失います。ただし、アクセス許可が削除された後、接続が終了するまでに最大 1 時間かかる場合があります。これは、IAM インスタンスロールまたは IAM サービスロールが削除されたときと同じ動作です。

**Session Manager の許可を既存のロール (コンソール) に追加する場合**

1. AWS マネジメントコンソール にサインインして、[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソールを開きます。

1. ナビゲーションペインで **Roles (ロール)** を選択します。

1. アクセス許可を追加するロール名を選択します。

1. **[アクセス許可]** タブを選択します。

1. **[アクセス許可の追加]**、**[インラインポリシーの作成]** の順に選択します。

1. **JSON** タブを選択します。

1. デフォルトのポリシーコンテンツを次のコンテンツに置き換えます。*key-name* を、使用する AWS Key Management Service キー (AWS KMS key) の Amazon リソースネーム (ARN) に置き換えます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateControlChannel",
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenControlChannel",
                   "ssmmessages:OpenDataChannel"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetEncryptionConfiguration"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
           }
       ]
   }
   ```

------

   セッションデータを暗号化するための KMS キーの使用については、「[セッションデータの KMS キー暗号化を有効にする (コンソール)](session-preferences-enable-encryption.md)」を参照してください。

   セッションデータに AWS KMS 暗号化を使用しない場合は、ポリシーから以下のコンテンツを削除できます。

   ```
   ,
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "key-name"
           }
   ```

1. **[Next: Tags]** (次へ: タグ) を選択します。

1. (オプション) **[Add tag]** (タグを追加) を選択してタグを追加し、ポリシーの優先タグを入力します。

1. **[次へ: レビュー]** を選択します。

1. [**Review policy (ポリシーの確認)**] ページで、[**Name (名前)**] にインラインポリシーの名前を入力します (**SessionManagerPermissions** など)。

1. (オプション) [**Description (説明)**] に、ポリシーの説明を入力します。

   [**Create policy**] を選択します。

`ssmmessages` アクションの詳細については、「[リファレンス: ec2messages、ssmmessages およびその他の API オペレーション](systems-manager-setting-up-messageAPIs.md)」を参照してください。

# Session Manager のカスタム IAM ロールを作成
<a name="getting-started-create-iam-instance-profile"></a>

Amazon EC2 マネージドインスタンスでアクションを実行する許可を Session Manager に付与する AWS Identity and Access Management (IAM) ロールを作成できます。Amazon Simple Storage Service (Amazon S3) と Amazon CloudWatch Logs に送信されるセッションログの許可を付与するポリシーを作成することもできます。

IAM ロールを作成後、インスタンスのロールをアタッチする情報については、AWS re:Post ウェブサイトの「[インスタンスプロファイルをアタッチまたは置き換え](https://aws.amazon.com/premiumsupport/knowledge-center/attach-replace-ec2-instance-profile/)」を参照してください。IAM インスタンスのプロファイルとロールの詳細については、「IAM ユーザーガイド」の「[インスタンスプロファイルの使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)」と、「Linux インスタンス用 Amazon Elastic Compute Cloud ユーザーガイド」の「[Amazon EC2 の IAM ロールの使用](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)」を参照してください。オンプレミスマシンの IAM サービスロールの作成における詳細については、「[ハイブリッドおよびマルチクラウド環境で Systems Manager に必要な IAM サービスロールを作成する](https://docs.aws.amazon.com/systems-manager/latest/userguide/hybrid-multicloud-service-role.html)」を参照してください。

**Topics**
+ [最小限の Session Manager 許可 (コンソール) を付与した IAM ロールの作成](#create-iam-instance-profile-ssn-only)
+ [Session Manager、Amazon S3、CloudWatch Logs (コンソール) の許可を持つIAM ロールの作成](#create-iam-instance-profile-ssn-logging)

## 最小限の Session Manager 許可 (コンソール) を付与した IAM ロールの作成
<a name="create-iam-instance-profile-ssn-only"></a>

以下の手順にしたがって、インスタンス上の Session Manager アクションのみに許可を付与するポリシーが付いたカスタム IAM ロールを作成します。

**最小限の Session Manager アクセス権限でインスタンスプロファイルを作成するには (コンソール)**

1. AWS マネジメントコンソール にサインインして、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、[**Policies**] を選択し、次に [**Create policy**] を選択します。([**Get Started**] ボタンが表示された場合は、そのボタンを選択してから、[**Create Policy**] を選択します)。

1. [**JSON**] タブを選択します。

1. デフォルトの内容を次のポリシーに置き換えます。AWS Key Management Service (AWS KMS) を使用してセッションデータを暗号化するには、*key-name* を、使用する AWS KMS key の Amazon リソースネーム (ARN) に置き換えます。
**注記**  
IAM インスタンスプロファイルまたは IAM サービスロールにアタッチされたポリシーから `ssmmessages:OpenControlChannel` アクセス許可が削除されると、マネージドノード上の SSM Agent はクラウド内の Systems Manager サービスへの接続を失います。ただし、アクセス許可が削除された後、接続が終了するまでに最大 1 時間かかる場合があります。これは、IAM インスタンスロールまたは IAM サービスロールが削除されたときと同じ動作です。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssm:UpdateInstanceInformation",
                   "ssmmessages:CreateControlChannel",
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenControlChannel",
                   "ssmmessages:OpenDataChannel"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
           }
       ]
   }
   ```

------

   セッションデータを暗号化するための KMS キーの使用については、「[セッションデータの KMS キー暗号化を有効にする (コンソール)](session-preferences-enable-encryption.md)」を参照してください。

   セッションデータに AWS KMS 暗号化を使用しない場合は、ポリシーから以下のコンテンツを削除できます。

   ```
   ,
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "key-name"
           }
   ```

1. **[Next: Tags]** (次へ: タグ) を選択します。

1. (オプション) **[Add tag]** (タグを追加) を選択してタグを追加し、ポリシーの優先タグを入力します。

1. **[次へ: レビュー]** を選択します。

1. [**Review policy (ポリシーの確認)**] ページで、[**Name (名前)**] にインラインポリシーの名前を入力します (**SessionManagerPermissions** など)。

1. (オプション) [**Description (説明)**] に、ポリシーの説明を入力します。

1. [**Create policy**] を選択します。

1. ナビゲーションペインで [**Roles**] を選択し、続いて [**Create role**] を選択します。

1. **[ロールを作成]** ページで **[AWS サービス]** を選択して、**[ユースケース]** で **[EC2]** を選択します。

1. [**次へ**] を選択します。

1. **[Add permissions]** (アクセス許可を追加) ページで、先ほど作成したポリシーの名前 (**SessionManagerPermissions** など) の左側にあるチェックボックスをオンにします。

1. [**次へ**] を選択します。

1. **[Name, review, and create]** (名前、確認、および作成) ページの **[Role name]** (ロール名) に、IAM ロールの名前 (**MySessionManagerRole** など) を入力します。

1. (オプション) [**Role description (ロールの説明)**] に、インスタンスプロファイルの説明を入力します。

1. (オプション) **[Add tag]** (タグを追加) を選択してタグを追加し、ロールの優先タグを入力します。

   [**ロールの作成**] を選択してください。

`ssmmessages` アクションの詳細については、「[リファレンス: ec2messages、ssmmessages およびその他の API オペレーション](systems-manager-setting-up-messageAPIs.md)」を参照してください。

## Session Manager、Amazon S3、CloudWatch Logs (コンソール) の許可を持つIAM ロールの作成
<a name="create-iam-instance-profile-ssn-logging"></a>

以下の手順にしたがって、インスタンス上の Session Manager アクションに許可を付与するポリシーが付いたカスタム IAM ロールを作成します。このポリシーは、セッションログを Amazon Simple Storage Service (Amazon S3) バケットおよび Amazon CloudWatch Logs ロググループに保存するために必要なアクセス許可も提供します。

**重要**  
セッションログを別の AWS アカウント によって所有されている Amazon S3 バケットに出力するには、IAM ロールポリシーに `s3:PutObjectAcl` の許可を追加する必要があります。さらに、バケットポリシーで、所有アカウントが使用する IAM ロールへのクロスアカウントアクセスを許可して、管理対象インスタンスに Systems Manager 許可を付与するようにする必要があります。バケットが Key Management Service (KMS) 暗号化を使用している場合は、バケットの KMS ポリシーでもこのクロスアカウントアクセスを許可する必要があります。Amazon S3 クロスアカウントバケットの許可の詳細については、「Amazon Simple Storage Service ユーザーガイド」の「[クロスアカウントバケットパーミッションを付与する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)」を参照してください。クロスアカウントの許可が追加されていないと、Amazon S3 バケットを所有するアカウントはセッション出力ログにアクセスできません。

セッションログを保存するための設定の指定方法については、「[セッションロギングの有効化と無効化](session-manager-logging.md)」を参照してください。

**Session Manager、Amazon S3、CloudWatch Logs (コンソール) の許可を持つIAM ロールの作成方法**

1. AWS マネジメントコンソール にサインインして、IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで、[**Policies**] を選択し、次に [**Create policy**] を選択します。([**Get Started**] ボタンが表示された場合は、そのボタンを選択してから、[**Create Policy**] を選択します)。

1. [**JSON**] タブを選択します。

1. デフォルトの内容を次のポリシーに置き換えます。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ssmmessages:CreateControlChannel",
                   "ssmmessages:CreateDataChannel",
                   "ssmmessages:OpenControlChannel",
                   "ssmmessages:OpenDataChannel",
                   "ssm:UpdateInstanceInformation"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "logs:CreateLogStream",
                   "logs:PutLogEvents",
                   "logs:DescribeLogGroups",
                   "logs:DescribeLogStreams"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/s3-prefix/*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetEncryptionConfiguration"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
           },
           {
               "Effect": "Allow",
               "Action": "kms:GenerateDataKey",
               "Resource": "*"
           }
       ]
   }
   ```

------

1. **[Next: Tags]** (次へ: タグ) を選択します。

1. (オプション) **[Add tag]** (タグを追加) を選択してタグを追加し、ポリシーの優先タグを入力します。

1. **[次へ: レビュー]** を選択します。

1. [**Review policy (ポリシーの確認)**] ページで、[**Name (名前)**] にインラインポリシーの名前を入力します (**SessionManagerPermissions** など)。

1. (オプション) [**Description (説明)**] に、ポリシーの説明を入力します。

1. [**Create policy**] を選択します。

1. ナビゲーションペインで [**Roles**] を選択し、続いて [**Create role**] を選択します。

1. **[ロールを作成]** ページで **[AWS サービス]** を選択して、**[ユースケース]** で **[EC2]** を選択します。

1. [**次へ**] を選択します。

1. **[Add permissions]** (アクセス許可を追加) ページで、先ほど作成したポリシーの名前 (**SessionManagerPermissions** など) の左側にあるチェックボックスをオンにします。

1. [**次へ**] を選択します。

1. **[Name, review, and create]** (名前、確認、および作成) ページの **[Role name]** (ロール名) に、IAM ロールの名前 (**MySessionManagerRole** など) を入力します。

1. (オプション) **[Role description]** (ロールの説明) に、ロールの説明を入力します。

1. (オプション) **[Add tag]** (タグを追加) を選択してタグを追加し、ロールの優先タグを入力します。

1. [**ロールの作成**] を選択してください。

# ステップ 3: マネージドノードへのセッションアクセスを制御
<a name="session-manager-getting-started-restrict-access"></a>

この方法で、AWS Identity and Access Management (IAM) ポリシーを使用してマネージドノードへの Session Manager のアクセスを許可または取り消すことができます。ポリシーを作成して IAM ユーザーまたはグループにアタッチし、そのユーザーまたはグループが接続できるマネージドノードを指定することができます。また、ユーザーまたはグループがマネージドノードで実行できる Session Manager API オペレーションを指定することもできます。

Session Manager の IAM アクセス許可ポリシーを使い始めるために、エンドユーザーと管理者ユーザー用のサンプルポリシーを作成しました。これらのポリシーは、わずかな変更だけで使用できます。または、これらをガイドとして使用し、カスタム IAM ポリシーを作成することもできます。詳細については、「[Session Manager のサンプル IAM ポリシー](getting-started-restrict-access-quickstart.md)」を参照してください。IAM ポリシーの作成方法、およびポリシーをユーザーまたはグループにアタッチする方法については、「**IAM ユーザーガイド」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」および「[IAM ポリシーの追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

**セッション ID の ARN 形式について**  
Session Manager アクセスの IAM ポリシーを作成する際は、Amazon リソースネーム (ARN) の一部としてセッション ID を指定します。セッション ID にはユーザー名が変数として含まれます。これを説明するために、Session Manager ARN の形式と例を以下に示します。

```
arn:aws:ssm:region-id:account-id:session/session-id
```

例えば、次のようになります。

```
arn:aws:ssm:us-east-2:123456789012:session/JohnDoe-1a2b3c4d5eEXAMPLE
```

IAM ポリシーで変数を使用する方法の詳細については、「[IAM ポリシーエレメント: 変数](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)」を参照してください。

**Topics**
+ [IAM ポリシーでデフォルトのセッションドキュメントを指定して、デフォルトのシェルセッションを開始します。](getting-started-default-session-document.md)
+ [IAM ポリシーでセッションドキュメントを指定して、ドキュメントでセッションを開始する](getting-started-specify-session-document.md)
+ [Session Manager のサンプル IAM ポリシー](getting-started-restrict-access-quickstart.md)
+ [Session Manager の追加サンプル IAM ポリシー](getting-started-restrict-access-examples.md)

# IAM ポリシーでデフォルトのセッションドキュメントを指定して、デフォルトのシェルセッションを開始します。
<a name="getting-started-default-session-document"></a>

AWS アカウント 用に Session Manager を設定したり、Systems Manager コンソールでセッション設定を変更したりすると、システムによって `SSM-SessionManagerRunShell` という名前の SSM セッションドキュメントが作成されます。これはデフォルトのセッションドキュメントです。Session Manager はこのドキュメントを使用して、次のような情報を含むセッション設定を保存します。
+ Amazon Simple Storage Service (Amazon S3) バケットまたは Amazon CloudWatch Logs ロググループなどのセッションデータを格納する場所です。
+ セッションデータを暗号化するための AWS Key Management Service (AWS KMS) キー ID。
+ セッションで Run As サポートが許可されているかどうか。

`SSM-SessionManagerRunShell` セッションの設定文書に含まれる情報の例を次に示します。

```
{
  "schemaVersion": "1.0",
  "description": "Document to hold regional settings for Session Manager",
  "sessionType": "Standard_Stream",
  "inputs": {
    "s3BucketName": "amzn-s3-demo-bucket",
    "s3KeyPrefix": "MyS3Prefix",
    "s3EncryptionEnabled": true,
    "cloudWatchLogGroupName": "MyCWLogGroup",
    "cloudWatchEncryptionEnabled": false,
    "kmsKeyId": "1a2b3c4d",
    "runAsEnabled": true,
    "runAsDefaultUser": "RunAsUser"
  }
}
```

デフォルトでは、ユーザーが AWS マネジメントコンソール からセッションを開始すると、Session Manager はデフォルトのセッションドキュメントを使用します。これは、Systems Manager コンソール、Amazon EC2 コンソールの EC2 Connect で Fleet Manager または Session Manager のいずれかに適用されます。また、Session Manager はユーザーが次の例のような AWS CLI コマンドを使用してセッションを開始したときに、デフォルトのセッションドキュメントを使用します。

```
aws ssm start-session \
    --target i-02573cafcfEXAMPLE
```

デフォルトのシェルセッションを開始するには、次の例に示すように、IAM ポリシーでデフォルトのセッションドキュメントを指定する必要があります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnableSSMSession",
      "Effect": "Allow",
      "Action": [
        "ssm:StartSession"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:instance/instance-id",
        "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ssmmessages:OpenDataChannel"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

# IAM ポリシーでセッションドキュメントを指定して、ドキュメントでセッションを開始する
<a name="getting-started-specify-session-document"></a>

デフォルトのセッションドキュメントを使用して [start-session](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) AWS CLI コマンドを使用する場合は、ドキュメント名を省略できます。システムは自動的に `SSM-SessionManagerRunShell` セッションドキュメントを呼び出します。

その他の場合は、`document-name` パラメータに値を指定する必要があります。ユーザーがコマンドでセッションドキュメントの名前を指定すると、システムは IAM ポリシーをチェックして、そのドキュメントにアクセスするアクセス許可があることを確認します。アクセス許可がないと、接続リクエストは失敗します。以下の例では、`AWS-StartPortForwardingSession`セッションドキュメントに `document-name` パラメータが含まれています。

```
aws ssm start-session \
    --target i-02573cafcfEXAMPLE \
    --document-name AWS-StartPortForwardingSession \
    --parameters '{"portNumber":["80"], "localPortNumber":["56789"]}'
```

IAM ポリシーで Session Manager セッションドキュメントを指定する方法の例については、「[クイックスタート Session Manager のエンドユーザーポリシー](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user)」を参照してください。

**注記**  
SSH を使用してセッションを開始するには、ターゲットマネージドノード*と*ユーザーのローカルマシンで設定ステップを完了する必要があります。詳細については、「[(オプション) Session Manager を通して SSH 接続のアクセス許可を付与して制御する](session-manager-getting-started-enable-ssh-connections.md)」を参照してください。

# Session Manager のサンプル IAM ポリシー
<a name="getting-started-restrict-access-quickstart"></a>

このセクションのサンプルを使用して、一般的に Session Manager のアクセスに最も必要とされるアクセス許可を提供する、AWS Identity and Access Management (IAM) ポリシーを作成します。

**注記**  
AWS KMS key ポリシーを使用して、KMS キーへのアクセス権を付与する IAM エンティティ (ユーザーまたはロール) と AWS アカウント を管理することもできます。詳細については、*AWS Key Management Service デベロッパーガイド*の「[AWS KMS リソースへのアクセス管理の概要](https://docs.aws.amazon.com/kms/latest/developerguide/control-access-overview.html)」および「[AWS KMS でのキーポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)」を参照してください。

**Topics**
+ [クイックスタート Session Manager のエンドユーザーポリシー](#restrict-access-quickstart-end-user)
+ [クイックスタート Session Manager の管理者ポリシー](#restrict-access-quickstart-admin)

## クイックスタート Session Manager のエンドユーザーポリシー
<a name="restrict-access-quickstart-end-user"></a>

次の例を使用して、Session Manager の IAM エンドユーザーポリシーを作成します。

Session Manager コンソールと AWS Command Line Interface (AWS CLI) のみ、Amazon Elastic Compute Cloud (Amazon EC2) コンソールのみ、または 3 つすべてからセッションを開始できるようにするポリシーを作成できます。

このポリシーはエンドユーザーに対して特定のマネージドノードへのセッションを開始する権限と、自分のセッションのみを終了する権限を提供します。ポリシーに対して行うカスタマイズの例については、「[Session Manager の追加サンプル IAM ポリシー](getting-started-restrict-access-examples.md)」を参照してください。

次のサンプルポリシーで、各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

次のタブから選択して、提供するセッションアクセスの範囲のサンプルポリシーを表示します。

------
#### [ セッションマネージャー and Fleet Manager ]

ユーザーが Session Manager コンソールと Fleet Manager コンソールからのみセッションを開始および再開できるようにするには、このサンプルポリシーを使用します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-02573cafcfEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceProperties",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
        }
    ]
}
```

------

------
#### [ Amazon EC2 ]

ユーザーが Amazon EC2 コンソールからのみセッションを開始および再開できるようにするには、このサンプルポリシーを使用します。このポリシーでは、Session Manager コンソールおよび AWS CLI からセッションを開始するために必要なすべてのアクセス許可は提供されません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-02573cafcfEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ]
        }
    ]
}
```

------

------
#### [ AWS CLI ]

ユーザーが AWS CLI からセッションを開始および再開できるようにするには、このサンプルポリシーを使用します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-02573cafcfEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-name"
        }
    ]
}
```

------

------

**注記**  
`SSM-SessionManagerRunShell` は、セッションの設定を保存するために Session Manager によって作成される SSM ドキュメントのデフォルト名です。代わりに、カスタムのセッションドキュメントを作成し、このポリシーで指定できます。また、SSH を使用してセッションを開始するユーザー向けに、AWS が提供するドキュメント `AWS-StartSSHSession` を指定することもできます。SSH を使用したセッションをサポートするために必要な設定手順については、「[(オプション) Session Manager を通して SSH 接続のアクセス許可を付与して制御する](session-manager-getting-started-enable-ssh-connections.md)」を参照してください。  
`kms:GenerateDataKey` アクセス権限により、セッションデータの暗号化に使用されるデータ暗号化キーを作成できます。セッションデータにAWS Key Management Service (AWS KMS) 暗号化を使用する場合は、*key-name* を `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE` 形式で、使用する KMS キーの Amazon リソースネーム (ARN) に置き換えてください。セッションデータに KMS キー暗号化を使用しない場合は、ポリシーから次のコンテンツを削除します。  

```
{
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "key-name"
        }
```
セッションデータを暗号化するための AWS KMS の使用の詳細については、「[セッションデータの KMS キー暗号化を有効にする (コンソール)](session-preferences-enable-encryption.md)」を参照してください。  
[https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html) のアクセス許可は、ユーザーが Amazon EC2 コンソールからセッションを開始しようとする場合に必要ですが、まず SSM Agent を Session Manager に必要な最小限のバージョンに更新する必要があります。Run Command は、インスタンスにコマンドを送信してエージェントを更新するために使用されます。

## クイックスタート Session Manager の管理者ポリシー
<a name="restrict-access-quickstart-admin"></a>

次の例を使用して、Session Manager の IAM 管理者ポリシーを作成します。

このポリシーは、`Key=Finance,Value=WebServers` でタグ付けされたマネージドノードに対してセッションを開始する権限、および作成、更新、削除する許可、自分のセッションのみを終了する許可を管理者に提供します。ポリシーに対して行うカスタマイズの例については、「[Session Manager の追加サンプル IAM ポリシー](getting-started-restrict-access-examples.md)」を参照してください。

管理者が Session Manager コンソールと AWS CLI からのみ、Amazon EC2 コンソールからのみ、または 3 つすべてからこれらのタスクを実行できるようにするポリシーを作成できます。

次のサンプルポリシーで、各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

次のタブから選択して、サポートするアクセスシナリオのサンプルポリシーを表示します。

------
#### [ セッションマネージャー and CLI ]

管理者が Session Manager コンソールと AWS CLI からのみセッション関連のタスクを実行できるようにするには、このサンプルポリシーを使用します。このポリシーでは、Amazon EC2 コンソールからセッション関連のタスクを実行するために必要なすべてのアクセス許可は提供されません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/Finance": [
                        "WebServers"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceProperties",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:CreateDocument",
                "ssm:UpdateDocument",
                "ssm:GetDocument",
                "ssm:StartSession"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        }
    ]
}
```

------

------
#### [ Amazon EC2 ]

管理者が Amazon EC2 コンソールからのみセッション関連のタスクを実行できるようにするには、このサンプルポリシーを使用します。このポリシーでは、Session Manager コンソールおよび AWS CLI からセッション関連のタスクを実行するために必要なすべてのアクセス許可は提供されません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/tag-key": [
                        "tag-value"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        }
    ]
}
```

------

------
#### [ セッションマネージャー, CLI, and Amazon EC2 ]

管理者が Session Manager コンソール、AWS CLI、Amazon EC2 コンソールからセッション関連のタスクを実行できるようにするには、このサンプルポリシーを使用します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/tag-key": [
                        "tag-value"
                    ]
                }
            }
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus",
                "ssm:DescribeInstanceInformation",
                "ssm:DescribeInstanceProperties",
                "ec2:DescribeInstances"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:CreateDocument",
                "ssm:UpdateDocument",
                "ssm:GetDocument",
                "ssm:StartSession"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        }
    ]
}
```

------

------

**注記**  
ユーザーが Amazon EC2 コンソールからセッションを開始しようとする際、最初に SSM Agent を更新するためのコマンドを送信する必要がある場合は、[https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_SendCommand.html) のアクセス許可が必要です。

# Session Manager の追加サンプル IAM ポリシー
<a name="getting-started-restrict-access-examples"></a>

サポートする Session Manager ユーザーのアクセスシナリオ用のカスタム AWS Identity and Access Management (IAM) ポリシーの作成に役立つ、次のサンプルポリシーを参照してください。

**Topics**
+ [例 1: コンソールでドキュメントへのアクセスを許可する](#grant-access-documents-console-example)
+ [例 2: 特定のマネージドノードへのアクセスを制限](#restrict-access-example-instances)
+ [例 3: タグに基づいてアクセスを制限](#restrict-access-example-instance-tags)
+ [例 4: ユーザーが開始したセッションのみを終了できるようにする](#restrict-access-example-user-sessions)
+ [例 5: すべてのセッションにフル (管理) アクセスを許可する](#restrict-access-example-full-access)

## 例 1: コンソールでドキュメントへのアクセスを許可する
<a name="grant-access-documents-console-example"></a>

ユーザーが Session Manager コンソールを使用してセッションを開始する場合、カスタムドキュメントを指定できるようにすることができます。次の IAM ポリシーの例では、指定された AWS リージョン および AWS アカウント で **SessionDocument-** で始まる名前のドキュメントにアクセスする許可を付与します。

このポリシーを使用するには、独自の情報を含むそれぞれの*リソースプレースホルダーの例*を置き換えます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetDocument",
                "ssm:ListDocuments"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SessionDocument-*"
            ]
        }
    ]
}
```

------

**注記**  
Session Manager コンソールは、セッションプリファレンスの定義に使用される `Standard_Stream` の `sessionType` を持つセッションドキュメントのみをサポートします。詳細については、「[セッションドキュメントスキーマ](session-manager-schema.md)」を参照してください。

## 例 2: 特定のマネージドノードへのアクセスを制限
<a name="restrict-access-example-instances"></a>

Session Manager を使用して、ユーザーが接続できるマネージドノードを定義する IAM ポリシーを作成できます。例えば、次のポリシーは、特定の 3 つのノードでセッションを開始、終了、再開するアクセス許可をユーザーに付与します。このポリシーは、指定されたノード以外のノードにユーザーが接続することを制限します。

**注記**  
フェデレーテッドユーザーについては、「[例 4: ユーザーが開始したセッションのみを終了できるようにする](#restrict-access-example-user-sessions)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890EXAMPLE",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-abcdefghijEXAMPLE",
                "arn:aws:ec2:us-east-1:111122223333:instance/i-0e9d8c7b6aEXAMPLE",
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       }
    ]
}
```

------

## 例 3: タグに基づいてアクセスを制限
<a name="restrict-access-example-instance-tags"></a>

特定のタグに基づいてマネージドノードへのアクセスを制限できます。以下の例では、ノードが財務ウェブサーバー (`ssm:resourceTag/Finance: WebServer`) であるという条件で、ユーザーは任意のマネージドノード (`Resource: arn:aws:ec2:region:987654321098:instance/*`) にセッション (`Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession`) の開始と再開することが許可されます。ユーザーがタグ付けされていない、または`Finance: WebServer` 以外のタグ付けされた　マネージドノードにコマンドを送信した場合、コマンド結果に `AccessDenied` が含まれます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringLike": {
                    "ssm:resourceTag/Finance": [
                        "WebServers"
                    ]
                }
            }
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:TerminateSession",
                "ssm:ResumeSession"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:userid}-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        }
    ]
}
```

------

複数のタグが付いたマネージドノードに対してユーザーがセッションを開始することを許可するIAM ポリシーを作成できます。以下のポリシーは、指定されたタグが両方とも適用されたマネージドノードに対してユーザーがセッションを開始することを許可します。ユーザーがこれら両方のタグが付いていないマネージドノードにコマンドを送信した場合、コマンド結果に `AccessDenied` が含まれます。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ssm:StartSession"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "ssm:resourceTag/tag-key1":[
                  "tag-value1"
               ],
               "ssm:resourceTag/tag-key2":[
                  "tag-value2"
               ]
            }
         }
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       },
      {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
      }
   ]
}
```

------

IAM ポリシーの作成の詳細については、「*IAM ユーザーガイド*」の「[マネージドポリシーとインラインポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html)」を参照してください。マネージドノードへのタグ付けの詳細については、「*Amazon EC2 ユーザーガイド*」(内容は Windows と Linux のマネージドノードに適用) の「[Amazon EC2 リソースのタグ付け](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)」を参照してください。マネージドノードで許可されていないルートレベルのコマンドに対するセキュリティ体制の強化方法の詳細については、 [SSM Agent を介してルートレベルコマンドへのアクセスを制限する](ssm-agent-restrict-root-level-commands.md) をご参照ください

## 例 4: ユーザーが開始したセッションのみを終了できるようにする
<a name="restrict-access-example-user-sessions"></a>

Session Manager では、AWS アカウント のフェデレーションユーザーがどのセッションを終了できるかを制御するために、2 つの方法を使用できます。
+ AWS Identity and Access Management (IAM) アクセス権限ポリシーで変数 `{aws:userid}` を使用します。フェデレーションユーザーは、開始したセッションのみを終了できます。非フェデレーティッドユーザーの場合は、方法 1 を使用します。フェデレーティッドユーザーの場合は、方法 2 を使用します。
+ IAM アクセス許可ポリシーで AWS タグによって提供されたタグを使用します。このポリシーには、 によって提供された特定のタグでタグ付けされたセッションのみをユーザーが終了できるようにする条件を含めますAWS この方法は、フェデレーション ID を使用して へのアクセスを許可するものを含めて、すべてのアカウントで機能しますAWS

### 方法 1: 変数 `{aws:username}` を使用して TerminateSession 権限を付与する
<a name="restrict-access-example-user-sessions-username"></a>

次の IAM ポリシーでは、ユーザーはアカウントのすべてのセッションの ID を表示できます。ただし、ユーザーは開始したセッションでのみマネージドノードとインタラクトできます。次のポリシーが割り当てられているユーザーは、他のユーザーのセッションに接続したり、終了させることはできません。ポリシーは、このために変数 `{aws:username}` を使用します。

**注記**  
この方法は、フェデレーション ID を使用して AWS へのアクセスを許可するアカウントでは機能しません。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:DescribeSessions"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
        {
            "Action": [
                "ssm:TerminateSession"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:*:*:session/${aws:username}-*"
            ]
        }
    ]
}
```

------

### 方法 2: が提供するタグを使用して TerminateSession 権限を付与するAWS
<a name="restrict-access-example-user-sessions-tags"></a>

IAM ポリシーに条件タグキー変数を含めることで、ユーザーが終了できるセッションを管理できます。この条件では、ユーザーがこれらの特定のタグキー変数と指定された値のいずれかまたは両方でタグ付けされたセッションのみを終了できることを指定します。

AWS アカウント のユーザーがセッションを開始すると、Session Manager は 2 つのリソースタグをセッションに適用します。最初のリソースタグは `aws:ssmmessages:target-id` で、ユーザーが終了できるターゲットの ID を指定します。もう 1 つのリソースタグは `aws:ssmmessages:session-id` で、`role-id:caller-specified-role-name` 形式の値を持ちます。

**注記**  
Session Manager は、この IAM アクセス制御ポリシーのカスタムタグをサポートしていません。以下に説明する、AWS が提供するリソースタグを使用する必要があります。

 ** `aws:ssmmessages:target-id` **   
このタグキーでポリシーの値としてマネージドノード ID を含めます。以下のポリシーブロックでは、この条件ステートメントはユーザーが 「i-02573cafcfEXAMPLE」 のノードのみを終了することを許可します。    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:target-id": [
                        "i-02573cafcfEXAMPLE"
                     ]
                 }
             }
         }
     ]
}
```
この `TerminateSession` アクセス許可が付与されていないセッションをユーザーが終了しようとすると、`AccessDeniedException` エラーが発生します。

 ** `aws:ssmmessages:session-id` **   
このタグキーには、セッションを開始するリクエストの値として、セッション ID の変数が含まれます。  
次の例は、発信者のタイプが `User` である場合のポリシーを示しています。`aws:ssmmessages:session-id` に指定する値は、ユーザーの ID です。この例では、`AIDIODR4TAW7CSEXAMPLE` は AWS アカウント のユーザーの ID を表します。AWS アカウント のユーザーの ID を取得するには、IAM コマンド `get-user` を使用します。詳細については、*IAM ユーザーガイド*の「AWS Identity and Access Management」セクションの「[get-user](https://docs.aws.amazon.com/IAM/latest/UserGuide/get-user.html)」を参照してください 。    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:session-id": [
                        "AIDIODR4TAW7CSEXAMPLE"
                     ]
                 }
             }
         }
     ]
}
```
次の例は、発信者のタイプが `AssumedRole` である場合のポリシーを示しています。`{aws:userid}` 変数は、`aws:ssmmessages:session-id` に指定する値として使用できます。または、`aws:ssmmessages:session-id` に指定する値としてロール ID をハードコードすることもできます。ロール ID をハードコードする場合は、`role-id:caller-specified-role-name` 形式で値を指定する必要があります。例えば、`AIDIODR4TAW7CSEXAMPLE:MyRole`。  
システムタグを適用するには、指定するロール ID には、Unicode 文字、0～9、スペース、`_`、`.`、`:`、`/`、`=`、`+`、`-`、`@`、および `\` のみを含めることができます。
AWS アカウント のロールのロール ID を取得するには、`get-caller-identity` コマンドを使用します。詳細については、 AWS CLI コマンドリファレンスの「[get-caller-identity](https://docs.aws.amazon.com/cli/latest/reference/sts/get-caller-identity.html)」を参照してください。    
****  

```
{
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                "ssm:TerminateSession"
             ],
             "Resource": "*",
             "Condition": {
                 "StringLike": {
                     "ssm:resourceTag/aws:ssmmessages:session-id": [
                        "${aws:userid}*"
                     ]
                 }
             }
         }
     ]
}
```
この `TerminateSession` アクセス許可が付与されていないセッションをユーザーが終了しようとすると、`AccessDeniedException` エラーが発生します。

**`aws:ssmmessages:target-id`** および **`aws:ssmmessages:session-id`**   
また、この例に示すように、両方のシステムタグでタグ付けされたセッションをユーザーが終了できるようにする IAM ポリシーを作成することもできます。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ssm:TerminateSession"
         ],
         "Resource":"*",
         "Condition":{
            "StringLike":{
               "ssm:resourceTag/aws:ssmmessages:target-id":[
                  "i-02573cafcfEXAMPLE"
               ],
               "ssm:resourceTag/aws:ssmmessages:session-id":[
                  "${aws:userid}*"
               ]
            }
         }
      }
   ]
}
```

## 例 5: すべてのセッションにフル (管理) アクセスを許可する
<a name="restrict-access-example-full-access"></a>

以下の IAM ポリシーは、すべてのユーザーがすべてのノード用に作成したすべてのマネージドノードとすべてのセッションに対して、ユーザーが完全にインタラクトすることを許可します。組織の Session Manager のアクティビティを完全に制御する必要がある管理者にのみ付与されます。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession",
                "ssm:ResumeSession",
                "ssm:DescribeSessions",
                "ssm:GetConnectionStatus"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        },
        {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
       }
    ]
}
```

------

# ステップ 4: セッション設定を構成する
<a name="session-manager-getting-started-configure-preferences"></a>

ご使用の AWS Identity and Access Management (IAM) ポリシーで管理者許可を付与されているユーザーは、次のようなセッション設定を設定できます。
+ Linux マネージドノードの場合、Run As サポートを有効にします。これにより、AWS Systems Manager Session Manager がマネージドノード上で作成可能なシステム生成される `ssm-user` アカウントの認証情報の代わりに、指定されたオペレーティングシステムユーザーの認証情報を使用してセッションを開始できるようになります。
+ AWS KMS key 暗号化プログラムを使用するように Session Manager を設定し、クライアントマシンとマネージドノード間で送信されるデータの保護を強化します。
+ セッション履歴ログを作成し、Amazon Simple Storage Service (Amazon S3) バケットまたは Amazon CloudWatch Logs ロググループに送信するように Session Manager を設定します。保存されたログデータを使用して、マネージドノードに対して確立されたセッション接続と、セッション中にそれらのノード上で実行されたコマンドに関するレポートを作成できます。
+ セッションタイムアウトを設定します。この設定を使用して、非アクティブ期間後にセッションを終了するタイミングを指定できます。
+ 設定可能なシェルプロファイルを使用するように Session Manager を設定します。これらのカスタマイズ可能なプロファイルを使用すると、シェルの設定、環境変数、作業ディレクトリ、セッション開始時の複数のコマンドの実行など、セッション内の設定をカスタマイズできます。

Session Manager プリファレンスを設定するために必要な許可の詳細については、「[Session Manager の設定を更新するためのユーザーアクセス許可を付与または拒否する](preference-setting-permissions.md)」を参照してください。

**Topics**
+ [Session Manager の設定を更新するためのユーザーアクセス許可を付与または拒否する](preference-setting-permissions.md)
+ [アイドルセッションのタイムアウト値を指定します。](session-preferences-timeout.md)
+ [最大セッション時間の指定](session-preferences-max-timeout.md)
+ [設定可能なシェルプロファイルを有効にする](session-preferences-shell-config.md)
+ [Linux と macOS のマネージドノードで Run As サポートを有効にする](session-preferences-run-as.md)
+ [セッションデータの KMS キー暗号化を有効にする (コンソール)](session-preferences-enable-encryption.md)
+ [Session Manager プリファレンスドキュメントを作成する (コマンドライン)](getting-started-create-preferences-cli.md)
+ [Session Manager 設定の更新 (コマンドライン)](getting-started-configure-preferences-cli.md)

Systems Manager コンソールを使用してセッションデータのログを記録するオプションを設定する方法については、次のトピックを参照してください。
+  [Amazon S3 を使用してセッションデータをログ記録する (コンソール)](session-manager-logging-s3.md) 
+  [Amazon CloudWatch Logs を使用してセッションデータをストリーミングする (コンソール)](session-manager-logging-cwl-streaming.md) 
+  [Amazon CloudWatch Logs を使用してセッションデータをログ記録する (コンソール)](session-manager-logging-cloudwatch-logs.md) 

# Session Manager の設定を更新するためのユーザーアクセス許可を付与または拒否する
<a name="preference-setting-permissions"></a>

アカウントの設定は、各 AWS リージョン の AWS Systems Manager (SSM) ドキュメントとして保存されます。アカウント内のセッションのアカウント設定を更新するには、その設定が保存されている SSM ドキュメントのタイプにアクセスするために必要なアクセス権限を得ている必要があります。これらのアクセス権限は、AWS Identity and Access Management (IAM) ポリシーによって付与されます。

**設定を作成および更新できる管理者ポリシー**  
管理者は、設定を随時作成して更新するために、次のポリシーを持つことができます。次のポリシーは、us-east-2 アカウント 123456789012 にある `SSM-SessionManagerRunShell` ドキュメントにアクセスして更新するアクセス許可を許可します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:CreateDocument",
                "ssm:GetDocument",
                "ssm:UpdateDocument",
                "ssm:DeleteDocument"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        }
    ]
}
```

------

**設定が更新されないようにするユーザーポリシー**  
次のポリシーを使用して、アカウントのエンドユーザーが Session Manager の設定を更新または上書きしないようにします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ssm:CreateDocument",
                "ssm:GetDocument",
                "ssm:UpdateDocument",
                "ssm:DeleteDocument"
            ],
            "Effect": "Deny",
            "Resource": [
                "arn:aws:ssm:us-east-1:111122223333:document/SSM-SessionManagerRunShell"
            ]
        }
    ]
}
```

------

# アイドルセッションのタイムアウト値を指定します。
<a name="session-preferences-timeout"></a>

Session Manager は、システムがセッションを終了する前にユーザーを非アクティブにする時間を指定するための、AWS Systems Manager のツールです。デフォルトでは、セッションは 20 分間非アクティブになった後にタイムアウトします。この設定を変更して、セッションが非アクティブ状態の 1～60 分の間にタイムアウトするように指定できます。一部のコンピューティングセキュリティに関する専門機関は、アイドルセッションのタイムアウトを最大でも 15 分に設定することを推奨しています。

アイドルセッションのタイムアウトタイマーは、クライアント側からの入力を Session Manager 受信するとリセットされます。これらの入力には、以下が含まれますが、これらに限定されません。
+ ターミナルでのキーボード入力
+ ターミナルまたはブラウザウィンドウのサイズ変更イベント
+ セッション再接続 (ResumeSession)。ネットワーク中断、ブラウザタブ管理、または WebSocket 切断によって発生する可能性があります

これらのイベントはアイドルタイマーをリセットするため、直接的なターミナルコマンドがなくても、セッションは設定されたタイムアウト期間よりも長くアクティブな状態を維持する可能性があります。

セキュリティ要件により、アクティビティの有無にかかわらず厳格なセッション有効期限が義務付けられている場合は、アイドルタイムアウトに加えて *「最大セッション期間」* 設定を使用してください。詳細については、「[最大セッション時間の指定](session-preferences-max-timeout.md)」を参照してください。

**アイドルセッションタイムアウトを有効にするには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Preferences (設定)**] タブを選択してから、[**Edit (編集)**] を選択します。

1. [**Idle session timeout (アイドルセッションタイムアウト)] の [**分**] フィールドで、セッションが終了するまでのユーザを非アクティブにする時間を指定します**。

1. **[保存]** を選択します。

# 最大セッション時間の指定
<a name="session-preferences-max-timeout"></a>

AWS Systems Manager のツールである Session Manager は、セッションが終了するまでの最大時間を指定すること実現します。デフォルトでは、セッションの最大期間はありません。最大セッション時間に指定する値は、1 から 1,440 分の間である必要があります。

**最大セッション時間 (コンソール) の指定方法**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. **[設定]** タブを選択してから、**[編集]** を選択します。

1. **最大セッション時間の有効化**の隣のチェックボックスをオンにします。

1. セッションが終了するまでの最大時間を**最大セッション時間**の下にある **[minutes]** (分) フィールドで指定します。

1. **[保存]** を選択します。

# 設定可能なシェルプロファイルを有効にする
<a name="session-preferences-shell-config"></a>

デフォルトでは、Linux 用 EC2 インスタンス上のセッションは Bourne シェル (sh) を使用して開始します。ただし、bash のような別のシェルを使用することを好む人もいます。設定可能なシェルプロファイルを有効にすると、シェルの設定、環境変数、作業ディレクトリ、セッション開始時の複数のコマンドの実行など、セッション内の設定をカスタマイズできます。

**重要**  
Systems Manager は、実行前にインスタンスにどのような変更が加えられるかを確認するために、シェルプロファイル内のコマンドやスクリプトをチェックしません。シェルプロファイルに入力されたコマンドやスクリプトのユーザーによる変更を制限するため、次の操作を推奨します。  
AWS Identity and Access Management (IAM) ユーザーおよびロール用にカスタマイズされたセッションタイプのドキュメントを作成します。次に、これらのユーザーとロールの IAM ポリシーを変更して、`StartSession` API オペレーションがユーザー用に作成したセッションタイプのドキュメントのみを使用できるようにします。詳細については、「[Session Manager プリファレンスドキュメントを作成する (コマンドライン)](getting-started-create-preferences-cli.md)」および「[クイックスタート Session Manager のエンドユーザーポリシー](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user)」を参照してください。
IAM ユーザーおよびロールの IAM ポリシーを変更して、作成するセッションタイプのドキュメントリソースについて `UpdateDocument` API オペレーションへのアクセスを拒否します。これにより、ユーザーとロールは、設定の変更を許可されることなく、作成したドキュメントをセッションの環境設定に使用できます。

**設定可能なシェルプロファイルを有効にするには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Preferences (設定)**] タブを選択してから、[**Edit (編集)**] を選択します。

1. 該当するオペレーティングシステムのフィールドで、セッションの開始時に実行する環境変数、シェル環境設定、またはコマンドを指定します。

1. [**Save**] を選択します。

シェルプロファイルに追加できるコマンドの例を次に示します。

Linux インスタンスで bash シェルに移動し、/usr ディレクトリに移動します。

```
exec /bin/bash
cd /usr
```

セッションの開始時にタイムスタンプと「ようこそ」メッセージを出力します。

------
#### [ Linux & macOS ]

```
timestamp=$(date '+%Y-%m-%dT%H:%M:%SZ')
user=$(whoami)
echo $timestamp && echo "Welcome $user"'!'
echo "You have logged in to a production instance. Note that all session activity is being logged."
```

------
#### [  Server   ]

```
$timestamp = (Get-Date).ToString("yyyy-MM-ddTH:mm:ssZ")
$splitName = (whoami).Split("\")
$user = $splitName[1]
Write-Host $timestamp
Write-Host "Welcome $user!"
Write-Host "You have logged in to a production instance. Note that all session activity is being logged."
```

------

セッション開始時の動的システムアクティビティを表示します。

------
#### [ Linux & macOS ]

```
top
```

------
#### [  Server   ]

```
while ($true) { Get-Process | Sort-Object -Descending CPU | Select-Object -First 30; `
Start-Sleep -Seconds 2; cls
Write-Host "Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName"; 
Write-Host "-------  ------    -----      ----- -----   ------     -- -----------"}
```

------

# Linux と macOS のマネージドノードで Run As サポートを有効にする
<a name="session-preferences-run-as"></a>

デフォルトでは、Session Manager がマネージドノード上でシステムによって生成された `ssm-user` アカウントの認証情報を使用して接続を認証します。(Linux および macOS マシンでは、このアカウントは `/etc/sudoers/` に追加されます)。必要に応じて、代わりにオペレーティングシステム (OS) ユーザーアカウントの認証情報、または Active Directory に参加しているインスタンスのドメインユーザーの認証情報を使用してセッションを認証することもできます。この場合、Session Manager は、セッションを開始する前に、指定した OS アカウントがノードまたはドメイン内に存在することを確認します。ノードまたはドメイン内に存在しない OS アカウントを使用してセッションを開始しようとすると、接続に失敗します。

**注記**  
Session Manager では、オペレーティングシステムの `root` ユーザーアカウントを使用して接続を認証することはできません。OS ユーザーアカウントを使用して認証されるセッションでは、ログイン制限やシステムリソースの使用制限など、ノードの OS レベルのポリシーやディレクトリのポリシーが適用されない場合があります。

**仕組み**  
セッションの Run As サポートを有効にすると、システムによってアクセス許可が次のように確認されます。

1. セッションを開始しているユーザーである場合、IAM エンティティ (ユーザーまたはロール) に `SSMSessionRunAs = os user account name` タグが付いていますか?

   「はい」の場合、マネージドノードに OS ユーザー名が存在していますか? 存在する場合は、セッションを開始します。存在しない場合は、セッションの開始を許可しないでください。

   IAM エンティティに `SSMSessionRunAs = os user account name` タグが付いていない場合は、ステップ 2 に進みます。

1. IAM エンティティに `SSMSessionRunAs = os user account name` タグが付いていない場合、AWS アカウント の Session Manager の詳細設定で OS ユーザー名が指定されていますか?

   「はい」の場合、マネージドノードに OS ユーザー名が存在していますか? 存在する場合は、セッションを開始します。存在しない場合は、セッションの開始を許可しないでください。

**注記**  
Run As サポートを有効にすると、Session Manager がマネージドノードの `ssm-user` アカウントを使用してセッションを開始することができなくなります。つまり、Session Manager が、指定された OS ユーザーアカウントを使用して接続に失敗しても、デフォルトの方法を使用した接続にはフォールバックしません。  
OS アカウントを指定したり、IAM エンティティをタグ付けしたりせずに Run As をアクティブ化し、Session Manager の詳細設定で OS アカウントを指定していない場合、セッション接続は失敗します。

**Linux と macOS のマネージドノードで Run As サポートを有効にするには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. **[設定]** タブを選択してから、**[編集]** を選択します。

1. **[Linux インスタンスの Run As サポートを有効にする]** の横にあるチェックボックスをオンにします。

1. 次のいずれかを行います。
   + **[オプション 1]**: **[オペレーティングシステムのユーザー名]** フィールドに、セッション開始時に使用する OS ユーザーアカウント名を入力します。このオプションを使用すると、Session Manager を使用して接続する AWS アカウント 内のすべてのユーザーに対して、すべてのセッションが同じ OS ユーザーによって実行されます。
   + **[オプション 2]** (推奨事項): **[IAM コンソールを開く]** リンクを選択します。ナビゲーションペインで、[**ユーザー**] または [**ロール**] を選択します。タグを追加するエンティティ (ユーザーまたはロール) を選択し、[**タグ**] タブを選択します。キー名に「`SSMSessionRunAs`」と入力します。キー値に対応する OS ユーザーアカウント名を入力します。**[Save changes]** (変更の保存) をクリックします。

     このオプションを使用すると、必要に応じて、さまざまな IAM エンティティに固有の OS ユーザーを指定できます。IAM エンティティ (ユーザーまたはロール) のタグ付けの詳細については、「*IAM ユーザーガイド*」の「[IAM リソースのタグ付け](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)」を参照してください。

     以下に例を示します。  
![\[Session Manager Run As アクセス許可のタグを指定したスクリーンショット。\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/images/ssn-run-as-tags.png)

1. **[保存]** を選択します。

# セッションデータの KMS キー暗号化を有効にする (コンソール)
<a name="session-preferences-enable-encryption"></a>

AWS Key Management Service (AWS KMS)を使用して暗号化キーを作成および管理します。AWS KMS では、幅広い AWS のサービスおよびアプリケーションでの暗号化の使用を制御できます。マネーマネージドノードと AWS アカウント 内のユーザーのローカルマシン間で送信されるセッションデータが、KMS キー暗号化プログラムで暗号化されることを指定できます。(これは AWS が既にデフォルトで提供している TLS 1.2/1.3 暗号化に追加されています)。Session Manager セッションデータを暗号化するには、AWS KMS を使用して対称 KMS キーを作成します。

AWS KMS 暗号化は `Standard_Stream`、`InteractiveCommands`、`NonInteractiveCommands` セッションタイプで使用できます。AWS KMS で作成したキーでセッションデータを暗号化するオプションを使用する場合、AWS Systems Manager SSM Agent におけるバージョンが 2.3.539.0 以降がマネージドノードにインストールされている必要があります。

**注記**  
AWS Systems Manager コンソールからマネージドノードのパスワードをリセットするため、AWS KMS 暗号化を有効にする必要があります。詳細については、「[マネージドノードでパスワードをリセットする](fleet-manager-reset-password.md#managed-instance-reset-a-password)」を参照してください。

 に作成したキーを使用できますAWS アカウント また、別の で作成されたキーを使用することもできますAWS アカウント 別の AWS アカウント でのキーの作成者はキーを使用するために必要なアクセス許可をユーザーに提供する必要があります。

セッションデータの KMS キー暗号化を有効にすると、セッションを開始するユーザーとそのユーザーが接続するマネージドノードの両方が、キーを使用する許可が必要になります。AWS Identity and Access Management (IAM) ポリシーを使用して、Session Manager で KMS キーを使用するアクセス許可を付与します。詳細については、以下のトピックを参照してください。
+ アカウント内のユーザーに AWS KMS アクセス権限を追加します: [Session Manager のサンプル IAM ポリシー](getting-started-restrict-access-quickstart.md)。
+ アカウント内のマネージドノードに AWS KMS 権限を追加します: [ステップ 2: Session Manager のインスタンスのアクセス権限の確認または追加](session-manager-getting-started-instance-profile.md)。

KMS キーの作成と管理の詳細については、[https://docs.aws.amazon.com/kms/latest/developerguide/](https://docs.aws.amazon.com/kms/latest/developerguide/)を参照してください。

AWS CLI を使用してアカウントのセッションデータの KMS キー暗号化を有効にする方法については、「[Session Manager 設定の更新 (コマンドライン)](getting-started-configure-preferences-cli.md)」または「[Session Manager プリファレンスドキュメントを作成する (コマンドライン)](getting-started-create-preferences-cli.md)」を参照してください。

**注記**  
KMS キーの使用には料金が発生します。詳細については、「[AWS Key Management Service の料金表](https://aws.amazon.com/kms/pricing/)」を参照してください。

**セッションデータの KMS キー暗号化を有効にするには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. **[設定]** タブを選択してから、**[編集]** を選択します。

1. **KMS 暗号化を有効にする**の隣のチェックボックスをオンにします。

1. 次のいずれかを行います。
   + [**現在のアカウントの KMS キーを選択**] の横にあるボタンを選択して、リストからキーを選択します。

     -または-

     [**KMS キーエイリアスまたはKMS キー ARN の入力**] の横のボタンをクリックします。現在のアカウントで作成されたキーの KMS キーエイリアスを手動で入力するか、別のアカウントのキーのキー Amazon リソースネーム (ARN) を入力します。次に例を示します。
     + キーエイリアス: `alias/my-kms-key-alias`
     + キー ARN: `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-12345EXAMPLE`

     -または-

     [**Create new key**] (新しいキーを作成) を選択して、アカウントに新しい KMS キーを作成します。新しいキーを作成した後、[**Preferences (設定)**] タブに戻り、アカウントのセッションデータを暗号化するためのキーを選択します。

   キーの共有の詳細については、*AWS Key Management Service デベロッパーガイド*の[外部 AWS アカウント のキーへのアクセスの許可](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-external-accounts)を参照してください。

1. **[保存]** を選択します。

# Session Manager プリファレンスドキュメントを作成する (コマンドライン)
<a name="getting-started-create-preferences-cli"></a>

次の手順を使用して、AWS Systems Manager Session Manager セッションのプリファレンスを定義する SSM ドキュメントを作成します。このドキュメントを使用して、データ暗号化、セッション期間、ログ記録などのセッションオプションを設定できます。例えば、Amazon Simple Storage Service (Amazon S3) バケットまたは Amazon CloudWatch Logs ロググループにセッションログデータを格納するかどうかを指定します。AWS アカウント および AWS リージョン のすべてのセッションの一般的なプリファレンスを定義するドキュメントや、個々のセッションのプリファレンスを定義するドキュメントを作成できます。

**注記**  
Session Manager コンソールを使用して、一般的なセッション設定を設定することもできます。

Session Manager プリファレンスの設定に使用するドキュメントには、`Standard_Stream` の `sessionType` が付いている必要があります。これらの Session ドキュメントの詳細については、「[セッションドキュメントスキーマ](session-manager-schema.md)」を参照してください。

コマンドラインを使用して既存の Session Manager 設定を更新する方法については、「[Session Manager 設定の更新 (コマンドライン)](getting-started-configure-preferences-cli.md)」を参照してください。

CloudFormation を使用してセッション設定を作成する方法の例については、*AWS CloudFormationユーザーガイド*で「[Session Manager の設定向けに Systems Manager ドキュメントを作成する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-document.html#aws-resource-ssm-document--examples)」を参照してください。

**注記**  
この手順では、AWS アカウント レベルで Session Manager プリファレンスを設定するためのドキュメントを作成する方法について説明します。セッションレベルのプリファレンスの設定に使用されるドキュメントを作成するには、ファイル名関連のコマンド入力に `SSM-SessionManagerRunShell` 以外の値を指定します。  
ドキュメントを使用して AWS Command Line Interface (AWS CLI) から開始されるセッションのプリファレンスを設定するには、`--document-name` パラメータ値としてドキュメント名を指定します。Session Manager コンソールから開始したセッションのプリファレンスを設定するには、ドキュメントの名前を入力するか、リストから選択します。

**Session Manager 設定を作成するには (コマンドライン)**

1. `SessionManagerRunShell.json` などの名前でローカルマシンに JSON ファイルを作成し、次の内容を貼り付けます。

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to hold regional settings for Session Manager",
       "sessionType": "Standard_Stream",
       "inputs": {
           "s3BucketName": "",
           "s3KeyPrefix": "",
           "s3EncryptionEnabled": true,
           "cloudWatchLogGroupName": "",
           "cloudWatchEncryptionEnabled": true,
           "cloudWatchStreamingEnabled": false,
           "kmsKeyId": "",
           "runAsEnabled": false,
           "runAsDefaultUser": "",
           "idleSessionTimeout": "",
           "maxSessionDuration": "",
           "shellProfile": {
               "windows": "date",
               "linux": "pwd;ls"
           }
       }
   }
   ```

   次の例に示すように、値をハードコーディングするのではなく、パラメータを使用してセッション設定に値を渡すこともできます。

   ```
   {
      "schemaVersion":"1.0",
      "description":"Session Document Parameter Example JSON Template",
      "sessionType":"Standard_Stream",
      "parameters":{
         "s3BucketName":{
            "type":"String",
            "default":""
         },
         "s3KeyPrefix":{
            "type":"String",
            "default":""
         },
         "s3EncryptionEnabled":{
            "type":"Boolean",
            "default":"false"
         },
         "cloudWatchLogGroupName":{
            "type":"String",
            "default":""
         },
         "cloudWatchEncryptionEnabled":{
            "type":"Boolean",
            "default":"false"
         }
      },
      "inputs":{
         "s3BucketName":"{{s3BucketName}}",
         "s3KeyPrefix":"{{s3KeyPrefix}}",
         "s3EncryptionEnabled":"{{s3EncryptionEnabled}}",
         "cloudWatchLogGroupName":"{{cloudWatchLogGroupName}}",
         "cloudWatchEncryptionEnabled":"{{cloudWatchEncryptionEnabled}}",
         "kmsKeyId":""
      }
   }
   ```

1. セッションデータを送信する場所を指定します。(オプションでプレフィックスが付いた) S3 バケット名または CloudWatch Logs ロググループ名を指定することができます。ローカルクライアントとマネージドノード間でデータをさらに暗号化する場合、暗号化に使用する KMS キーを指定します。以下に例を示します。

   ```
   {
     "schemaVersion": "1.0",
     "description": "Document to hold regional settings for Session Manager",
     "sessionType": "Standard_Stream",
     "inputs": {
       "s3BucketName": "amzn-s3-demo-bucket",
       "s3KeyPrefix": "MyS3Prefix",
       "s3EncryptionEnabled": true,
       "cloudWatchLogGroupName": "MyLogGroupName",
       "cloudWatchEncryptionEnabled": true,
       "cloudWatchStreamingEnabled": false,
       "kmsKeyId": "MyKMSKeyID",
       "runAsEnabled": true,
       "runAsDefaultUser": "MyDefaultRunAsUser",
       "idleSessionTimeout": "20",
       "maxSessionDuration": "60",
       "shellProfile": {
           "windows": "MyCommands",
           "linux": "MyCommands"
       }
     }
   }
   ```
**注記**  
セッションログデータを暗号化しない場合は、`s3EncryptionEnabled` の「`true`」を「`false`」に変更します。  
Amazon S3 バケットまたは CloudWatch Logs ロググループにログを送信しない場合、アクティブなセッションデータを暗号化しない場合、またはアカウントのセッションの Run As サポートを有効にしない場合は、それらのオプション用に次の行を削除できます。「`inputs`」セクションの最後の行がカンマで終わっていないことを確認してください。  
セッションデータを暗号化するために KMS キー ID を追加する場合、セッションを開始するユーザーとそのユーザーが接続するマネージドノードの両方が、キーを使用する許可が必要になります。IAM ポリシーを通して Session Manager で KMS キーを使用するアクセス許可を付与します。詳細については、以下のトピックを参照してください。  
アカウント内のユーザーに AWS KMS アクセス権限を追加します: [Session Manager のサンプル IAM ポリシー](getting-started-restrict-access-quickstart.md)
アカウント内のマネージドノードに AWS KMS 権限を追加します: [ステップ 2: Session Manager のインスタンスのアクセス権限の確認または追加](session-manager-getting-started-instance-profile.md)。

1. ファイルを保存します。

1. JSON ファイルを作成したディレクトリで、次のコマンドを実行します。

------
#### [ Linux & macOS ]

   ```
   aws ssm create-document \
       --name SSM-SessionManagerRunShell \
       --content "file://SessionManagerRunShell.json" \
       --document-type "Session" \
       --document-format JSON
   ```

------
#### [  Server   ]

   ```
   aws ssm create-document ^
       --name SSM-SessionManagerRunShell ^
       --content "file://SessionManagerRunShell.json" ^
       --document-type "Session" ^
       --document-format JSON
   ```

------
#### [   PowerShell   ]

   ```
   New-SSMDocument `
       -Name "SSM-SessionManagerRunShell" `
       -Content (Get-Content -Raw SessionManagerRunShell.json) `
       -DocumentType "Session" `
       -DocumentFormat JSON
   ```

------

   成功すると、コマンドは以下のような出力を返します。

   ```
   {
       "DocumentDescription": {
           "Status": "Creating",
           "Hash": "ce4fd0a2ab9b0fae759004ba603174c3ec2231f21a81db8690a33eb66EXAMPLE",
           "Name": "SSM-SessionManagerRunShell",
           "Tags": [],
           "DocumentType": "Session",
           "PlatformTypes": [
               "Windows",
               "Linux"
           ],
           "DocumentVersion": "1",
           "HashType": "Sha256",
           "CreatedDate": 1547750660.918,
           "Owner": "111122223333",
           "SchemaVersion": "1.0",
           "DefaultVersion": "1",
           "DocumentFormat": "JSON",
           "LatestVersion": "1"
       }
   }
   ```

# Session Manager 設定の更新 (コマンドライン)
<a name="getting-started-configure-preferences-cli"></a>

以下の手順では、好みのコマンドラインツールを使用して、選択した AWS リージョン で AWS アカウント の AWS Systems Manager Session Manager 設定を変更する方法を説明します。Session Manager の設定を用いて、Amazon Simple Storage Service (Amazon S3) バケットまたは Amazon CloudWatch Logs ロググループにセッションデータを記録するためのオプションを指定します。Session Manager 設定を使用して、セッションデータを暗号化することもできます。

**Session Manager 設定を更新するには (コマンドライン)**

1. `SessionManagerRunShell.json` などの名前でローカルマシンに JSON ファイルを作成し、次の内容を貼り付けます。

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to hold regional settings for Session Manager",
       "sessionType": "Standard_Stream",
       "inputs": {
           "s3BucketName": "",
           "s3KeyPrefix": "",
           "s3EncryptionEnabled": true,
           "cloudWatchLogGroupName": "",
           "cloudWatchEncryptionEnabled": true,
           "cloudWatchStreamingEnabled": false,
           "kmsKeyId": "",
           "runAsEnabled": true,
           "runAsDefaultUser": "",
           "idleSessionTimeout": "",
           "maxSessionDuration": "",
           "shellProfile": {
               "windows": "date",
               "linux": "pwd;ls"
           }
       }
   }
   ```

1. セッションデータを送信する場所を指定します。(オプションでプレフィックスが付いた) S3 バケット名または CloudWatch Logs ロググループ名を指定することができます。ローカルクライアントとマネージドノード間でデータをさらに暗号化する場合、暗号化に使用する AWS KMS key キーを指定します。以下に例を示します。

   ```
   {
     "schemaVersion": "1.0",
     "description": "Document to hold regional settings for Session Manager",
     "sessionType": "Standard_Stream",
     "inputs": {
       "s3BucketName": "amzn-s3-demo-bucket",
       "s3KeyPrefix": "MyS3Prefix",
       "s3EncryptionEnabled": true,
       "cloudWatchLogGroupName": "MyLogGroupName",
       "cloudWatchEncryptionEnabled": true,
       "cloudWatchStreamingEnabled": false,
       "kmsKeyId": "MyKMSKeyID",
       "runAsEnabled": true,
       "runAsDefaultUser": "MyDefaultRunAsUser",
       "idleSessionTimeout": "20",
       "maxSessionDuration": "60",
       "shellProfile": {
           "windows": "MyCommands",
           "linux": "MyCommands"
       }
     }
   }
   ```
**注記**  
セッションログデータを暗号化しない場合は、`s3EncryptionEnabled` の「`true`」を「`false`」に変更します。  
Amazon S3 バケットまたは CloudWatch Logs ロググループにログを送信しない場合、アクティブなセッションデータを暗号化しない場合、またはアカウントのセッションの Run As サポートを有効にしない場合は、それらのオプション用に次の行を削除できます。「`inputs`」セクションの最後の行がカンマで終わっていないことを確認してください。  
セッションデータを暗号化するために KMS キー ID を追加する場合、セッションを開始するユーザーとそのユーザーが接続するマネージドノードの両方が、キーを使用する許可が必要になります。AWS Identity and Access Management (IAM) ポリシーを使用して、Session Manager で KMS キーを使用するアクセス許可を付与します。詳細については、以下のトピックを参照してください。  
アカウント内のユーザーに AWS KMS アクセス権限を追加します: [Session Manager のサンプル IAM ポリシー](getting-started-restrict-access-quickstart.md)。
アカウント内のマネージドノードに AWS KMS 権限を追加します: [ステップ 2: Session Manager のインスタンスのアクセス権限の確認または追加](session-manager-getting-started-instance-profile.md)。

1. ファイルを保存します。

1. JSON ファイルを作成したディレクトリで、次のコマンドを実行します。

------
#### [ Linux & macOS ]

   ```
   aws ssm update-document \
       --name "SSM-SessionManagerRunShell" \
       --content "file://SessionManagerRunShell.json" \
       --document-version "\$LATEST"
   ```

------
#### [  Server   ]

   ```
   aws ssm update-document ^
       --name "SSM-SessionManagerRunShell" ^
       --content "file://SessionManagerRunShell.json" ^
       --document-version "$LATEST"
   ```

------
#### [   PowerShell   ]

   ```
   Update-SSMDocument `
       -Name "SSM-SessionManagerRunShell" `
       -Content (Get-Content -Raw SessionManagerRunShell.json) `
       -DocumentVersion '$LATEST'
   ```

------

   成功すると、コマンドは以下のような出力を返します。

   ```
   {
       "DocumentDescription": {
           "Status": "Updating",
           "Hash": "ce4fd0a2ab9b0fae759004ba603174c3ec2231f21a81db8690a33eb66EXAMPLE",
           "Name": "SSM-SessionManagerRunShell",
           "Tags": [],
           "DocumentType": "Session",
           "PlatformTypes": [
               "Windows",
               "Linux"
           ],
           "DocumentVersion": "2",
           "HashType": "Sha256",
           "CreatedDate": 1537206341.565,
           "Owner": "111122223333",
           "SchemaVersion": "1.0",
           "DefaultVersion": "1",
           "DocumentFormat": "JSON",
           "LatestVersion": "2"
       }
   }
   ```

# ステップ 5: (オプション) セッションでのコマンドへのアクセスを制限する
<a name="session-manager-restrict-command-access"></a>

カスタム `Session` タイプの AWS Systems Manager (SSM) ドキュメントを使用すると、AWS Systems Manager Session Manager セッションでユーザーが実行できるコマンドを制限できます。ドキュメントでは、ユーザーがセッションを開始したときに実行されるコマンド、およびユーザーがコマンドに指定できるパラメータを定義します。`Session` ドキュメントの `schemaVersion` は 1.0 であり、`sessionType` は `InteractiveCommands` であることが必要です。その後、お客様が定義した `Session` ドキュメントのみへのアクセスをユーザーに許可する AWS Identity and Access Management (IAM) ポリシーを作成できます。IAM ポリシーを使用してセッションでのコマンドへのアクセスを制限する方法の詳細については、「[対話型コマンドの IAM ポリシーの例](#interactive-command-policy-examples)」を参照してください。

`InteractiveCommands` の `sessionType` を持つドキュメントは、AWS Command Line Interface (AWS CLI) から開始されたセッションでのみサポートされます。ユーザーはカスタムドキュメント名を `--document-name` パラメータ値として指定し、`--parameters` オプションを使用して任意のコマンドパラメータ値を指定します。対話型コマンドの実行の詳細については、「[セッションの開始 (対話形式と非対話形式のコマンド)](session-manager-working-with-sessions-start.md#sessions-start-interactive-commands)」を参照してください。

ユーザーに実行を許可するコマンドを定義するカスタムの `Session` タイプの SSM ドキュメントを作成するには以下の手順を使用します。

## セッションでコマンドへのアクセスを制限する (コンソール)
<a name="restrict-command-access-console"></a>

**Session Manager セッションでユーザーが実行できるコマンドを制限するには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、[**ドキュメント**] を選択します。

1. [**Create command or session (コマンドまたはセッションの作成)**] を選択します。

1. [**名前**] に、ドキュメントのわかりやすい名前を入力します。

1. [**Document type (ドキュメントタイプ)**] で、[**Session document (セッションドキュメント)**] を選択します。

1. 以下の例に示すように、JSON または YAML を使用して、Session Manager セッションでユーザーが実行できるコマンドを定義するドキュメントコンテンツを入力します。

------
#### [ YAML ]

   ```
   ---
   schemaVersion: '1.0'
   description: Document to view a log file on a Linux instance
   sessionType: InteractiveCommands
   parameters:
     logpath:
       type: String
       description: The log file path to read.
       default: "/var/log/amazon/ssm/amazon-ssm-agent.log"
       allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$"
   properties:
     linux:
       commands: "tail -f {{ logpath }}"
       runAsElevated: true
   ```

------
#### [ JSON ]

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to view a log file on a Linux instance",
       "sessionType": "InteractiveCommands",
       "parameters": {
           "logpath": {
               "type": "String",
               "description": "The log file path to read.",
               "default": "/var/log/amazon/ssm/amazon-ssm-agent.log",
               "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$"
           }
       },
       "properties": {
           "linux": {
               "commands": "tail -f {{ logpath }}",
               "runAsElevated": true
           }
       }
   }
   ```

------

1. [**Create document**] を選択します。

## セッションでコマンドへのアクセスを制限する (コマンドライン)
<a name="restrict-command-access-commandline"></a>

**開始する前に**  
まだ AWS Command Line Interface (AWS CLI) または AWS Tools for PowerShell をインストールして設定していない場合は、インストールして設定します。詳細については、「[AWS CLI の最新バージョンをインストールまたは更新します。](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」および「[AWS Tools for PowerShell のインストール](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html)」を参照してください。

**Session Manager セッションでユーザーが実行できるコマンドを制限するには (コマンドライン)**

1. 以下の例に示すように、Session Manager セッションでユーザーが実行できるコマンドを定義するドキュメントコンテンツの JSON または YAML ファイルを作成します。

------
#### [ YAML ]

   ```
   ---
   schemaVersion: '1.0'
   description: Document to view a log file on a Linux instance
   sessionType: InteractiveCommands
   parameters:
     logpath:
       type: String
       description: The log file path to read.
       default: "/var/log/amazon/ssm/amazon-ssm-agent.log"
       allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$"
   properties:
     linux:
       commands: "tail -f {{ logpath }}"
       runAsElevated: true
   ```

------
#### [ JSON ]

   ```
   {
       "schemaVersion": "1.0",
       "description": "Document to view a log file on a Linux instance",
       "sessionType": "InteractiveCommands",
       "parameters": {
           "logpath": {
               "type": "String",
               "description": "The log file path to read.",
               "default": "/var/log/amazon/ssm/amazon-ssm-agent.log",
               "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$"
           }
       },
       "properties": {
           "linux": {
               "commands": "tail -f {{ logpath }}",
               "runAsElevated": true
           }
       }
   }
   ```

------

1. 以下のコマンドを実行して、Session Manager セッションでユーザーが実行できるコマンドを定義するコンテンツから、SSM ドキュメントを作成します。

------
#### [ Linux & macOS ]

   ```
   aws ssm create-document \
       --content file://path/to/file/documentContent.json \
       --name "exampleAllowedSessionDocument" \
       --document-type "Session"
   ```

------
#### [  Server   ]

   ```
   aws ssm create-document ^
       --content file://C:\path\to\file\documentContent.json ^
       --name "exampleAllowedSessionDocument" ^
       --document-type "Session"
   ```

------
#### [   PowerShell   ]

   ```
   $json = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String
   New-SSMDocument `
       -Content $json `
       -Name "exampleAllowedSessionDocument" `
       -DocumentType "Session"
   ```

------

## 対話型コマンドパラメータと AWS CLI
<a name="restrict-command-access-parameters-cli"></a>

AWS CLI を使用する際、対話型のコマンドパラメータを指定する方法はさまざまあります。AWS CLI でマネージドノードに接続する際に使用するクライアントマシンのオペレーティングシステム (OS) によっては、特殊またはエスケープ記号を含むコマンドの構文が異なる場合があります。次の例は、AWS CLI の使用時にコマンドパラメータを指定する方法と、特殊文字またはエスケープ文字の処理方法を示しています。

Parameter Store に保存されたパラメータは、次の例に示すように、 コマンドパラメータの AWS CLI で参照できます。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters '{"command":["{{ssm:mycommand}}"]}'
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters '{"command":["{{ssm:mycommand}}"]}'
```

------

次の例は、AWS CLI で省略形構文を使用してパラメータを渡す方法を示しています。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters command="ifconfig"
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters command="ipconfig"
```

------

次の例に示すように、JSONでパラメータを指定することもできます。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters '{"command":["ifconfig"]}'
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters '{"command":["ipconfig"]}'
```

------

次の例に示すように、パラメータを JSON ファイルに格納し、AWS CLI に提供することもできます。ファイルから AWS CLI パラメータを使用する方法の詳細については、*AWS Command Line Interface ユーザーガイド*の「[ファイルから AWS CLI パラメータをロードする](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-parameters-file.html)」を参照してください。

```
{
    "command": [
        "my command"
    ]
}
```

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters file://complete/path/to/file/parameters.json
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters file://complete/path/to/file/parameters.json
```

------

次の例に示すように、JSON 入力ファイルから AWS CLI スケルトンを生成することもできます。JSON 入力ファイルから AWS CLI スケルトンを生成する方法の詳細については、*AWS Command Line Interface ユーザーガイド*の「[JSON または YAML 入力ファイルから AWS CLI スケルトンと入力パラメータを生成する](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-skeleton.html)」を参照してください。

```
{
    "Target": "instance-id",
    "DocumentName": "MyInteractiveCommandDocument",
    "Parameters": {
        "command": [
            "my command"
        ]
    }
}
```

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --cli-input-json file://complete/path/to/file/parameters.json
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --cli-input-json file://complete/path/to/file/parameters.json
```

------

引用符で囲まれた文字をエスケープするには、次の例に示すように、エスケープ文字にバックスラッシュを追加する必要があります。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name MyInteractiveCommandDocument \ 
    --parameters '{"command":["printf \"abc\\\\tdef\""]}'
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name MyInteractiveCommandDocument ^
    --parameters '{"command":["printf \"abc\\\\tdef\""]}'
```

------

AWS CLI のコマンドパラメータで引用符を使用する方法については、*AWS Command Line Interface ユーザーガイド*の「[AWS CLI の文字列で引用符を使用する](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-parameters-quoting-strings.html)」を参照してください。

## 対話型コマンドの IAM ポリシーの例
<a name="interactive-command-policy-examples"></a>

お客様が定義した `Session` ドキュメントのみへのアクセスをユーザーに許可する IAM ポリシーを作成できます。これにより、Session Manager セッションでユーザーが実行できるコマンドは、カスタムの `Session` タイプの SSM ドキュメントで定義されたコマンドのみに制限されます。

 **ユーザーに対して 1 つのマネージドノードに 1 つの対話コマンドの実行を許可**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/i-02573cafcfEXAMPLE",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

 **ユーザーに対してすべてのマネージドノードに 1 つの対話コマンドの実行を許可**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/*",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

 **ユーザーに対してすべてのマネージドノードに複数の対話コマンドの実行を許可**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/*",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document-2"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

# ステップ 6: (オプション) AWS PrivateLink を使用して Session Manager の VPC エンドポイントを設定する
<a name="session-manager-getting-started-privatelink"></a>

インターフェイス Virtual Private Cloud (VPC) エンドポイントを使用するように AWS Systems Manager を設定することにより、マネージドノードのセキュリティ体制をさら改善することができます。インターフェースエンドポイントは、プライベート IP アドレスを使用して Amazon Elastic Compute Cloud (Amazon EC2) および Systems Manager API にプライベートにアクセスできるテクノロジーである AWS PrivateLink を使用しています。

AWS PrivateLink はマネージドノード、Systems Manager、Amazon EC2 とAmazon ネットワーク間のすべてのネットワークトラフィックに制限します。(マネージドノードはインターネットへアクセスできません) また、インターネットゲートウェイ、NAT デバイスあるいは仮想プライベートゲートウェイの必要はありません。

VPC エンドポイントの作成については、詳細については、「[Systems Manager のために VPC エンドポイントを使用して EC2 インスタンスのセキュリティを強化する](setup-create-vpc.md)」を参照してください。

VPC エンドポイントを使用する代わりに、マネージドノードにアウトバウンド・インターネット アクセスを許可することができます。この場合、マネージドノードは、以下のエンドポイントに HTTPS (ポート 443) アウトバウンドトラフィックも許可する必要があります:
+  `ec2messages.region.amazonaws.com` 
+  `ssm.region.amazonaws.com` 
+  `ssmmessages.region.amazonaws.com` 

Systems Manager は、これらのエンドポイント `ssmmessages.region.amazonaws.com` の最後を使用して、SSM Agent からクラウド上の Session Manager サービスを呼び出します。

AWS Key Management Service (AWS KMS) 暗号化のようなオプション機能を使用、Amazon CloudWatch Logs (CloudWatch Logs) へログをストリーミング、 Amazon Simple Storage Service (Amazon S3) へログを送信する場合、以下のエンドポイントに HTTPS (ポート 443) アウトバウンドトラフィックも許可する必要があります:
+  `kms.region.amazonaws.com` 
+  `logs.region.amazonaws.com` 
+  `s3.region.amazonaws.com` 

Systems Manager に必要なエンドポイントの詳細については、「[リファレンス: ec2messages、ssmmessages およびその他の API オペレーション](systems-manager-setting-up-messageAPIs.md)」を参照してください。

# ステップ 7: (オプション) ssm-user アカウントの管理アクセス許可を有効または無効にする
<a name="session-manager-getting-started-ssm-user-permissions"></a>

AWS Systems Manager SSM Agent のバージョン 2.3.50.0 以降では、エージェントは `ssm-user` という名前のローカルユーザーアカウントを作成し、`/etc/sudoers` (Linux および macOS) または管理者グループ (Windows) に追加します。2.3.612.0 より前のエージェントバージョンでは、アカウントはインストール後に SSM Agent が最初に起動または再起動するときに作成されます。バージョン 2.3.612.0 以降の場合、`ssm-user` アカウントはノード上でセッションが最初に開始されたときに作成されます。この `ssm-user` は、AWS Systems Manager Session Manager セッションが開始された時のデフォルトオペレーティングシステム (OS) ユーザーです。SSM Agent のバージョン 2.3.612.0 は 2019 年 5 月 8 日にリリースされました。

Session Manager ユーザーがノード上で管理コマンドを実行できないようにする場合、`ssm-user` アカウントの許可を更新できます。これらのアクセス許可は、削除した後で復元することもできます。

**Topics**
+ [Linux と macOS で ssm-user sudo アカウントの許可を管理する](#ssm-user-permissions-linux)
+ [Windows Server で ssm-user の管理者アカウントのアクセス許可を管理する](#ssm-user-permissions-windows)

## Linux と macOS で ssm-user sudo アカウントの許可を管理する
<a name="ssm-user-permissions-linux"></a>

Linux と macOS のマネージドノードで ssm-user アカウントの sudo 許可を有効または無効にする場合、以下のいずれかの手順を実行します。

**Run Command を使用して ssm-user sudo のアクセス許可を変更する (コンソール)**
+ [コンソールからコマンドを実行する](running-commands-console.md) の手順を次の値で使用します。
  + [**Command document**] (コマンドのドキュメント) で、`AWS-RunShellScript` を選択します。
  + sudo アクセスを削除するには、[**Command parameters (コマンドのパラメータ)**] 領域で、[**コマンド**] ボックスに以下を貼り付けます。

    ```
    cd /etc/sudoers.d
    echo "#User rules for ssm-user" > ssm-agent-users
    ```

    -または-

    sudo アクセスを復元するには、[**Command parameters (コマンドのパラメータ)**] 領域で、[**コマンド**] ボックスに以下を貼り付けます。

    ```
    cd /etc/sudoers.d 
    echo "ssm-user ALL=(ALL) NOPASSWD:ALL" > ssm-agent-users
    ```

**コマンドラインを使用して ssm-user sudo のアクセス許可を変更する (AWS CLI)**

1. マネージドノードに接続して以下のコマンドを実行します。

   ```
   sudo -s
   ```

1. 次のコマンドを使用して、作業ディレクトリを変更します。

   ```
   cd /etc/sudoers.d
   ```

1. 編集する `ssm-agent-users` という名前のファイルを開きます。

1. sudo アクセスを削除するには、次の行を削除します。

   ```
   ssm-user ALL=(ALL) NOPASSWD:ALL
   ```

   -または-

   sudo アクセスを復元するには、次の行を追加します。

   ```
   ssm-user ALL=(ALL) NOPASSWD:ALL
   ```

1. ファイルを保存します。

## Windows Server で ssm-user の管理者アカウントのアクセス許可を管理する
<a name="ssm-user-permissions-windows"></a>

Windows Server のマネージドノードで ssm-user アカウントの 管理者 許可を有効または無効にする場合、以下のいずれかの手順を実行します。

**Run Command を使用して管理者権限を変更する (コンソール)**
+ [コンソールからコマンドを実行する](running-commands-console.md) の手順を次の値で使用します。

  [**Command document**] (コマンドのドキュメント) で、`AWS-RunPowerShellScript` を選択します。

  管理アクセスを削除するには、[**Command parameters (コマンドのパラメータ)**] 領域で、[**コマンド**] ボックスに以下を貼り付けます。

  ```
  net localgroup "Administrators" "ssm-user" /delete
  ```

  -または-

  管理アクセスを復元するには、[**Command parameters (コマンドのパラメータ)**] 領域で、[**コマンド**] ボックスに以下を貼り付けます。

  ```
  net localgroup "Administrators" "ssm-user" /add
  ```

**PowerShell またはコマンドプロンプトウィンドウを使用して管理者許可を変更する**

1. マネージドノードに接続して PowerShell またはコマンドプロンプトのウィンドウを開きます。

1. 管理アクセスを削除するには、次のコマンドを実行します。

   ```
   net localgroup "Administrators" "ssm-user" /delete
   ```

   -または-

   管理アクセスを復元するには、次のコマンドを実行します。

   ```
   net localgroup "Administrators" "ssm-user" /add
   ```

**Windows コンソールを使用して管理者許可を変更する**

1. マネージドノードに接続して PowerShell またはコマンドプロンプトのウィンドウを開きます。

1. コマンドラインから `lusrmgr.msc` を実行して、[**Local Users and Groups (ローカルユーザーとグループ)**] コンソールを開きます。

1. [**Users (ユーザー)**] ディレクトリを開いて、[**ssm-user**] を開きます。

1. [**Member Of (所属するグループ)**] タブで、次のいずれかを実行します。
   + 管理アクセスを削除するには、[**Administrators (管理者)**] を選択し、[**Remove (削除)**] を選択します。

     -または-

     管理アクセスを復元するには、テキストボックスに **Administrators** と入力し、[**追加**] を選択します。

1. [**OK**] を選択します。

# ステップ 8: (オプション) Session Manager を通して SSH 接続のアクセス許可を付与および制御する
<a name="session-manager-getting-started-enable-ssh-connections"></a>

AWS アカウント のユーザーに AWS Command Line Interface (AWS CLI) を使用する許可を付与して、AWS Systems Manager の Session Manager が適用されたマネージドノードに Secure Shell (SSH) 接続を確立できるようにします。SSH で接続するユーザーは Secure Copy Protocol (SCP) を使用して自分のローカルマシンとマネージドノード間でファイルをコピーすることもできます。この機能を使って、インバウンドポートを開いたり、踏み台ホストを維持したりすることなく、マネージドノードへ接続できます。

 Session Manager を介して SSH 接続を確立すると、AWS CLI と SSM Agent は TLS 経由で Session Manager エンドポイントへの安全な WebSocket 接続を作成します。SSH セッションは、この暗号化されたトンネル内で実行され、追加のセキュリティレイヤーが提供されます。マネージドノードでインバウンドポートを開く必要はありません。

SSH 接続を有効にした後、AWS Identity and Access Management (IAM) ポリシーを使用してユーザー、グループ、またはロールが Session Manager で SSH 接続を確立することを明示的に許可または拒否できます。

**注記**  
ログ記録は、ポート転送または SSH を介して接続する Session Manager セッションでは使用できません。これは、SSH が AWS CLI と Session Manager エンドポイントの間で確立された安全な TLS 接続内のすべてのセッションデータを暗号化し、Session Manager が SSH 接続のトンネルとしてのみ機能するためです。

**Topics**
+ [Session Manager で SSH 接続を有効にする手順](#ssh-connections-enable)
+ [Session Manager による SSH 接続のユーザーアクセス許可の制御](#ssh-connections-permissions)

## Session Manager で SSH 接続を有効にする手順
<a name="ssh-connections-enable"></a>

マネージドノードで Session Manager を通して SSH 接続を有効にする場合、次の手順を実行します。

**Session Managerで SSH 接続を有効にするには**

1. SSH 接続を有効にするマネージドノードに対して以下の手順を実行します:
   + SSH がマネージドノードに実行されていることを確認します。(ノードのインバウンドポートを閉じることができます)
   + SSM Agent のバージョン 2.3.672.0 以降がマネージドノードにインストールされていることを確認します。

     マネージドノードに SSM Agent のインストールまたは更新の詳細については、以下のトピックをご参照ください:
     + [Windows Server 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-windows.md).
     +  [Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-linux.md) 
     +  [macOS 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-macos.md) 
     +  [ハイブリッド Windows ノードで SSM Agent をインストールする方法](hybrid-multicloud-ssm-agent-install-windows.md) 
     +  [ハイブリッド Linux ノードで SSM Agent をインストールする方法](hybrid-multicloud-ssm-agent-install-linux.md) 
**注記**  
マネージドノードとしてアクティベートしたオンプレミスサーバー、エッジデバイス、仮想マシン (VM) に Session Manager を使用する場合、アドバンストインスタンス層を使用する必要があります。アドバンストインスタンスの詳細については、「[インスタンス層の設定](fleet-manager-configure-instance-tiers.md)」を参照してください。

1. SSH を使用したマネージドノードに接続するローカルマシンで、以下の手順を実行します:
   + Session Manager プラグイン 1.1.23.0 バージョン以降がインストールされていることを確認します。

     Session Manager プラグインのインストールについては、[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md) を参照してください。
   + SSH 設定ファイルを更新して、Session Manager セッションを開始し、接続を介してすべてのデータを転送するプロキシコマンドを実行できるようにします。

      **Linux および macOS** 
**ヒント**  
SSH 設定ファイルは通常 `~/.ssh/config` にあります。

     ローカルマシンの設定ファイルに以下を追加します。

     ```
     # SSH over Session Manager
     Host i-* mi-*
         ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
         User ec2-user
     ```

      ** Windows ** 
**ヒント**  
SSH 設定ファイルは通常 `C:\Users\<username>\.ssh\config` にあります。

     ローカルマシンの設定ファイルに以下を追加します。

     ```
     # SSH over Session Manager
     Host i-* mi-*
         ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"
     ```
   + マネージドノードへの接続を確立する際に使用する Privacy Enhanced Mail 証明書 (PEM ファイル) または少なくとも公開キーを作成または確認します。これはマネージドノードにすでに関連付けされたキーでなければなりません。プライベートキーファイルへのアクセス許可を設定し、お客様のみが読み取りできるようにする必要があります 次のコマンドを使用してプライベートキーファイルのアクセス許可を設定することで、お客様以外のユーザーによる読み取りを拒否できます。

     ```
     chmod 400 <my-key-pair>.pem
     ```

     例えば、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの場合、インスタンスの作成時に作成または選択したキーペアファイルです。(セッションを開始するには、コマンドの一部として証明書またはキーへのパスを指定します。SSH を使用してセッションを開始する方法については、「[セッションの開始 (SSH)](session-manager-working-with-sessions-start.md#sessions-start-ssh)」を参照してください。）

## Session Manager による SSH 接続のユーザーアクセス許可の制御
<a name="ssh-connections-permissions"></a>

Session Manager で マネージドノードに SSH 接続を有効にしたら、IAM ポリシーでユーザー、グループ、ロールが Session Manager で SSH 接続を確立する権限を許可または拒否できます。

**IAM ポリシーを使用して Session Manager での SSH 接続を許可するには**
+ 以下のいずれかのオプションを使用します。
  + **オプション 1**: IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

    ナビゲーションペインで [**Policies (ポリシー)**] を選択し、Session Manager を介した SSH 接続の開始を許可するユーザーまたはロールのアクセス許可ポリシーを更新します。

    例えば、[クイックスタート Session Manager のエンドユーザーポリシー](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user) で作成したクイックスタートポリシーに次の要素を追加します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ssm:StartSession",
                "Resource": [
                    "arn:aws:ec2:us-east-1:111122223333:instance/instance-id",
                    "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
                ]
            },
            {
                "Effect": "Allow",
                "Action": "ssmmessages:OpenDataChannel",
                "Resource": "arn:aws:ssm:*:*:session/${aws:userid}-*"
            }
        ]
    }
    ```

------
  + **オプション 2**: AWS マネジメントコンソール、AWS CLI、または AWS API を使用して、インラインポリシーをユーザーポリシーにアタッチします。

    任意の方法を使用して、**オプション 1** のポリシーステートメントを AWS ユーザー、グループ、またはロールのポリシーにアタッチします。

    詳細については、*IAM ユーザーガイド* の「[IAM ID アクセス許可の追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

**IAM ポリシーを使用して Session Manager での SSH 接続を拒否するには**
+ 以下のいずれかのオプションを使用します。
  + **オプション 1**: IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。ナビゲーションペインで [**ポリシー**] を選択し、ユーザーまたはロールのアクセス許可ポリシーを更新して、Session Manager セッションの開始をブロックします。

    例えば、[クイックスタート Session Manager のエンドユーザーポリシー](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user) で作成したクイックスタートポリシーに次の要素を追加します。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Deny",
                "Action": "ssm:StartSession",
                "Resource": "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
            },
            {
                "Effect": "Allow",
                "Action": "ssmmessages:OpenDataChannel",
                "Resource": "arn:aws:ssm:*:*:session/${aws:userid}-*"
            }
        ]
    }
    ```

------
  + **オプション 2**: AWS マネジメントコンソール、AWS CLI、または AWS API を使用して、インラインポリシーをユーザーポリシーにアタッチします。

    任意の方法を使用して、**オプション 1** のポリシーステートメントを AWS ユーザー、グループ、またはロールのポリシーにアタッチします。

    詳細については、*IAM ユーザーガイド* の「[IAM ID アクセス許可の追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

# Session Manager の使用
<a name="session-manager-working-with"></a>

AWS Systems Manager コンソール、Amazon Elastic Compute Cloud (Amazon EC2) コンソール、AWS Command Line Interface (AWS CLI) を使用して、AWS Identity and Access Management (IAM) ポリシーでシステム管理者がユーザーにアクセス権を付与したマネージドノードに接続するセッションを開始できます。アクセス権限に応じて、セッションに関する情報を表示したり、タイムアウトしていない非アクティブなセッションを再開したり、セッションを終了したりすることもできます。セッションが確立されると、セッションは IAM ロールのセッション期間の影響を受けません。Session Manager によるセッション期間の制限については、「[アイドルセッションのタイムアウト値を指定します。](session-preferences-timeout.md)」および「[最大セッション時間の指定](session-preferences-max-timeout.md)」を参照してください。

セッションの詳細については、「[セッションとは何ですか。](session-manager.md#what-is-a-session)」を参照してください。

**Topics**
+ [AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)
+ [セッションを開始する](session-manager-working-with-sessions-start.md)
+ [セッションを終了する](session-manager-working-with-sessions-end.md)
+ [セッション履歴を表示する](session-manager-working-with-view-history.md)

# AWS CLI 用の Session Manager プラグインをインストールする
<a name="session-manager-working-with-install-plugin"></a>

AWS Command Line Interface (AWS CLI) を使用してマネージドノードとの Session Manager セッションを開始するには、ローカルマシンに Session Manager プラグインをインストールする必要があります。Microsoft Windows Server、macOS、Linux、および Ubuntu Server のサポート対象のバージョンにプラグインをインストールできます。

**注記**  
Session Manager プラグインを使用するには、AWS CLI バージョン 1.16.12 以降をローカルマシンにインストールする必要があります。詳細については、「[Installing or updating the latest version of the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

**Topics**
+ [Session Manager プラグインの最新バージョンとリリース履歴](plugin-version-history.md)
+ [Windows での Session Manager プラグインのインストール](install-plugin-windows.md)
+ [macOS での Session Manager プラグインのインストール](install-plugin-macos-overview.md)
+ [Linux で Session Manager プラグインをインストールする](install-plugin-linux-overview.md)
+ [Session Manager プラグインのインストールを検証する](install-plugin-verify.md)
+ [GitHub での Session Manager プラグイン](plugin-github.md)
+ [(オプション) Session Manager プラグインのログ記録を有効にする](install-plugin-configure-logs.md)

# Session Manager プラグインの最新バージョンとリリース履歴
<a name="plugin-version-history"></a>

ローカルマシンで、Session Manager プラグインのサポートされているバージョンを実行する必要があります。現在サポートされている最小バージョンは 1.1.17.0 です。それ以前のバージョンを実行している場合は、Session Manager 操作が失敗する可能性があります。

 

最新バージョンを使用しているかどうかを確認するには、AWS CLI で次のコマンドを実行します。

**注記**  
このコマンドは、プラグインがご使用のオペレーティングシステムタイプのデフォルトのインストールディレクトリにある場合にのみ結果を返します。プラグインをインストールしたディレクトリの、`VERSION` ファイルのコンテンツでバージョンを確認することもできます。

```
session-manager-plugin --version
```

次の表は、Session Manager プラグインのすべてのリリースと、各バージョンに含まれている機能や機能強化を示しています。

**重要**  
常に最新バージョンの使用をお勧めします。最新バージョンには、プラグインの使用エクスペリエンスを改善する機能強化が含まれています。


| バージョン | リリース日 | 詳細 | 
| --- | --- | --- | 
| 1.2.792.0 |  2026 年 3 月 17 日  | **バグ修正**: Windows の国際キーボードサポートを追加します。 | 
| 1.2.779.0 |  2026 年 2 月 12 日  | **機能強化**: Dockerfile で Go バージョンが 1.25 にアップグレードされました。 **バグ修正**: Debian パッケージングスクリプトに shebang 行を追加します。 | 
| 1.2.764.0 |  2025 年 11 月 19 日  | **機能強化**: OpenDataChannel リクエストの署名にサポートが追加されました。 **バグ修正**: 新しい Go バージョンをサポートするためにチェックスタイルの問題が修正されました。 | 
| 1.2.707.0 |  2025 年 2 月 6 日  | **機能強化**: Dockerfile で Go バージョンが 1.23 にアップグレードされました。README のバージョン設定ステップを更新しました。 | 
| 1.2.694.0 |  2024 年 11 月 20 日  | **バグ修正**: OpenDataChannel リクエストに認証情報を追加した変更がロールバックされました。 | 
| 1.2.688.0 |  2024 年 11 月 6 日  | **このバージョンは 2024 年 11 月 20 日に廃止されました。** **機能強化**:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/plugin-version-history.html) | 
| 1.2.677.0 |  2024 年 10 月 10 日  | **拡張機能**: OpenDataChannel リクエストでプラグインバージョンを渡すためのサポートが追加されました。 | 
| 1.2.650.0 |  2024 年 7 月 2 日  | **機能強化**: aws-sdk-go を 1.54.10 にアップグレードしました。**バグ修正**: gofmt チェックのコメントを再フォーマットしました。 | 
| 1.2.633.0 |  2024 年 5 月 30 日  | 機能強化: Amazon Elastic Container Registry (Amazon ECR) イメージを使用するように Dockerfile を更新しました。 | 
| 1.2.553.0 |  2024 年 1 月 10 日  | 機能強化: aws-sdk-go パッケージと依存する Golang パッケージをアップグレードしました。 | 
| 1.2.536.0 |  2023 年 12 月 4 日  | 機能強化: [StartSession](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartSession.html) API レスポンスを環境変数としてセッションマネージャープラグインに渡すサポートが追加されました。 | 
| 1.2.497.0 |  2023 年 8 月 1 日  | エンハンスメント: Go SDK を v1.44.302 にアップグレードしました。 | 
| 1.2.463.0 |  2023 年 3 月 15 日  | 機能強化: macOS バンドルインストーラと署名済みインストーラに Apple Mac (M1) の Mac with Apple silicon サポートを追加しました。 | 
| 1.2.398.0 |  2022 年 10 月 14 日  | 機能強化: golang バージョン 1.17 をサポートします。macOS のデフォルトのセッションマネージャープラグインランナーを python3 を使用するように更新しました。SSMCLI からセッションマネージャープラグインへのインポートパスを更新します。 | 
| 1.2.339.0 |  2022 年 6 月 16 日  | バグ修正: ポートセッションのアイドルセッションタイムアウトを修正しました。 | 
| 1.2.331.0 |  2022 年 5 月 27 日  | バグ修正: タイムアウト前にローカルサーバーが接続しないときに、ポートセッションが途中で閉じる問題を修正しました。 | 
| 1.2.323.0 |  2022 年 5 月 19 日  | バグ修正: smux キープアライブを無効にして、アイドルセッションタイムアウト機能を使用するように修正しました。 | 
| 1.2.312.0 |  2022 年 3 月 31 日  | 機能拡張: より多くの出力メッセージペイロードのタイプをサポート。 | 
| 1.2.295.0 |  2022 年 1 月 12 日  | バグ修正: エージェントが非アクティブになった場合のクライアントによるストリームデータの再送信、ならびに start\$1publication と pause\$1publication メッセージに関する不正なログが原因で発生するセッションのハングアップ。 | 
| 1.2.279.0 |  2021 年 10 月 27 日  | 機能拡張: Windows プラットフォーム用の zip パッケージ。 | 
| 1.2.245.0 |  2021 年 8 月 19 日  | 機能拡張: AWS IAM アイデンティティセンター をサポートできるように aws-sdk-go を最新バージョン (v1.40.17) にアップグレードします。 | 
| 1.2.234.0 |  2021 年 7 月 26 日  | バグ修正: セッションが突然終了したシナリオを対話型セッションで処理します。 | 
| 1.2.205.0 |  2021 年 6 月 10 日  | 機能拡張: 署名されたmacOSインストーラのサポートが追加されました。 | 
| 1.2.54.0 |  2021 年 1 月 29 日  | 拡張: NonInteractiveCommands 実行モードでのセッションの実行のサポートが追加されました。 | 
| 1.2.30.0 |  2020 年 11 月 24 日  |  **拡張**: (ポート転送セッションのみ) 全体的なパフォーマンスが向上しました。  | 
| 1.2.7.0 |  2020 年 10 月 15 日  |  **拡張**: (ポート転送セッションのみ) レイテンシーを短縮し、全体的なパフォーマンスを向上させました。  | 
| 1.1.61.0 |  2020 年 4 月 17 日  |  **機能強化**: Linux および Ubuntu Server の ARM サポートが追加されました。  | 
| 1.1.54.0 |  2020 年 1 月 6 日  |  **バグ修正**: Session Manager プラグインの準備が完了していないときにドロップされるパケットの競合状態シナリオに対処します。  | 
|  1.1.50.0  | 2019 年 11 月 19 日 |  **機能強化**: ポートをローカル UNIX ソケットに転送するためのサポートが追加されました。  | 
|  1.1.35.0  | 2019 年 11 月 7 日 |  **機能強化**: (ポート転送セッションのみ) ローカルユーザーが `Ctrl+C` を押すと、TerminateSession コマンドが SSM Agent に送信されます。  | 
| 1.1.33.0 | 2019 年 9 月 26 日 | 機能強化:(ポート転送セッションのみ) クライアントが TCP 接続を中断したときに、サーバーに切断信号を送信します。 | 
| 1.1.31.0 | 2019 年 9 月 6 日 | 機能強化: リモートサーバーが接続を閉じるまでポート転送セッションを開いたままにするための更新です。 | 
|  1.1.26.0  | 2019 年 7 月 30 日 |  **機能拡張**: セッション中のデータ転送速度を制限するための更新です。  | 
|  1.1.23.0  | 2019 年 7 月 9 日 |  **機能拡張**: Session Manager を使用して SSH セッションを実行するためのサポートが追加されました。  | 
| 1.1.17.0 | 2019 年 4 月 4 日 |  **機能強化**: AWS Key Management Service(AWS KMS) を使用してセッションデータをさらに暗号化するためのサポートが追加されました。  | 
| 1.0.37.0 | 2018 年 9 月 20 日 |  **機能強化**: Windows バージョンのバグ修正。  | 
| 1.0.0.0 | 2018 年 9 月 11 日 |  Session Manager プラグインの初回リリース。  | 

# Windows での Session Manager プラグインのインストール
<a name="install-plugin-windows"></a>

スタンドアロンインストーラを使用して、Windows Vista 以降に Session Manager プラグインをインストールできます。

更新がリリースされたときは、最新バージョンの Session Manager プラグインを取得するため、インストールプロセスを繰り返す必要があります。

**注記**  
以下の情報に注意してください。  
Session Manager プラグインインストーラには、プラグインをインストールするための管理者権限が必要です。
最良の結果を得るには、Windows PowerShell のバージョン 5 以降を使用して、Windows クライアントでセッションを開始することをお勧めします。または、Windows 10 のコマンドシェルを使用できます。Session Manager プラグインでは、PowerShell とコマンドシェルのみがサポートされています。サードパーティーのコマンドラインツールは、プラグインと互換性がない可能性があります。

**EXE インストーラを使用して Session Manager プラグインをインストールするには**

1. 次の URL を使用してインストーラをダウンロードします。

   ```
   https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPluginSetup.exe
   ```

   または、次の URL から zip 形式のインストーラーをダウンロードすることもできます。

   ```
   https://s3.amazonaws.com/session-manager-downloads/plugin/latest/windows/SessionManagerPlugin.zip
   ```

1. ダウンロードしたインストーラを実行し、画面の指示に従います。zip 形式のインストーラーをダウンロードした場合は、まずインストーラーを解凍する必要があります。

   インストール先のボックスを空白のままにして、プラグインをデフォルトディレクトリにインストールします。
   +  `%PROGRAMFILES%\Amazon\SessionManagerPlugin\bin\` 

1. インストールが成功したことを確認します。詳細については、「[Session Manager プラグインのインストールを検証する](install-plugin-verify.md)」を参照してください。
**注記**  
Windows が実行ファイルを見つけることができない場合、コマンドプロンプトを再度開くか、または手動でインストールディレクトリを `PATH` 環境変数に追加します。詳細については、トラブルシューティングトピック「[Session Manager プラグインがコマンドラインパスに自動的に追加されませんでした (Windows)](session-manager-troubleshooting.md#windows-plugin-env-var-not-set)」を参照してください。

# macOS での Session Manager プラグインのインストール
<a name="install-plugin-macos-overview"></a>

Session Manager プラグインを macOS にインストールするには、次のいずれかのトピックを選択します。

**注記**  
署名付きインストーラーは署名付き `.pkg` ファイルです。バンドルインストーラーは `.zip` ファイルを使用します。ファイルを解凍後、バイナリを使用してプラグインをインストールできます。

## 署名されたインストーラーを使用して Session Manager プラグインを macOS にインストールする
<a name="install-plugin-macos-signed"></a>

このセクションでは、署名済みのインストーラーを使用して Session Manager プラグインを macOS にインストールする方法について説明します。

**署名されたインストーラー (macOS) を使用して Session Manager プラグインをインストールするには**

1. 署名されたインストーラーをダウンロードします。

------
#### [ x86\$164 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
   ```

------
#### [ Apple シリコン搭載の Mac ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
   ```

------

1. インストールコマンドを実行します。コマンドが失敗した場合は、`/usr/local/bin` フォルダが存在することを確認します。存在しない場合はこれを作成してから、再度コマンドを実行します。

   ```
   sudo installer -pkg session-manager-plugin.pkg -target /
   sudo ln -s /usr/local/sessionmanagerplugin/bin/session-manager-plugin /usr/local/bin/session-manager-plugin
   ```

1. インストールが成功したことを確認します。詳細については、「[Session Manager プラグインのインストールを検証する](install-plugin-verify.md)」を参照してください。

## macOS での Session Manager プラグインのインストール
<a name="install-plugin-macos"></a>

このセクションでは、バンドルされたインストーラーを使用して Session Manager プラグインを macOS にインストールする方法について説明します。

**重要**  
次の重要な情報に注意してください。  
スクリプトはプラグインを `/usr/local/sessionmanagerplugin` システムディレクトリにインストールするため、デフォルトでは、インストーラの実行に sudo アクセスが必要です。プラグインのインストールに sudo を使用しない場合は、インストーラのスクリプトを手動で更新し、プラグインを、sudo アクセスが不要なディレクトリにインストールします。
バンドルされたインストーラでは、スペースを含むパスへのインストールはサポートされていません。

**バンドルされたインストーラ (macOS) を使用して Session Manager プラグインをインストールするには**

1. バンドルされたインストーラをダウンロードします。

------
#### [ x86\$164 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
   ```

------
#### [ Apple シリコン搭載の Mac ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
   ```

------

1. パッケージを解凍します。

   ```
   unzip sessionmanager-bundle.zip
   ```

1. インストールコマンドを実行します。

   ```
   sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
   ```
**注記**  
 プラグインには Python 3.10 以降が必要です。デフォルトでは、インストールスクリプトはシステムのデフォルトバージョンの Python で実行されます。別のバージョンの Python がインストールされており、それを使用して Session Manager プラグインをインストールする場合は、Python の実行可能ファイルへの絶対パスを指定してそのバージョンでインストールスクリプトを実行します。以下に例を示します。  

   ```
   sudo /usr/local/bin/python3.11 sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
   ```

   インストーラは Session Manager プラグインを `/usr/local/sessionmanagerplugin` にインストールし、シンボリックリンク `session-manager-plugin` を `/usr/local/bin` ディレクトリに作成します。これにより、ユーザーの `$PATH` 変数にインストールディレクトリを指定する必要がなくなります。

   `-i` オプションおよび `-b` オプションの説明を表示するには、`-h` オプションを使用します。

   ```
   ./sessionmanager-bundle/install -h
   ```

1. インストールが成功したことを確認します。詳細については、「[Session Manager プラグインのインストールを検証する](install-plugin-verify.md)」を参照してください。

**注記**  
プラグインをアンインストールするには、次の 2 つのコマンドを表示順に実行します。  

```
sudo rm -rf /usr/local/sessionmanagerplugin
```

```
sudo rm /usr/local/bin/session-manager-plugin
```

# Linux で Session Manager プラグインをインストールする
<a name="install-plugin-linux-overview"></a>

このセクションでは、Session Manager プラグインインストーラパッケージの署名を確認し、以下の Linux ディストリビューションにプラグインをインストールする方法について説明します。
+ Amazon Linux 2
+ AL2023
+ RHEL
+ Debian Server
+ Ubuntu Server

**Topics**
+ [Session Manager プラグインの署名を確認する](install-plugin-linux-verify-signature.md)
+ [Amazon Linux 2、Amazon Linux 2023、Red Hat Enterprise Linux ディストリビューションに Session Manager プラグインをインストールする](install-plugin-linux.md)
+ [Debian Server と Ubuntu Server での Session Manager プラグインのインストール](install-plugin-debian-and-ubuntu.md)

# Session Manager プラグインの署名を確認する
<a name="install-plugin-linux-verify-signature"></a>

Linux インスタンス用の Session Manager プラグイン RPM および Debian インストーラパッケージは、暗号化で署名されています。パブリックキーを使用して、プラグインバイナリとパッケージがオリジナルであり、変更されていないことを確認できます。ファイルが改変されていたり、損傷があった場合、確認は失敗します。GNU Privacy Guard (GPG) ツールを使用して、インストーラパッケージの署名を確認できます。以下の情報は Session Manager プラグインのバージョン 1.2.707.0 以降のものです。

Session Manager プラグインインストーラパッケージの署名を確認するには、次の手順を実行します。

**Topics**
+ [ステップ 1: Session Manager プラグインインストーラーパッケージをダウンロードする](#install-plugin-linux-verify-signature-installer-packages)
+ [ステップ 2: 関連付けられた署名ファイルをダウンロードする](#install-plugin-linux-verify-signature-packages)
+ [ステップ 3: GPG ツールをインストールする](#install-plugin-linux-verify-signature-packages-gpg)
+ [ステップ 4: Linux サーバーで Session Manager プラグインインストーラパッケージを確認する](#install-plugin-linux-verify-signature-packages)

## ステップ 1: Session Manager プラグインインストーラーパッケージをダウンロードする
<a name="install-plugin-linux-verify-signature-installer-packages"></a>

検証する Session Manager プラグインインストーラパッケージをダウンロードします。

**Amazon Linux 2、AL2023、および RHEL RPM パッケージ**

------
#### [ x86\$164 ]

```
curl -o "session-manager-plugin.rpm" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm"
```

------
#### [ ARM64 ]

```
curl -o "session-manager-plugin.rpm" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm"
```

------

**Debian Server および Ubuntu Server Deb パッケージ**

------
#### [ x86\$164 ]

```
curl -o "session-manager-plugin.deb" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb"
```

------
#### [ ARM64 ]

```
curl -o "session-manager-plugin.deb" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb"
```

------

## ステップ 2: 関連付けられた署名ファイルをダウンロードする
<a name="install-plugin-linux-verify-signature-packages"></a>

インストーラパッケージをダウンロードしたら、パッケージの検証のために関連する署名ファイルをダウンロードします。パッケージ内の session-manager-plugin バイナリファイルの不正なコピーや使用に対する保護を強化するために、個々のバイナリファイルの検証に使用できるバイナリ署名も提供しています。必要なセキュリティに応じて、これらのバイナリ署名を使用することを選択できます。

**Amazon Linux 2、AL2023、および RHEL 署名パッケージ**

------
#### [ x86\$164 ]

パッケージ:

```
curl -o "session-manager-plugin.rpm.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm.sig"
```

バイナリ:

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.sig"
```

------
#### [ ARM64 ]

パッケージ:

```
curl -o "session-manager-plugin.rpm.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm.sig"
```

バイナリ:

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.sig"
```

------

**Debian Server および Ubuntu Server Deb 署名パッケージ**

------
#### [ x86\$164 ]

パッケージ:

```
curl -o "session-manager-plugin.deb.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb.sig"
```

バイナリ:

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.sig"
```

------
#### [ ARM64 ]

パッケージ:

```
curl -o "session-manager-plugin.deb.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb.sig"
```

バイナリ:

```
curl -o "session-manager-plugin.sig" "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.sig"
```

------

## ステップ 3: GPG ツールをインストールする
<a name="install-plugin-linux-verify-signature-packages-gpg"></a>

Session Manager プラグインの署名を確認するには、システムに GNU Privacy Guard (GPG) ツールがインストールされている必要があります。この検証プロセスには、GPG バージョン 2.1 以降が必要です。GPG バージョンは、以下のコマンドを実行することで確認できます。

```
gpg --version
```

GPG バージョンが 2.1 より古い場合は、検証プロセスに進む前に更新してください。ほとんどのシステムでは、パッケージマネージャーを使用して GPG ツールを更新できます。例えば、サポートされている Amazon Linux と RHEL のバージョンでは、以下のコマンドを使用できます。

```
sudo yum update
sudo yum install gnupg2
```

サポートされている Ubuntu Server および Debian Server システムでは、以下のコマンドを使用できます。

```
sudo apt-get update
sudo apt-get install gnupg2
```

検証プロセスを続行する前に、必要な GPG バージョンがあることを確認してください。

## ステップ 4: Linux サーバーで Session Manager プラグインインストーラパッケージを確認する
<a name="install-plugin-linux-verify-signature-packages"></a>

Linux サーバーで Session Manager プラグインインストーラパッケージを検証するには、次の手順に従います。

**注記**  
Amazon Linux 2 は、GPG ツールのバージョン 2.1 以降をサポートしていません。次の手順が Amazon Linux 2 インスタンスで機能しない場合は、Amazon Linux 2 インスタンスにインストールする前に、別のプラットフォームで署名を確認してください。

1. 次のパブリックキーをコピーし、session-manager-plugin.gpg という名前のファイルに保存します。

   ```
   -----BEGIN PGP PUBLIC KEY BLOCK-----
   
   mFIEZ5ERQxMIKoZIzj0DAQcCAwQjuZy+IjFoYg57sLTGhF3aZLBaGpzB+gY6j7Ix
   P7NqbpXyjVj8a+dy79gSd64OEaMxUb7vw/jug+CfRXwVGRMNtIBBV1MgU1NNIFNl
   c3Npb24gTWFuYWdlciA8c2Vzc2lvbi1tYW5hZ2VyLXBsdWdpbi1zaWduZXJAYW1h
   em9uLmNvbT4gKEFXUyBTeXN0ZW1zIE1hbmFnZXIgU2Vzc2lvbiBNYW5hZ2VyIFBs
   dWdpbiBMaW51eCBTaWduZXIgS2V5KYkBAAQQEwgAqAUCZ5ERQ4EcQVdTIFNTTSBT
   ZXNzaW9uIE1hbmFnZXIgPHNlc3Npb24tbWFuYWdlci1wbHVnaW4tc2lnbmVyQGFt
   YXpvbi5jb20+IChBV1MgU3lzdGVtcyBNYW5hZ2VyIFNlc3Npb24gTWFuYWdlciBQ
   bHVnaW4gTGludXggU2lnbmVyIEtleSkWIQR5WWNxJM4JOtUB1HosTUr/b2dX7gIe
   AwIbAwIVCAAKCRAsTUr/b2dX7rO1AQCa1kig3lQ78W/QHGU76uHx3XAyv0tfpE9U
   oQBCIwFLSgEA3PDHt3lZ+s6m9JLGJsy+Cp5ZFzpiF6RgluR/2gA861M=
   =2DQm
   -----END PGP PUBLIC KEY BLOCK-----
   ```

1. 公開鍵をキーリングにインポートします。返されるキー値は `2C4D4AFF6F6757EE` である必要があります。

   ```
   $ gpg --import session-manager-plugin.gpg
   gpg: key 2C4D4AFF6F6757EE: public key "AWS SSM Session Manager <session-manager-plugin-signer@amazon.com> (AWS Systems Manager Session Manager Plugin Linux Signer Key)" imported
   gpg: Total number processed: 1
   gpg:               imported: 1
   ```

1. 次のコマンドを実行して、フィンガープリントを検証します。

   ```
   gpg --fingerprint 2C4D4AFF6F6757EE
   ```

   コマンド出力のフィンガープリントは、次のものと一致する必要があります。

   ```
   7959 6371 24CE 093A D501 D47A 2C4D 4AFF 6F67 57EE
   ```

   ```
   pub   nistp256 2025-01-22 [SC]
         7959 6371 24CE 093A D501  D47A 2C4D 4AFF 6F67 57EE
   uid           [ unknown] AWS SSM Session Manager <session-manager-plugin-signer@amazon.com> (AWS Systems Manager Session Manager Plugin Linux Signer Key)
   ```

   フィンガープリントが一致しない場合は、プラグインをインストールしないでください。AWS サポート に連絡する。

1. インストーラパッケージの署名を確認します。*signature-filename* および *downloaded-plugin-filename* は、このトピックの表で前述したように、署名ファイルおよび session-manager-plugin をダウンロードするときに指定した値に置き換えてください。

   ```
   gpg --verify signature-filename downloaded-plugin-filename
   ```

   例えば、Amazon Linux 2 の x86\$164 アーキテクチャの場合、コマンドは次のとおりです。

   ```
   gpg --verify session-manager-plugin.rpm.sig session-manager-plugin.rpm
   ```

   このコマンドは、次のような出力を返します。

   ```
   gpg: Signature made Mon Feb 3 20:08:32 2025 UTC gpg: using ECDSA key 2C4D4AFF6F6757EE
   gpg: Good signature from "AWS Systems Manager Session Manager <session-manager-plugin-signer@amazon.com> (AWS Systems Manager Session Manager Plugin Linux Signer Key)" [unknown] 
   gpg: WARNING: This key is not certified with a trusted signature! 
   gpg: There is no indication that the signature belongs to the owner. 
   Primary key fingerprint: 7959 6371 24CE 093A D501 D47A 2C4D 4AFF 6F67 57EE
   ```

出力結果に「`BAD signature`」という句が含まれる場合、手順が正しいことをもう一度確認してください。この応答が続く場合は、AWS サポート に連絡し、パッケージをインストールしないでください。信頼に関する警告メッセージは、署名が無効であることを意味するものではなく、パブリックキーを検証していないことを示すだけです。キーは、自分や信頼する人が署名した場合にのみ信頼できます。出力にフレーズ `Can't check signature: No public key` が含まれている場合、Session Manager バージョン 1.2.707.0 以降をダウンロードしたことを確認します。

# Amazon Linux 2、Amazon Linux 2023、Red Hat Enterprise Linux ディストリビューションに Session Manager プラグインをインストールする
<a name="install-plugin-linux"></a>

次の手順を使用して、Session Manager プラグインを Amazon Linux 2、Amazon Linux 2023 (AL2023)、RHEL ディストリビューションにインストールします。

1. Session Manager プラグイン RPM パッケージをダウンロードしてインストールします。

------
#### [ x86\$164 ]

   Amazon Linux 2 と RHEL 7 では、次のコマンドを実行します。

   ```
   sudo yum install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm
   ```

   AL2023、RHEL 8 および 9 では、次のコマンドを実行します。

   ```
   sudo dnf install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm
   ```

------
#### [ ARM64 ]

   Amazon Linux 2 と RHEL 7 では、次のコマンドを実行します。

   ```
   sudo yum install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm
   ```

   AL2023、RHEL 8 および 9 では、次のコマンドを実行します。

   ```
   sudo dnf install -y https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_arm64/session-manager-plugin.rpm
   ```

------

1. インストールが成功したことを確認します。詳細については、「[Session Manager プラグインのインストールを検証する](install-plugin-verify.md)」を参照してください。

**注記**  
プラグインをアンインストールする必要がある場合は、`sudo yum erase session-manager-plugin -y` を実行します。

# Debian Server と Ubuntu Server での Session Manager プラグインのインストール
<a name="install-plugin-debian-and-ubuntu"></a>

1. Session Manager プラグイン deb パッケージをダウンロードします。

------
#### [ x86\$164 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o "session-manager-plugin.deb"
   ```

------
#### [ ARM64 ]

   ```
   curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_arm64/session-manager-plugin.deb" -o "session-manager-plugin.deb"
   ```

------

1. インストールコマンドを実行します。

   ```
   sudo dpkg -i session-manager-plugin.deb
   ```

1. インストールが成功したことを確認します。詳細については、[Session Manager プラグインのインストールを検証する](install-plugin-verify.md) を参照してください。

**注記**  
プラグインをアンインストールする必要がある場合は、`sudo dpkg -r session-manager-plugin` を実行します。

# Session Manager プラグインのインストールを検証する
<a name="install-plugin-verify"></a>

Session Manager プラグインが正常にインストールされたことを確認するには、次のコマンドを実行します。

```
session-manager-plugin
```

インストールが成功すると、次のメッセージが返されます。

```
The Session Manager plugin is installed successfully. Use the AWS CLI to start a session.
```

[AWS Command Line Interface](https://aws.amazon.com/cli/) (AWS CLI) 内の [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html) コマンドを実行してインストールをテストすることもできます。次のコマンドで、「*instance-id*」をユーザー自身の情報に置き換えます。

```
aws ssm start-session --target instance-id
```

このコマンドは、AWS CLI をインストールして設定し、Session Manager を使用してターゲットマネージドノードにアクセスするために必要な IAM 許可を Session Manager 管理者がユーザーに付与している場合にのみ機能します。

# GitHub での Session Manager プラグイン
<a name="plugin-github"></a>

ニーズに応じてプラグインを調整できるように、Session Manager プラグインのソースコードが [https://github.com/aws/session-manager-plugin](https://github.com/aws/session-manager-plugin) に用意されています。含めることを希望する変更について、[プルリクエスト](https://github.com/aws/session-manager-plugin/blob/mainline/CONTRIBUTING.md)を送信することをお勧めします。ただし、Amazon Web Services はこのソフトウェアの変更されたコピーの実行をサポートしていません。

# (オプション) Session Manager プラグインのログ記録を有効にする
<a name="install-plugin-configure-logs"></a>

Session Manager プラグインには、実行するセッションのログ記録を有効にするオプションが含まれています。デフォルトでは、ログは無効化されています。

ログ記録を有効にすると、Session Manager プラグインは、ローカルマシン上のアプリケーションアクティビティ (`session-manager-plugin.log`) とエラー (`errors.log`) のログファイルを作成します。

**Topics**
+ [Session Manager プラグインのログ記録を有効にする (Windows)](#configure-logs-windows)
+ [Session Manager プラグインのログ記録を有効にする (Linux および macOS)](#configure-logs-linux)

## Session Manager プラグインのログ記録を有効にする (Windows)
<a name="configure-logs-windows"></a>

1. プラグインの `seelog.xml.template` ファイルを探します。

   デフォルトの場所は `C:\Program Files\Amazon\SessionManagerPlugin\seelog.xml.template` です。

1. ファイルの名前を `seelog.xml` に変更します。

1. ファイルを開き、`minlevel="off"` を `minlevel="info"` または `minlevel="debug"` に変更します。
**注記**  
デフォルトでは、データチャネルのオープンとセッションの再接続に関するログエントリは、**INFO** レベルで記録されます。データフロー (パケットおよび送達確認) エントリは、**DEBUG** レベルで記録されます。

1. 変更が必要なその他の設定オプションを変更します。変更できるオプションには、次のようなものがあります。
   + **デバッグレベル**: デバッグレベルを `formatid="fmtinfo"` から `formatid="fmtdebug"` に変更することができます。
   + **ログファイルのオプション**: ログファイルの保存場所を含むログファイルオプションを変更できます (ログファイル名を除く)。
**重要**  
ファイル名を変更しないでください。ログが正しく機能しなくなります。

     ```
     <rollingfile type="size" filename="C:\Program Files\Amazon\SessionManagerPlugin\Logs\session-manager-plugin.log" maxsize="30000000" maxrolls="5"/>
     <filter levels="error,critical" formatid="fmterror">
     <rollingfile type="size" filename="C:\Program Files\Amazon\SessionManagerPlugin\Logs\errors.log" maxsize="10000000" maxrolls="5"/>
     ```

1. ファイルを保存します。

## Session Manager プラグインのログ記録を有効にする (Linux および macOS)
<a name="configure-logs-linux"></a>

1. プラグインの `seelog.xml.template` ファイルを探します。

   デフォルトの場所は `/usr/local/sessionmanagerplugin/seelog.xml.template` です。

1. ファイルの名前を `seelog.xml` に変更します。

1. ファイルを開き、`minlevel="off"` を `minlevel="info"` または `minlevel="debug"` に変更します。
**注記**  
デフォルトでは、データチャネルのオープンとセッションの再接続に関するログエントリは、**INFO** レベルで記録されます。データフロー (パケットおよび送達確認) エントリは、**DEBUG** レベルで記録されます。

1. 変更が必要なその他の設定オプションを変更します。変更できるオプションには、次のようなものがあります。
   + **デバッグレベル**: デバッグレベルを `formatid="fmtinfo"` から `outputs formatid="fmtdebug"` に変更することができます。
   + **ログファイルのオプション**: ログファイルの保存場所を含むログファイルオプションを変更できます (ログファイル名を除く)。
**重要**  
ファイル名を変更しないでください。ログが正しく機能しなくなります。

     ```
     <rollingfile type="size" filename="/usr/local/sessionmanagerplugin/logs/session-manager-plugin.log" maxsize="30000000" maxrolls="5"/>
     <filter levels="error,critical" formatid="fmterror">
     <rollingfile type="size" filename="/usr/local/sessionmanagerplugin/logs/errors.log" maxsize="10000000" maxrolls="5"/>
     ```
**重要**  
ログを保存するために指定されたデフォルトのディレクトリを使用する場合は、**sudo** を使用してセッションコマンドを実行するか、プラグインがインストールされているディレクトリに完全な読み取りおよび書き込みのアクセス権限を与える必要があります。これらの制限を回避するには、ログを保存する場所を変更します。

1. ファイルを保存します。

# セッションを開始する
<a name="session-manager-working-with-sessions-start"></a>

AWS Systems Manager コンソール、Amazon Elastic Compute Cloud (Amazon EC2) コンソール、AWS Command Line Interface (AWS CLI)、または SSH を使用してセッションを開始できます。

**Topics**
+ [セッションを開始する (Systems Manager コンソール)](#start-sys-console)
+ [セッションを開始する (Amazon EC2 コンソール)](#start-ec2-console)
+ [セッションの開始 (AWS CLI)](#sessions-start-cli)
+ [セッションの開始 (SSH)](#sessions-start-ssh)
+ [セッションの開始 (ポート転送)](#sessions-start-port-forwarding)
+ [セッションの開始 (リモートホストへのポート転送)](#sessions-remote-port-forwarding)
+ [セッションの開始 (対話形式と非対話形式のコマンド)](#sessions-start-interactive-commands)

## セッションを開始する (Systems Manager コンソール)
<a name="start-sys-console"></a>

AWS Systems Manager コンソールを使用してアカウント内のマネージドノードとセッションを開始できます。

**注記**  
セッションを開始する前に、Session Manager のセットアップ手順を完了していることを確認してください。詳細については、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。

**セッションを開始する方法 (Systems Manager コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Start session (セッションの開始)**] を選択します。

1. (オプション) **[セッションの理由]** フィールドにセッションの説明を入力します。

1. **[ターゲットインスタンス]** の場合、接続先のマネージドノードの左側にあるオプションボタンを選択します。

   目的のノードがリストにない場合や、ノードを選択して設定エラーが表示される場合は、トラブルシューティングの手順について「[Session Manager が使用できない、または使用に設定されていないマネージドノード。](session-manager-troubleshooting.md#session-manager-troubleshooting-instances)」を参照してください。

1. **[セッションを開始]** を選択すると、セッションがすぐに開始されます。

   -または-

   セッションオプションで **[次へ]** を選択します。

1. (オプション) **[セッションドキュメント]** では、セッションの開始時に実行するドキュメントを選択します。ドキュメントがランタイムパラメータをサポートしている場合は、各パラメータフィールドに 1 つ以上の値をカンマで区切って入力できます。

1. [**次へ**] を選択します。

1. [**Start session (セッションの開始)**] を選択します。

接続が確立されたら、他の接続タイプと同様に、bash コマンド (Linux および macOS) または PowerShell コマンド (Windows) を実行できます。

**重要**  
Session Manager コンソールでセッションを開始するときにユーザーがドキュメントを指定できるようにするには、次の点に注意してください。  
IAM ポリシーでユーザーに `ssm:GetDocument` および `ssm:ListDocuments` 許可を付与する必要があります。詳細については、「[コンソールでカスタムセッションドキュメントへのアクセスを許可する](getting-started-restrict-access-examples.md#grant-access-documents-console-example)」を参照してください。
コンソールは、`Standard_Stream` として定義されている `sessionType` を持つセッションドキュメントのみをサポートします。詳細については、「[セッションドキュメントスキーマ](session-manager-schema.md)」を参照してください。

## セッションを開始する (Amazon EC2 コンソール)
<a name="start-ec2-console"></a>

Amazon Elastic Compute Cloud (Amazon EC2) コンソールを使用して、アカウント内のインスタンスとのセッションを開始できます。

**注記**  
Systems Manager アクション (`ssm:command-name`) を実行する権限がないというエラーが表示された場合、管理者に問い合わせ、サポートを依頼する必要があります。管理者とは、サインイン認証情報を提供した担当者です。ポリシーを更新して、Amazon EC2 コンソールからセッションを開始できるようにしてもらいます。管理者の場合は、「[Session Manager のサンプル IAM ポリシー](getting-started-restrict-access-quickstart.md)」を参照してください。

**セッションを開始するには (Amazon EC2 コンソール)**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、[**接続**] を選択してください。

1. [**Connection method (接続方法)**] で、[**Session Manager**] を選択します。

1. **接続** を選択します。

接続が確立されたら、他の接続タイプと同様に、bash コマンド (Linux および macOS) または PowerShell コマンド (Windows) を実行できます。

## セッションの開始 (AWS CLI)
<a name="sessions-start-cli"></a>

まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

詳細については、「[AWS CLI の最新バージョンをインストールまたは更新します。](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

セッションを開始する前に、Session Manager のセットアップ手順を完了していることを確認してください。詳細については、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。

AWS CLI を使用してセッションコマンドを実行するには、ローカルマシンにも Session Manager プラグインがインストールされている必要があります。詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。

AWS CLI を使用してセッションを開始するには、「*instance-id*」をユーザー自身の情報で置き換えて、次のコマンドを実行します。

```
aws ssm start-session \
    --target instance-id
```

**start-session** コマンドで使用できるその他のオプションについては、AWS CLI コマンドリファレンスの AWS Systems Manager のセクションの「[https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)」を参照してください。

## セッションの開始 (SSH)
<a name="sessions-start-ssh"></a>

Session Manager SSH セッションを開始する場合、SSM Agent のバージョン 2.3.672.0 以降がマネージドノードにインストールされている必要があります。

**SSH 接続の要件**  
Session Manager での SSH を使用したセッション接続に関する次の要件と制限事項に注意してください。
+ ターゲットのマネージドノードは SSH 接続をサポートするように設定する必要があります。詳細については、「[(オプション) Session Manager を通して SSH 接続のアクセス許可を付与して制御する](session-manager-getting-started-enable-ssh-connections.md)」を参照してください。
+ 他のタイプのセッション接続に使用される `ssm-user` アカウントではなく、Privacy Enhanced Mail (PEM) 証明書に関連付けされたマネージドノードのアカウントで接続する必要があります。例えば、Linux および macOS の EC2 インスタンスでは、デフォルトのユーザーは `ec2-user` です。各インスタンスタイプのデフォルトのユーザーを特定する方法については、「Amazon EC2 ユーザーガイド」の「[インスタンスに関する情報を取得する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connection-prereqs.html#connection-prereqs-get-info-about-instance)」を参照してください。
+ ログ記録は、ポート転送または SSH を介して接続する Session Manager セッションでは使用できません。これは、SSH が AWS CLI と Session Manager エンドポイントの間で確立された安全な TLS 接続内のすべてのセッションデータを暗号化し、Session Manager が SSH 接続のトンネルとしてのみ機能するためです。

**注記**  
セッションを開始する前に、Session Manager のセットアップ手順を完了していることを確認してください。詳細については、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。

SSH を使用してセッションを開始するには、次のコマンドを実行します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

```
ssh -i /path/my-key-pair.pem username@instance-id
```

**ヒント**  
SSH でセッションを開始する際、以下のコマンド形式を使用してローカルファイルをターゲットのマネージドノードにコピーできます。  

```
scp -i /path/my-key-pair.pem /path/ExampleFile.txt username@instance-id:~
```

**start-session** コマンドで使用できるその他のオプションについては、AWS CLI コマンドリファレンスの AWS Systems Manager のセクションの「[https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)」を参照してください。

## セッションの開始 (ポート転送)
<a name="sessions-start-port-forwarding"></a>

Session Manager ポート転送セッションを開始する場合、SSM Agent のバージョン 2.3.672.0 以降がマネージドノードにインストールされている必要があります。

**注記**  
セッションを開始する前に、Session Manager のセットアップ手順を完了していることを確認してください。詳細については、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。  
AWS CLI を使用してセッションコマンドを実行するには、ローカルマシンにも Session Manager プラグインをインストールする必要があります。詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。  
オペレーティングシステムおよびコマンドラインツールによっては、引用符の配置が異なり、エスケープ文字が必要になる場合があります。

ポート転送セッションを開始するには、CLI から次のコマンドを実行します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name AWS-StartPortForwardingSession \
    --parameters '{"portNumber":["80"], "localPortNumber":["56789"]}'
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name AWS-StartPortForwardingSession ^
    --parameters portNumber="3389",localPortNumber="56789"
```

------

`portNumber` は、セッショントラフィックをリダイレクトするマネージドノードのリモートポートです。例えば、リモートデスクトッププロトコル (RDP) を使用した Windows ノードへの接続にポート `3389` を指定する場合があります。`portNumber` パラメータを指定しない場合、Session Manager はデフォルトの値として `80` を使用します。

`localPortNumber` は、トラフィックが開始されるローカルコンピュータのポート (`56789` など) です。この値は、クライアントを使用してマネージドノードに接続する際に入力します。例えば、**localhost:56789**。

**start-session** コマンドで使用できるその他のオプションについては、AWS CLI コマンドリファレンスの AWS Systems Manager のセクションの「[https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)」を参照してください。

ポート転送セッションの詳細については、*AWS ニュースブログ*の「[AWS Systems ManagerSession Manager を使用したポート転送](https://aws.amazon.com/blogs/aws/new-port-forwarding-using-aws-system-manager-sessions-manager/)」を参照してください。

## セッションの開始 (リモートホストへのポート転送)
<a name="sessions-remote-port-forwarding"></a>

リモートホストへの Session Manager ポート転送セッションを開始するには、SSM Agent のバージョン 3.1.1374.0 以降がマネージドノードにインストールされている必要があります。リモートホストは Systems Manager によって管理される必要はありません。

**注記**  
セッションを開始する前に、Session Manager のセットアップ手順を完了していることを確認してください。詳細については、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。  
AWS CLI を使用してセッションコマンドを実行するには、ローカルマシンにも Session Manager プラグインをインストールする必要があります。詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。  
オペレーティングシステムおよびコマンドラインツールによっては、引用符の配置が異なり、エスケープ文字が必要になる場合があります。

ポート転送セッションを開始するには、AWS CLI から次のコマンドを実行します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{"host":["mydb.example.us-east-2.rds.amazonaws.com"],"portNumber":["3306"], "localPortNumber":["3306"]}'
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name AWS-StartPortForwardingSessionToRemoteHost ^
    --parameters host="mydb.example.us-east-2.rds.amazonaws.com",portNumber="3306",localPortNumber="3306"
```

------

`host` の値は、接続するリモートホストのホスト名または IP アドレスを表します。マネージドノードとリモートホスト間の一般的な接続および名前解決の要件が引き続き適用されます。

`portNumber` は、セッショントラフィックをリダイレクトするマネージドノードのリモートポートです。例えば、リモートデスクトッププロトコル (RDP) を使用した Windows ノードへの接続にポート `3389` を指定する場合があります。`portNumber` パラメータを指定しない場合、Session Manager はデフォルトの値として `80` を使用します。

`localPortNumber` は、トラフィックが開始されるローカルコンピュータのポート (`56789` など) です。この値は、クライアントを使用してマネージドノードに接続する際に入力します。例えば、**localhost:56789**。

**start-session** コマンドで使用できるその他のオプションについては、AWS CLI コマンドリファレンスの AWS Systems Manager のセクションの「[https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)」を参照してください。

### Amazon ECS タスクを使用してセッションを開始する
<a name="sessions-remote-port-forwarding-ecs-task"></a>

Session Manager は、Amazon Elastic Container Service (Amazon ECS) クラスター内のタスクによるポート転送セッションの開始をサポートします。そのためには、ECS Exec を有効にします。詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「[ECS Exec を使用して Amazon ECS コンテナをモニタリングする](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html)」を参照してください。

IAM 内のタスクロールを更新して以下のアクセス許可を含める必要もあります。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"
      }
   ]
}
```

------

Amazon ECS タスクを使用してポート転送セッションを開始するには、AWS CLI から次のコマンドを実行します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

**注記**  
`target` パラメータから < and > 記号を削除します。これらの記号は読者への説明のみを目的としています。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target ecs:<ECS_cluster_name>_<ECS_container_ID>_<container_runtime_ID> \
    --document-name AWS-StartPortForwardingSessionToRemoteHost \
    --parameters '{"host":["URL"],"portNumber":["port_number"], "localPortNumber":["port_number"]}'
```

------
#### [  Server   ]

```
aws ssm start-session ^
    --target ecs:<ECS_cluster_name>_<ECS_container_ID>_<container_runtime_ID> ^
    --document-name AWS-StartPortForwardingSessionToRemoteHost ^
    --parameters host="URL",portNumber="port_number",localPortNumber="port_number"
```

------

## セッションの開始 (対話形式と非対話形式のコマンド)
<a name="sessions-start-interactive-commands"></a>

セッションを開始する前に、Session Manager のセットアップ手順を完了していることを確認してください。詳細については、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。

AWS CLI を使用してセッションコマンドを実行するには、ローカルマシンにも Session Manager プラグインがインストールされている必要があります。詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。

インタラクティブ・コマンドセッションを開始する場合、以下のコマンドを実行します。各*リソースプレースホルダーの例*をユーザー自身の情報に置き換えます。

------
#### [ Linux & macOS ]

```
aws ssm start-session \
    --target instance-id \
    --document-name CustomCommandSessionDocument \
    --parameters '{"logpath":["/var/log/amazon/ssm/amazon-ssm-agent.log"]}'
```

------
#### [ Server  ]

```
aws ssm start-session ^
    --target instance-id ^
    --document-name CustomCommandSessionDocument ^
    --parameters logpath="/var/log/amazon/ssm/amazon-ssm-agent.log"
```

------

**start-session** コマンドで使用できるその他のオプションについては、AWS CLI コマンドリファレンスの AWS Systems Manager のセクションの「[https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-session.html)」を参照してください。

 **詳細情報**   
+  [AWS Systems ManagerSession Manager でポート転送を使用してリモートホストに接続する](https://aws.amazon.com/blogs/mt/use-port-forwarding-in-aws-systems-manager-session-manager-to-connect-to-remote-hosts/) 
+  [AWS Systems Manager を使用した Amazon EC2 インスタンスのポート転送](https://aws.amazon.com/blogs/mt/amazon-ec2-instance-port-forwarding-with-aws-systems-manager/) 
+  [Session Manager ポート転送による AWS Managed Microsoft AD リソースの管理](https://aws.amazon.com/blogs/mt/manage-aws-managed-microsoft-ad-resources-with-session-manager-port-forwarding/) 
+ *AWS ニュースブログ*の [AWS Systems ManagerSession Manager を使用したポート転送](https://aws.amazon.com/blogs/aws/new-port-forwarding-using-aws-system-manager-sessions-manager/)

# セッションを終了する
<a name="session-manager-working-with-sessions-end"></a>

AWS Systems Manager コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、アカウントで開始したセッションを終了できます。コンソールでセッションの **[終了]** ボタンを選択するか、AWS CLI を使用して [TerminateSession](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_TerminateSession.html) API アクションを呼び出すと、Session Manager はセッションを完全に終了し、Session Manager クライアントとマネージドノード上の SSM Agent の間のデータ接続を閉じます。終了したセッションを再開することはできません。

開いているセッションで 20 分間ユーザーアクティビティがない場合、アイドル状態によってタイムアウトがトリガーされます。Session Manager は `TerminateSession` を呼び出しませんが、基盤となるチャネルを閉じます。アイドルタイムアウトで終了したセッションを再開することはできません。

AWS CLI を使用する場合は `terminate-session` コマンドを、コンソールを使用する場合は **[終了]** ボタンを使用して、常に明示的にセッションを終了することをお勧めします。(**[終了]** ボタンはセッションウィンドウとメイン Session Manager コンソールページの両方にあります)。ブラウザまたはコマンドウィンドウのみを閉じると、セッションはコンソールに **[アクティブ]** として 30 日間表示されます。セッションを明示的に終了しない場合、またはセッションがタイムアウトした場合、その時点でマネージドノードで実行されていたプロセスは引き続き実行されます。

**Topics**
+ [セッションの開始 (コンソール)](#stop-sys-console)
+ [セッション (AWS CLI) を終了する](#stop-cli)

## セッションの開始 (コンソール)
<a name="stop-sys-console"></a>

AWS Systems Manager コンソールを使用して、アカウントで開始したセッションを終了できます。

**セッションを終了するには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Sessions (セッション)**] で、終了するセッションの左にあるオプションボタンを選択します。

1. [**Terminate**] を選択します。

## セッション (AWS CLI) を終了する
<a name="stop-cli"></a>

AWS CLI を使用してセッションを終了するには、次のコマンドを実行します。「*session-id*」を、ユーザー自身の情報に置き換えます。

```
aws ssm terminate-session \
    --session-id session-id
```

**terminate-session** コマンドの詳細については、AWS CLI コマンドリファレンスの「AWS Systems Manager」セクションの「[https://docs.aws.amazon.com/cli/latest/reference/ssm/terminate-session.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/terminate-session.html)」を参照してください。

# セッション履歴を表示する
<a name="session-manager-working-with-view-history"></a>

AWS Systems Manager コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、アカウント内のセッションについての詳細を表示できます。コンソールでは、次のようなセッションの詳細を表示できます。
+ セッションの ID
+ セッションを介してマネージドノードに接続したユーザー
+ マネージドノードの ID
+ セッションの開始時刻と終了時刻
+ セッションのステータス
+ セッションログの保存に指定された場所 (有効な場合)

AWS CLI を使用すると、アカウント内のセッションの一覧は表示できますが、コンソールで使用可能な追加の詳細は表示されません。

ログ作成セッション履歴の詳細については、「[セッションロギングの有効化と無効化](session-manager-logging.md)」を参照してください。

**Topics**
+ [セッション履歴の表示 (コンソール)](#view-console)
+ [セッション履歴の表示 (AWS CLI)](#view-history-cli)

## セッション履歴の表示 (コンソール)
<a name="view-console"></a>

AWS Systems Manager コンソールを使用して、アカウント内のセッションに関する詳細を表示することができます。

**セッション履歴を表示するには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Session history (セッション履歴)**] タブを選択します。

   -または-

   Session Manager のホームページが最初に開いた場合は、**[設定の指定]** をクリックしてから、**[セッション履歴]** タブをクリックします。

## セッション履歴の表示 (AWS CLI)
<a name="view-history-cli"></a>

AWS CLI を使用してアカウント内のセッションの一覧を表示するには、次のコマンドを実行します。

```
aws ssm describe-sessions \
    --state History
```

**注記**  
このコマンドは、Session Manager を使用して開始されたターゲットへの接続の結果のみを返します。リモートデスクトッププロトコル (RDP) やセキュアシェルプロトコル (SSH) など、他の手段で行われた接続は一覧表示されません。

**describe-sessions** コマンドで使用できるその他のオプションについては、AWS CLI コマンドリファレンスの AWS Systems Manager のセクションの「[https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-sessions.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-sessions.html)」を参照してください。

# 「セッションアクティビティのログ記録」
<a name="session-manager-auditing"></a>

Session Manager は、Systems Manager コンソールで現在のセッションと完了したセッションに関する情報を提供するだけでなく、AWS CloudTrail を使用して AWS アカウントでのセッションアクティビティをログに記録する機能も提供します。

CloudTrail は、Systems Manager コンソール、AWS Command Line Interface (AWS CLI)、および Systems Manager SDK を介した API 呼び出しをキャプチャします。情報は、CloudTrail コンソールで表示することも、指定した Amazon Simple Storage Service (Amazon S3) バケットに保存することもできます。アカウントのすべての CloudTrail ログに対して 1 つの Amazon S3 バケットが使用されます。詳細については、「[AWS CloudTrail による AWS Systems Manager API コールのログ記録](monitoring-cloudtrail-logs.md)」を参照してください。

**注記**  
ログファイルの繰り返し分析、履歴分析、解析的分析では、[CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html) または維持するテーブルを使用して CloudTrail ログのクエリを実行することを検討してください。詳細については、「AWS CloudTrail ユーザーガイド」の「[AWS CloudTrail ログのクエリ](https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html)」を参照してください。

## Amazon EventBridge を使用してセッションアクティビティをモニタリングする (コンソール)
<a name="session-manager-auditing-eventbridge-events"></a>

EventBridge を使用すると、AWS リソースの変更の発生を検出するルールを設定できます。組織内のユーザーがセッションを開始または終了したタイミングを検出し、例えば、そのイベントに関する通知を Amazon SNS 経由で受信するなどのルールを作成できます。

Session Manager の EventBridge のサポートは、CloudTrail で記録された API オペレーションの記録に左右されます。(CloudTrail と EventBridge の統合を使用して、ほとんどの AWS Systems Manager のイベントに応答できます)。API 呼び出しを実行しない `exit` コマンドなど、セッション内で実行されるアクションは、EventBridge では検出されません。

以下の手順では、Session Manager API イベント (**StartSession** など) が発生したときに、Amazon Simple Notification Service (Amazon SNS) を通じて通知を開始する方法の概要を示します。

**Amazon EventBridge を使用してセッションアクティビティをモニタリングするには (コンソール)**

1. 追跡する Session Manager イベントが発生したとき、通知を送信するために使用する Amazon SNS トピックを作成します。

   詳細については、[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)の「*トピックの作成*」を参照してください。

1. 追跡する Session Manager イベントのタイプの Amazon SNS ターゲットを呼び出すには、EventBridge ルールを作成します。

   ルールの作成方法に関する詳細については、Amazon EventBridge ユーザーガイドの「[イベントに反応する Amazon EventBridge ルールの作成](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)」を参照してください。

   ルールを作成するステップに従うときには、以下のように選択します。
   + [**AWS のサービス**] で、[**Systems Manager**] を選択します。
   + **[イベントタイプ]** で、**[CloudTrail 経由の AWS API 呼び出し]** を選択します。
   + [**Specific operation(s) (特定のオペレーション)**] を選択し、通知を受け取る Session Manager のコマンド (一度に 1 つずつ) を入力します。**StartSession**、**ResumeSession**、**TerminateSession** を選択できます。(EventBridge では、`Get*`、` List*`、`Describe*` コマンドはサポートされていません)。
   + **[Select a target]** (ターゲットの選択) には、**[SNS topic]** (SNS トピック) を選択してください。[**Topic (トピック)**] で、ステップ 1 で作成した Amazon SNS トピックの名前を選択します。

詳細については、*[Amazon EventBridge ユーザーガイド](https://docs.aws.amazon.com/eventbridge/latest/userguide/)*および *[Amazon Simple Notification Service 入門ガイド](https://docs.aws.amazon.com/sns/latest/gsg/)*を参照してください。

# セッションロギングの有効化と無効化
<a name="session-manager-logging"></a>

セッションロギングは、Systems Manager コンソールでの現在のセッションと完了済みのセッションに関する情報を記録します。また、AWS アカウント でのセッション中に実行されるコマンドの詳細をログに記録することもできます。セッションロギングでは、以下を実行できます。
+ アーカイブの目的でセッションログを作成し、保存する。
+ 過去 30 日間に、Session Manager を使用してマネージドノードに実行されたすべての接続の詳細を示すレポートを生成する。
+ Amazon Simple Notification Service (Amazon SNS) 通知など、AWS アカウント でのセッションロギングに関する通知を生成する。
+ AWS Lambda 関数の実行、AWS CodePipeline パイプラインの開始、または AWS Systems Manager Run Command ドキュメントの実行など、セッション中に行われたアクションの結果として、AWS リソースで別のアクションを自動的に開始する。

**重要**  
Session Manager の次の要件と制限事項に注意してください。  
Session Manager は、セッション設定に応じて、セッション中に入力したコマンドとその出力を記録します。パスワードなどの機密データがセッションログに表示されないようにするには、セッション中に機密データを入力するときに次のコマンドを使用することをお勧めします。  

  ```
  stty -echo; read passwd; stty echo;
  ```

  ```
  $Passwd = Read-Host -AsSecureString
  ```
Windows Server 2012 またはそれ以前を使用している場合、ログ内のデータが最適にフォーマットされていない可能性があります。最適なログ形式のために、Windows Server 2012 R2 以降の使用をお勧めします。
Linux または macOS のマネージドノードを使用している場合は、スクリーンユーティリティがインストールされていることを確認します。インストールされていない場合、ログデータが切り捨てられることがあります。Amazon Linux 2、AL2023、および Ubuntu Server では、スクリーンユーティリティがデフォルトでインストールされています。スクリーンを手動でインストールするには、Linux のバージョンに応じて、`sudo yum install screen` または `sudo apt-get install screen` のいずれかを実行します。
ログ記録は、ポート転送または SSH を介して接続する Session Manager セッションでは使用できません。これは、SSH が AWS CLI と Session Manager エンドポイントの間で確立された安全な TLS 接続内のすべてのセッションデータを暗号化し、Session Manager が SSH 接続のトンネルとしてのみ機能するためです。

セッションデータのログ記録に Amazon S3 または Amazon CloudWatch Logs を使用するために必要なアクセス許可の詳細については、「[Session Manager、Amazon S3、CloudWatch Logs (コンソール) の許可を持つIAM ロールの作成](getting-started-create-iam-instance-profile.md#create-iam-instance-profile-ssn-logging)」を参照してください。

Session Manager のログ記録のオプションの詳細については、次のトピックを参照してください。

**Topics**
+ [Amazon CloudWatch Logs を使用してセッションデータをストリーミングする (コンソール)](session-manager-logging-cwl-streaming.md)
+ [Amazon S3 を使用してセッションデータをログ記録する (コンソール)](session-manager-logging-s3.md)
+ [Amazon CloudWatch Logs を使用してセッションデータをログ記録する (コンソール)](session-manager-logging-cloudwatch-logs.md)
+ [ディスクへのセッションログ記録の設定](session-manager-logging-disk.md)
+ [Session Manager 一時ログファイルをディスクに保存する期間の調整](session-manager-logging-disk-retention.md)
+ [CloudWatch Logs と Amazon S3 での Session Manager ロギングの無効化](session-manager-enable-and-disable-logging.md)

# Amazon CloudWatch Logs を使用してセッションデータをストリーミングする (コンソール)
<a name="session-manager-logging-cwl-streaming"></a>

セッションデータログの連続ストリームを Amazon CloudWatch Logs に送信できます。セッションデータのストリーミングには、ユーザーがセッションで実行したコマンド、コマンドを実行したユーザーの ID、セッションデータが CloudWatch Logs にストリーミングされた時のタイムスタンプなど、重要な詳細情報が含まれます。セッションデータをストリーミングする場合、ログは JSON 形式で、既存のログソリューションとの統合に役立ちます。対話型コマンドでは、セッションデータのストリーミングはサポートされていません。

**注記**  
Windows Server のマネージドノードからセッションデータをストリーミングする場合、PowerShell 5.1 以降がインストールされている必要があります。デフォルトでは、Windows Server 2016 以降には必要な PowerShell バージョンがインストールされています。ただし、Windows Server 2012 と 2012 R2 には、デフォルトで必要な PowerShell バージョンがインストールされていません。Windows Server 2012 または 2012 R2 マネージドノードの PowerShell をまだ更新していない場合、Run Command を使用して更新できます。Run Command を使用した PowerShell の更新方法については、「[Run Command を使用して PowerShell を更新する](run-command-tutorial-update-software.md#rc-console-pwshexample)」を参照してください。

**重要**  
Windows Server のマネージドノードに **PowerShell トランスクリプション**ポリシー設定が構成されている場合、セッションデータをストリーミングができません。

**Amazon CloudWatch Logs を使用してセッションデータをストリーミングするには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Preferences (設定)**] タブを選択してから、[**Edit (編集)**] を選択します。

1. **CloudWatch のログ記録で ** [**有効にする**] の横にあるチェックボックスをオンにします。

1. [**Stream session logs (セッションログのストリーム)**] オプションを選択します。

1. (推奨) [**Allow only encrypted CloudWatch log groups (暗号化された CloudWatch ロググループのみを許可する)**] の横にあるチェックボックスをオンにします。このオプションが有効になっている場合、ログデータはロググループに指定されたサーバー側の暗号化キーを使用して暗号化されます。CloudWatch Logs に送信されるログデータを暗号化しない場合は、このチェックボックスをオフにします。ロググループで暗号化が有効になっていない場合も、このチェックボックスをオフにする必要があります。

1. [**CloudWatch Logs**] の場合、セッションログのアップロード先である AWS アカウント の既存の CloudWatch Logs ロググループを指定するには、次のいずれかを選択します。
   + セッションログデータを保存するためにアカウントにすでに作成されているテキストボックスにロググループの名前を入力します。
   + **ロググループを参照**: セッションログデータを保存するためにアカウントですでに作成されているロググループを選択します。

1. **[保存]** を選択します。

# Amazon S3 を使用してセッションデータをログ記録する (コンソール)
<a name="session-manager-logging-s3"></a>

デバッグおよびトラブルシューティングの目的で、指定した Amazon Simple Storage Service (Amazon S3) バケットにセッションログデータを保存することができます。デフォルトのオプションでは、ログは暗号化された Amazon S3 バケットに送信されます。暗号化は、AWS KMS key または Amazon S3 サーバー側暗号化 (SSE) キー (AES-256) のいずれかで、バケットに指定されたキーを使用して実行されます。

**重要**  
仮想ホスティング形式のバケットを Secure Sockets Layer (SSL) で使用する場合、SSL ワイルドカード証明書はピリオドを含まないバケットにのみ一致します。この問題を回避するには、HTTP を使用するか、または独自の証明書検証ロジックを記述します。仮想ホスティング形式のバケットを使用するときは、バケット名にピリオド (「.」) を使用しないことをお勧めします。

**Amazon S3 バケットの暗号化**  
暗号化を使用して Amazon S3 バケットにログを送信するには、バケット上で暗号化を有効にする必要があります。S3 バケットの暗号化の詳細については、「[Amazon S3 バケット用の Amazon S3 デフォルト暗号化](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)」を参照してください。

**カスタマー管理のキー**  
ユーザー自身が管理する KMS キーを使用してバケットを暗号化する場合、インスタンスにアタッチされた IAM インスタンスプロファイルには、キーを読み取るための明示的なアクセス許可が必要です。AWS マネージドキーを使用している場合は、インスタンスにこの明示的なアクセス許可は必要ありません。インスタンスプロファイルに CMK 使用のためのアクセスを提供する方法の詳細については、*AWS Key Management Service デベロッパーガイド*の[キーユーザーにキーの使用を許可する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-users)を参照してください。

Amazon S3 バケットにセッションログを保存するように Session Manager を設定するには、次の手順に従います。

**注記**  
AWS CLI を使用して、セッションデータ送信先の Amazon S3 バケットを指定したり変更したりすることもできます。詳細については、[Session Manager 設定の更新 (コマンドライン)](getting-started-configure-preferences-cli.md) を参照してください。

**Amazon S3 を使用してセッションデータをログに記録するには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Preferences (設定)**] タブを選択してから、[**Edit (編集)**] を選択します。

1. [**S3 ロギング**] で [**有効にする**] チェックボックスをオンにします。

1. (推奨) [**Allow only encrypted S3 buckets (暗号化された S3 バケットのみを許可する)**] の横にあるチェックボックスをオンにします。このオプションが有効になっている場合、ログデータはバケットに指定されたサーバー側の暗号化キーを使用して暗号化されます。Amazon S3 に送信されるログデータを暗号化しない場合は、このチェックボックスをオフにします。S3 バケットで暗号化が有効になっていない場合も、このチェックボックスをオフにする必要があります。

1. [**S3 bucket name (S3 バケット名)**] には、次のいずれかを選択します。
**注記**  
仮想ホスティング形式のバケットを使用するときは、バケット名にピリオド (「.」) を使用しないことをお勧めします。Amazon S3 バケット命名規則の詳細については、*Amazon Simple Storage Service ユーザーガイド*の「[バケットの制約と制限](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules)」を参照してください。
   + [**Choose a bucket name from the list (リストからバケット名を選択)**]: アカウントに既に作成された Amazon S3 バケットを選択してセッションログデータを保存します。
   + [**Enter a bucket name in the text box (テキストボックスにバケット名を入力)**]: セッションログデータを保存するためにアカウントに既に作成されている Amazon S3 バケットの名前を入力します。

1. (オプション) [**S3 key prefix (S3 キープレフィックス)**] には、選択したバケットにログを保存する既存のフォルダまたは新しいフォルダの名前を入力します。

1. **[保存]** を選択します。

Amazon S3 および Amazon S3 バケットの使用の詳細については、*[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)*および *[Amazon Simple Storage Service ユーザーガイド](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)*を参照してください。

# Amazon CloudWatch Logs を使用してセッションデータをログ記録する (コンソール)
<a name="session-manager-logging-cloudwatch-logs"></a>

Amazon CloudWatch Logs を使用すると、さまざまな AWS のサービス からのログファイルについて、モニタリング、保存、アクセスを行うことができます。デバッグおよびトラブルシューティングの目的で、セッションログデータを CloudWatch Logs ロググループに送信できます。デフォルトのオプションでは、KMS キーを使用してログデータを暗号化して送信するように設定されていますが、暗号化の有無にかかわらずデータをロググループに送信できます。

セッションの最後にセッションログデータを CloudWatch Logs ロググループに送信するように AWS Systems Manager Session Manager を設定するには、以下の手順を実行します。

**注記**  
AWS CLI を使用して、セッションデータの送信先の CloudWatch Logs ロググループを指定したり変更したりすることもできます。詳細については、[Session Manager 設定の更新 (コマンドライン)](getting-started-configure-preferences-cli.md) を参照してください。

**Amazon CloudWatch Logs を使用してセッションデータをログ記録するには (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. [**Preferences (設定)**] タブを選択してから、[**Edit (編集)**] を選択します。

1. **CloudWatch のログ記録で ** [**有効にする**] の横にあるチェックボックスをオンにします。

1. [**セッションログをアップロード**] オプションを選択します。

1. (推奨) [**Allow only encrypted CloudWatch log groups (暗号化された CloudWatch ロググループのみを許可する)**] の横にあるチェックボックスをオンにします。このオプションが有効になっている場合、ログデータはロググループに指定されたサーバー側の暗号化キーを使用して暗号化されます。CloudWatch Logs に送信されるログデータを暗号化しない場合は、このチェックボックスをオフにします。ロググループで暗号化が有効になっていない場合も、このチェックボックスをオフにする必要があります。

1. [**CloudWatch Logs**] の場合、セッションログのアップロード先である AWS アカウント の既存の CloudWatch Logs ロググループを指定するには、次のいずれかを選択します。
   + [**Choose a log group from the list (リストからロググループを選択する)**]: アカウントに既に作成されたロググループを選択してセッションログデータを保存します。
   + [**Enter a log group name in the text box (テキストボックスにロググループ名を入力)**]: セッションログデータを保存するためにアカウントにすでに作成されているロググループの名前を入力します。

1. [**Save**] を選択します。

CloudWatch Logs の使用の詳細については、*[Amazon CloudWatch Logs ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)*を参照してください。

# ディスクへのセッションログ記録の設定
<a name="session-manager-logging-disk"></a>

CloudWatch または Amazon S3 への Session Manager ログ記録を有効にすると、セッション中に実行されたすべてのコマンド (およびそれらのコマンドの出力結果) が、ターゲットインスタンスのディスク上の一時ファイルにログ記録されます。一時ファイルの名前は `ipcTempFile.log` です。

`ipcTempFile.log` は、SSM Agent 設定ファイルの `SessionLogsDestination` パラメータによって制御されます。このパラメータには、次の値を指定できます。
+ **disk**: このパラメータを指定し、CloudWatch または Amazon S3 へのセッションログ記録が*有効*になっている場合、SSM Agent は `ipcTempFile.log` という一時ログファイルを作成し、セッションコマンドと出力をディスクにログ記録します。Session Manager は、ログ記録設定に応じて、セッション中またはセッション後にこのログを CloudWatch または S3 にアップロードします。その後、このログは、SSM Agent の `SessionLogsRetentionDurationHours` 設定パラメータに指定された期間に基づいて削除されます。

  このパラメータを指定し、CloudWatch と Amazon S3 へのセッションログ記録が*無効*になっている場合でも、SSM Agent はコマンド履歴と出力を `ipcTempFile.log` ファイルにログ記録します。ファイルは、SSM Agent の `SessionLogsRetentionDurationHours` 設定パラメータに指定された期間に基づいて削除されます。
+ **none**: このパラメータを指定し、CloudWatch または Amazon S3 へのセッションログ記録が*有効*になっている場合、ディスクへのログ記録は、`disk` パラメータを指定した場合とまったく同じように機能します。CloudWatch または Amazon S3 へのセッションログ記録が有効になっている場合、SSM Agent は一時ファイルを必要とします。

  このパラメータを指定し、CloudWatch または Amazon S3 へのセッションログ記録が*無効*になっている場合、SSM Agent は `ipcTempFile.log` ファイルを作成しません。

セッション開始時のディスクへの `ipcTempFile.log` 一時ログファイルの作成を有効または無効にするには、次の手順を使用します。

**ディスクへの Session Manager 一時ログファイルの作成を有効または無効にする手順**

1. インスタンスに SSM Agent をインストールするか、バージョン 3.2.2086 以降にアップグレードします。エージェントのバージョン番号を確認する方法については、「[SSM Agent バージョン番号の確認](ssm-agent-get-version.md)」を参照してください。エージェントを手動でインストールする方法については、以下のセクションでご使用のオペレーティングシステムに対応した手順を確認してください。
   + [Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-linux.md)
   + [macOS 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-macos.md)
   + [Windows Server 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-windows.md)

1. インスタンスに接続し、以下の場所で `amazon-ssm-agent.json` ファイルを見つけます。
   + **Linux**: /etc/amazon/ssm/
   + **macOS**: /opt/aws/ssm/
   + **Windows Server**: C:\$1Program Files\$1Amazon\$1SSM

   `amazon-ssm-agent.json` ファイルが存在しない場合は、`amazon-ssm-agent.json.template` のコンテンツを同じディレクトリ内の新しいファイルにコピーします。この新しいファイルに `amazon-ssm-agent.json` という名前を付けます。

1. `none` パラメータには、`disk` または `SessionLogsDestination` のいずれかを指定します。変更内容を保存します。

1. SSM Agent を[再起動](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-status-and-restart.html)します。

`SessionLogsDestination` パラメータに `disk` を指定した場合は、新しいセッションを開始して以下の場所で `ipcTempFile.log` を見つけることで、SSM Agent が一時ログファイルを作成することを確認できます。
+ **Linux**: /var/lib/amazon/ssm/*ターゲット ID*/session/orchestration/*セッション ID*/Standard\$1Stream/ipcTempFile.log
+ **macOS**: /opt/aws/ssm/data/*ターゲット ID*/session/orchestration/*セッション ID*/Standard\$1Stream/ipcTempFile.log
+ **Windows Server**: C:\$1ProgramData\$1Amazon\$1SSM\$1InstanceData\$1*ターゲット ID*\$1session\$1orchestration\$1*セッション ID*\$1Standard\$1Stream\$1ipcTempFile.log

**注記**  
デフォルトでは、一時ログファイルはインスタンスに 14 日間保存されます。

複数のインスタンスで `SessionLogsDestination` パラメータを更新する場合は、新しい設定を指定する SSM ドキュメントを作成することをお勧めします。その後、Systems Manager の Run Command を使用してインスタンスに変更を実装できます。詳細については、「[Writing your own AWS Systems Manager documents (ブログ)](https://aws.amazon.com/blogs/mt/writing-your-own-aws-systems-manager-documents/)」および「[マネージドノードでのコマンドの実行](running-commands.md)」を参照してください。

# Session Manager 一時ログファイルをディスクに保存する期間の調整
<a name="session-manager-logging-disk-retention"></a>

CloudWatch または Amazon S3 への Session Manager ログ記録を有効にすると、セッション中に実行されたすべてのコマンド (およびそれらのコマンドの出力結果) が、ターゲットインスタンスのディスク上の一時ファイルにログ記録されます。一時ファイルの名前は `ipcTempFile.log` です。セッション中、またはセッションの完了後に、Session Manager はこの一時ログを CloudWatch または S3 にアップロードします。その後、SSM Agent の `SessionLogsRetentionDurationHours` 設定パラメータで指定された期間に基づいて一時ログが削除されます。デフォルトでは、一時ログファイルはインスタンスの次の場所に 14 日間保存されます。
+ **Linux**: /var/lib/amazon/ssm/*ターゲット ID*/session/orchestration/*セッション ID*/Standard\$1Stream/ipcTempFile.log
+ **macOS**: /opt/aws/ssm/data/*ターゲット ID*/session/orchestration/*セッション ID*/Standard\$1Stream/ipcTempFile.log
+ **Windows Server**: C:\$1ProgramData\$1Amazon\$1SSM\$1InstanceData\$1*ターゲット ID*\$1session\$1orchestration\$1*セッション ID*\$1Standard\$1Stream\$1ipcTempFile.log

Session Manager 一時ログファイルがディスクに保存される期間を調整するには、次の手順を使用します。

**ディスクに `ipcTempFile.log` ファイルを保存する期間を調整する手順**

1. インスタンスに接続し、以下の場所で `amazon-ssm-agent.json` ファイルを見つけます。
   + **Linux**: /etc/amazon/ssm/
   + **macOS**: /opt/aws/ssm/
   + **Windows Server**: C:\$1Program Files\$1Amazon\$1SSM

   `amazon-ssm-agent.json` ファイルが存在しない場合は、`amazon-ssm-agent.json.template` のコンテンツを同じディレクトリ内の新しいファイルにコピーします。この新しいファイルに `amazon-ssm-agent.json` という名前を付けます。

1. `SessionLogsRetentionDurationHours` の値を目的の時間数に変更します。`SessionLogsRetentionDurationHours` を 0 に設定した場合、一時ログファイルはセッション中に作成され、セッションの完了時に削除されます。この設定により、セッション終了後にログファイルが保持されないようにすることができます。

1. 変更内容を保存します。

1. SSM Agent を[再起動](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-status-and-restart.html)します。

# CloudWatch Logs と Amazon S3 での Session Manager ロギングの無効化
<a name="session-manager-enable-and-disable-logging"></a>

アカウントでセッションロギングを無効にするには、Systems Manager コンソールまたは AWS CLI を使用できます。

**セッションロギングを無効にする (コンソール)**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Session Manager]** を選択します。

1. **[設定]** タブを選択してから、**[編集]** を選択します。

1. CloudWatch ロギングを無効にするには、**[CloudWatch ロギング]** セクションで、**[有効化]** チェックボックスをオフにします。

1. S3 ロギングを無効にするには、**[S3 ロギング]** セクションで、**[有効化]** チェックボックスをオフにします。

1. **[保存]** を選択します。

**セッションロギングを無効にする (AWS CLI)**  
AWS CLI を使用してセッションロギングを無効にするには、「[Session Manager 設定の更新 (コマンドライン)](getting-started-configure-preferences-cli.md)」の手順を実行してください。

 JSON ファイルで、`s3BucketName` と `cloudWatchLogGroupName` の入力には値が含まれないようにしてください。例えば、次のようになります。

```
"inputs": {
        "s3BucketName": "",
        ...
        "cloudWatchLogGroupName": "",
        ...
    }
```

代わりに、`S3*` および `cloudWatch*` のすべての入力を JSON ファイルから削除することで、ロギングを無効にすることもできます。

**注記**  
設定によっては、CloudWatch または S3 を無効にした後も、SSM Agent によって一時ログファイルがディスクに生成される場合があります。ディスクへのロギングを無効にする方法については、「[ディスクへのセッションログ記録の設定](session-manager-logging-disk.md)」を参照してください。

# セッションドキュメントスキーマ
<a name="session-manager-schema"></a>

次の情報では、セッションドキュメントのスキーマ要素について説明します。AWS Systems Manager Session Manager では、セッションドキュメントを使用して、標準セッション、ポート転送セッション、対話型コマンドを実行するセッションなど、開始するセッションの種類を決定します。

 [schemaVersion](#version)   
セッションドキュメントのスキーマバージョン。セッションドキュメントはバージョン 1.0 のみがサポートされています。  
型: 文字列  
必須: はい

 [description](#descript)   
セッションドキュメントついてに指定する説明。たとえば、「Session Manager でポート転送セッションを開始するドキュメント」などです。  
タイプ: 文字列。  
必須: いいえ

 [sessionType](#type)   
セッションドキュメントを確立するために使用されるセッションの種類。  
型: 文字列  
必須: はい  
有効な値: `InteractiveCommands` \$1 `NonInteractiveCommands` \$1 `Port` \$1 `Standard_Stream`

 [inputs](#in)   
このセッションドキュメントを使用して確立されたセッションに使用するセッション設定。`Standard_Stream` セッションの作成に使用されるセッションドキュメントの場合、この要素は必要です。  
型: StringMap  
必須: いいえ    
 [s3BucketName](#bucket)   
セッションの最後にセッションログを送信する宛先となる Amazon Simple Storage Service (Amazon S3) バケット。  
型: 文字列  
必須: いいえ  
 [s3KeyPrefix](#prefix)   
`s3BucketName` 入力で指定した Amazon S3 バケットにログを送信するときに使用するプレフィックス。Amazon S3 に保存されたオブジェクトで共有プレフィックスを使用する方法の詳細については、*Amazon Simple Storage Service ユーザーガイド*の「[S3 バケットのフォルダの使用方法](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html)」を参照してください。  
タイプ: 文字列。  
必須: いいえ  
 [s3EncryptionEnabled](#s3Encrypt)   
`true` に設定すると、 `s3BucketName` 入力で指定した Amazon S3 バケットは暗号化する必要があります。  
タイプ: ブール値  
必須: はい  
 [cloudWatchLogGroupName](#logGroup)   
セッションの最後にセッションログを送信する宛先となる Amazon CloudWatch Logs (CloudWatch Logs ) グループの名前。  
型: 文字列  
必須: いいえ  
 [cloudWatchEncryptionEnabled](#cwEncrypt)   
`true` に設定すると、 `cloudWatchLogGroupName` 入力で指定したロググループは暗号化する必要があります。  
タイプ: ブール値  
必須: はい  
 [cloudWatchStreamingEnabled](#cwStream)   
`true` に設定すると、セッションデータログの連続ストリームが、`cloudWatchLogGroupName` 入力で指定したロググループに送信されます。`false` に設定した場合、セッションログは、セッションの終了時に `cloudWatchLogGroupName` 入力で指定したロググループに送信されます。  
タイプ: ブール値  
必須: はい  
 [kmsKeyId](#kms)   
ローカルクライアントマシンと接続先の Amazon Elastic Compute Cloud (Amazon EC2) マネージドノード間のデータをさらに暗号化するために使用する AWS KMS key の ID。  
タイプ: 文字列。  
必須: いいえ  
 [runAsEnabled](#run)   
`true` に設定した場合、 `runAsDefaultUser` 入力で接続先のマネージドノードに存在するユーザーアカウントを指定する必要があります。そうしないと、セッションが開始されません。デフォルトでは、AWS Systems Manager SSM Agent によって作成された `ssm-user` アカウントを使用してセッションが開始されます。Run As 機能は Linux および macOS のマネージドノードに接続する場合のみサポートされます。  
型: ブール値  
必須: はい  
 [runAsDefaultUser](#runUser)   
`runAsEnabled` 入力が `true` に設定されている場合、Linux および macOS のマネージドノードでセッションを開始するユーザーアカウント名。この入力に指定するユーザーアカウントは接続先のマネージドノードに存在する必要があります。存在しない場合、セッションが開始されません。  
タイプ: 文字列。  
必須: いいえ  
 [idleSessionTimeout](#timeout)   
セッションが終了する前に許可する非アクティブの時間。この入力は分単位で測定されます。  
型: 文字列  
有効な値: 1～60  
必須: いいえ  
 [maxSessionDuration](#maxDuration)   
セッションが終了する前に許可する最大時間。この入力は分単位で測定されます。  
タイプ: 文字列。  
有効な値: 1～1440  
必須: いいえ  
 [shellProfile](#shell)   
シェルプリファレンス、環境変数、作業ディレクトリ、セッション開始時の複数のコマンドの実行など、セッション内で適用する、オペレーティングシステムごとに指定する設定。  
型: StringMap  
必須: いいえ    
 [windows](#win)   
Windows Server のマネージドノード上のセッションに指定するシェルプリファレンス、環境変数、作業ディレクトリ、コマンド。  
タイプ: 文字列  
必須: いいえ  
 [linux](#lin)   
Linux および macOS のマネージドノード上のセッションに指定するシェルプリファレンス、環境変数、作業ディレクトリ、コマンド。  
タイプ: 文字列  
必須: いいえ

 [parameters](#param)   
ドキュメントが受け入れるパラメータを定義するオブジェクト。ドキュメントパラメータの定義の詳細については、[最上位のデータ要素](documents-syntax-data-elements-parameters.md#top-level) の「**パラメータ**」を参照してください。頻繁に参照するパラメータの場合は、そのパラメータを Systems Manager Parameter Store に保存してそこを参照することをお勧めします。`String` および `StringList` Parameter Store パラメータは、ドキュメントの本セクションで参照できます。`SecureString`Parameter Store パラメータは、ドキュメントの本セクションでは参照できません。次の形式を使用して、Parameter Store パラメータを参照できます。  

```
{{ssm:parameter-name}}
```
Parameter Store の詳細については、「[AWS Systems Manager Parameter Store](systems-manager-parameter-store.md)」を参照してください。  
型: StringMap  
必須: いいえ

 [properties](#props)   
指定した値を持つオブジェクトで、 `StartSession` API オペレーションで使用されるもの。  
`InteractiveCommands` セッションに使用されるセッションドキュメントの場合、properties オブジェクトには、指定したオペレーティングシステムで実行するコマンドが含まれます。また、`runAsElevated` ブール値プロパティを使用して、コマンドを `root` として実行するかどうかを決定することもできます。詳細については、「[セッションでのコマンドへのアクセスを制限する](session-manager-restrict-command-access.md)」を参照してください。  
`Port` セッションに使用されるセッションドキュメントの場合、properties オブジェクトには、トラフィックのリダイレクト先のポート番号が含まれます。例については、本トピックで後ほど取り扱う `Port` タイプのセッションドキュメントの例を参照してください。  
型: StringMap  
必須: いいえ

`Standard_Stream` タイプのセッションドキュメントの例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Document to hold regional settings for Session Manager
sessionType: Standard_Stream
inputs:
  s3BucketName: ''
  s3KeyPrefix: ''
  s3EncryptionEnabled: true
  cloudWatchLogGroupName: ''
  cloudWatchEncryptionEnabled: true
  cloudWatchStreamingEnabled: true
  kmsKeyId: ''
  runAsEnabled: true
  runAsDefaultUser: ''
  idleSessionTimeout: '20'
  maxSessionDuration: '60'
  shellProfile:
    windows: ''
    linux: ''
```

------
#### [ JSON ]

```
{
    "schemaVersion": "1.0",
    "description": "Document to hold regional settings for Session Manager",
    "sessionType": "Standard_Stream",
    "inputs": {
        "s3BucketName": "",
        "s3KeyPrefix": "",
        "s3EncryptionEnabled": true,
        "cloudWatchLogGroupName": "",
        "cloudWatchEncryptionEnabled": true,
        "cloudWatchStreamingEnabled": true,
        "kmsKeyId": "",
        "runAsEnabled": true,
        "runAsDefaultUser": "",
        "idleSessionTimeout": "20",
        "maxSessionDuration": "60",
        "shellProfile": {
            "windows": "date",
            "linux": "pwd;ls"
        }
    }
}
```

------

`InteractiveCommands` タイプのセッションドキュメントの例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Document to view a log file on a Linux instance
sessionType: InteractiveCommands
parameters:
  logpath:
    type: String
    description: The log file path to read.
    default: "/var/log/amazon/ssm/amazon-ssm-agent.log"
    allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$"
properties:
  linux:
    commands: "tail -f {{ logpath }}"
    runAsElevated: true
```

------
#### [ JSON ]

```
{
    "schemaVersion": "1.0",
    "description": "Document to view a log file on a Linux instance",
    "sessionType": "InteractiveCommands",
    "parameters": {
        "logpath": {
            "type": "String",
            "description": "The log file path to read.",
            "default": "/var/log/amazon/ssm/amazon-ssm-agent.log",
            "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$"
        }
    },
    "properties": {
        "linux": {
            "commands": "tail -f {{ logpath }}",
            "runAsElevated": true
        }
    }
}
```

------

`Port` タイプのセッションドキュメントの例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Document to open given port connection over Session Manager
sessionType: Port
parameters:
  paramExample:
    type: string
    description: document parameter
properties:
  portNumber: anyPortNumber
```

------
#### [ JSON ]

```
{
    "schemaVersion": "1.0",
    "description": "Document to open given port connection over Session Manager",
    "sessionType": "Port",
    "parameters": {
        "paramExample": {
            "type": "string",
            "description": "document parameter"
        }
    },
    "properties": {
        "portNumber": "anyPortNumber"
    }
}
```

------

特殊文字を使用したセッションドキュメントの例

------
#### [ YAML ]

```
---
schemaVersion: '1.0'
description: Example document with quotation marks
sessionType: InteractiveCommands
parameters:
  Test:
    type: String
    description: Test Input
    maxChars: 32
properties:
  windows:
    commands: |
        $Test = '{{ Test }}'
        $myVariable = \"Computer name is $env:COMPUTERNAME\"
        Write-Host "Test variable: $myVariable`.`nInput parameter: $Test"
    runAsElevated: false
```

------
#### [ JSON ]

```
{
   "schemaVersion":"1.0",
   "description":"Test document with quotation marks",
   "sessionType":"InteractiveCommands",
   "parameters":{
      "Test":{
         "type":"String",
         "description":"Test Input",
         "maxChars":32
      }
   },
   "properties":{
      "windows":{
         "commands":[
            "$Test = '{{ Test }}'",
            "$myVariable = \\\"Computer name is $env:COMPUTERNAME\\\"",
            "Write-Host \"Test variable: $myVariable`.`nInput parameter: $Test\""
         ],
         "runAsElevated":false
      }
   }
}
```

------

# Session Manager のトラブルシューティング
<a name="session-manager-troubleshooting"></a>

以下の情報を参考にして、AWS Systems Manager Session Manager に関する問題のトラブルシューティングを行います。

**Topics**
+ [TerminateSession オペレーションを呼び出すときの AccessDeniedException](#session-manager-troubleshooting-access-denied-exception)
+ [ドキュメントプロセスが予期せず失敗しました: ドキュメントワーカーがタイムアウトしました](#session-manager-troubleshooting-document-worker-timed-out)
+ [Session Manager が Amazon EC2 コンソールから接続できない](#session-manager-troubleshooting-EC2-console)
+ [セッションを開始するアクセス許可がありません](#session-manager-troubleshooting-start-permissions)
+ [SSM Agent がオンラインになっていません](#session-manager-troubleshooting-agent-not-online)
+ [セッション設定を変更するためのアクセス許可がありません](#session-manager-troubleshooting-preferences-permissions)
+ [Session Manager が使用できない、または使用に設定されていないマネージドノード。](#session-manager-troubleshooting-instances)
+ [Session Manager プラグインが見つからない](#plugin-not-found)
+ [Session Manager プラグインがコマンドラインパスに自動的に追加されませんでした (Windows)](#windows-plugin-env-var-not-set)
+ [Session Manager プラグインが応答しなくなる](#plugin-unresponsive)
+ [TargetNotConnected](#ssh-target-not-connected)
+ [セッション開始後に空白の画面が表示される](#session-manager-troubleshooting-start-blank-screen)
+ [長時間実行しているセッション中にマネージドノードが応答しなくなる](#session-manager-troubleshooting-log-retention)
+ [StartSession オペレーションを呼び出すときにエラーが発生しました (InvalidDocument)](#session-manager-troubleshooting-invalid-document)

## TerminateSession オペレーションを呼び出すときの AccessDeniedException
<a name="session-manager-troubleshooting-access-denied-exception"></a>

**問題**: セッションを終了しようとすると、Systems Manager が次のエラーを返します。

```
An error occurred (AccessDeniedException) when calling the TerminateSession operation: 
User: <user_arn> is not authorized to perform: ssm:TerminateSession on resource: 
<ssm_session_arn> because no identity-based policy allows the ssm:TerminateSession action.
```

**ソリューション A: [最新バージョンの Session Manager プラグイン](https://docs.aws.amazon.com/systems-manager/latest/userguide/plugin-version-history.html)がノードにインストールされていることを確認します。**

ターミナルに以下のコマンドを入力して、Enter キーを押します。

```
session-manager-plugin --version
```

**ソリューション B: プラグインの最新バージョンをインストールまたは再インストールします。**

詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。

**ソリューション C: ノードへの接続の再確立を試みます。**

ノードがリクエストに応答していることを確認します。セッションを再確立してみてください。または、必要に応じて Amazon EC2 コンソールを開き、インスタンスのステータスが実行中であることを確認します。

## ドキュメントプロセスが予期せず失敗しました: ドキュメントワーカーがタイムアウトしました
<a name="session-manager-troubleshooting-document-worker-timed-out"></a>

**問題**: Linux ホストへのセッションを開始すると、Systems Manager が次のエラーを返します。

```
document process failed unexpectedly: document worker timed out, 
check [ssm-document-worker]/[ssm-session-worker] log for crash reason
```

「[SSM Agent ログの表示](ssm-agent-logs.md)」で説明されているように SSM Agent ログ記録を設定している場合、デバッグログで詳細を確認できます。この問題では、Session Manager に次のログエントリが表示されます。

```
failed to create channel: too many open files
```

通常、このエラーは、実行中の Session Manager ワーカープロセスが多すぎて、基盤となるオペレーティングシステムが制限に達したことを示します。この問題を解決するには、2 つのオプションがあります。

**解決策 A: オペレーティングシステムファイルの通知制限を増やす**

制限は、別の Linux ホストから次のコマンドを実行することによって増やすことができます。このコマンドは Systems Manager Run Command を使用します。指定した値によって `max_user_instances` が 8192 に増加します。この値はデフォルト値の 128 よりも大幅に高くなりますが、ホストリソースに負荷がかかることはありません。

```
aws ssm send-command --document-name AWS-RunShellScript \
--instance-id i-02573cafcfEXAMPLE  --parameters \
"commands=sudo sysctl fs.inotify.max_user_instances=8192"
```

**解決策 B: ターゲットホストで Session Manager が使用するファイル通知を減らす **

別の Linux ホストから次のコマンドを実行して、ターゲットホストで実行しているセッションを一覧表示します。

```
aws ssm describe-sessions --state Active --filters key=Target,value=i-02573cafcfEXAMPLE
```

コマンド出力を確認して、不要になったセッションを特定します。これらのセッションは、別の Linux ホストから次のコマンドを実行することによって終了できます。

```
aws ssm terminate-session —session-id session ID
```

リモートサーバーで実行しているセッションがなくなったら、別の Linux ホストから次のコマンドを実行して追加のリソースを解放できます (オプション)。このコマンドは、リモートホストで実行しているすべての Session Manager プロセスを終了するので、その結果、リモートホストへのすべてのセッションが終了します。このコマンドを実行する前に、保持すべき進行中のセッションがないことを確認してください。

```
aws ssm send-command --document-name AWS-RunShellScript \
            --instance-id i-02573cafcfEXAMPLE --parameters \
'{"commands":["sudo kill $(ps aux | grep ssm-session-worker | grep -v grep | awk '"'"'{print $2}'"'"')"]}'
```

## Session Manager が Amazon EC2 コンソールから接続できない
<a name="session-manager-troubleshooting-EC2-console"></a>

**問題**: 新しいインスタンスを作成した後、Amazon Elastic Compute Cloud (Amazon EC2) コンソールの **[接続]** ボタン > **[セッションマネージャー]** タブが表示されません。

**解決策 A: インスタンスプロファイルを作成する**: (EC2 コンソールの **[セッションマネージャー]** タブの情報の指示に従って) まだ作成していない場合は、Quick Setup を使用して AWS Identity and Access Management (IAM) インスタンスプロファイルを作成します。Quick Setup は AWS Systems Manager のツールです。

Session Manager がインスタンスに接続するには IAM インスタンスプロファイルが必要です。Quick Setup を使用して [ホスト管理設定](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-host-management.html)を作成することで、インスタンスプロファイルを作成してインスタンスに割り当てることができます。ホスト管理設定により、必要なアクセス権限を持つインスタンスプロファイルが作成され、インスタンスに割り当てられます。ホスト管理設定では、他の Systems Manager ツールも有効にし、それらのツールを実行するための IAM ロールを作成します。Quick Setup またはホスト管理設定によって有効になっているツールの使用料は発生しません。[Quick Setup を開きホスト管理設定を開いて作成します](https://console.aws.amazon.com/systems-manager/quick-setup/create-configuration&configurationType=SSMHostMgmt)。

**重要**  
ホスト管理設定を作成した後、Amazon EC2 が変更を登録し、**[セッションマネージャ]** タブを更新するまでに数分かかる場合があります。2 分経ってもタブに **[接続]** ボタンが表示されない場合は、インスタンスを再起動します。再起動しても接続するオプションが表示されない場合は、[[Quick Setup]](https://console.aws.amazon.com/systems-manager/quick-setup/create-configuration&configurationType=SSMHostMgmt) を開き、ホスト管理設定が 1 つだけであることを確認します。2 つある場合は、古いほうの設定を削除して数分待ってください。

ホスト管理設定を作成した後も接続できない場合、または SSM Agent に関するエラーなどのエラーが表示される場合は、次のいずれかの解決策を参照してください。
+  [解決策 B: エラーは発生しないが、依然として接続できない](#session-manager-troubleshooting-EC2-console-no-error) 
+  [解決策 C: SSM Agent が見つからないことに関するエラー](#session-manager-troubleshooting-EC2-console-no-agent) 

### 解決策 B: エラーは発生しないが、依然として接続できない
<a name="session-manager-troubleshooting-EC2-console-no-error"></a>

ホスト管理設定を作成し、数分間待ってから接続を試行しても、依然として接続できない場合は、ホスト管理設定をインスタンスに手動で適用する必要がある場合があります。次の手順を使用して、Quick Setup ホスト管理設定を更新し、変更をインスタンスに適用します。

**Quick Setup を使用してホスト管理設定を更新するには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[Quick Setup]** を選択します。

1. **[設定]** リストで、作成した **[ホスト管理]** 設定を選択します。

1. **[アクション]**、**[設定を編集]** の順に選択します。

1. **[ターゲット]** セクションのほぼ最下部にある **[インスタンスをどのようにターゲットにするかを選択]** で、**[手動]** を選択します。

1. **[インスタンス]** セクションで、作成したインスタンスを選択します。

1. **[更新]** を選択します。

EC2 が **[セッションマネージャー]** タブを更新するまで数分待ちます。それでも接続できない場合、またはエラーが表示される場合は、この問題の他の解決策を確認してください。

### 解決策 C: SSM Agent が見つからないことに関するエラー
<a name="session-manager-troubleshooting-EC2-console-no-agent"></a>

Quick Setup を使用してホスト管理設定を作成できなかった場合、または SSM Agent がインストールされていないことに関するエラーが表示される場合は、インスタンスに SSM Agent を手動でインストールする必要がある場合があります。SSM Agent は、Systems Manager が Session Manager を使用してインスタンスに接続できるようにする Amazon のソフトウェアです。SSM Agent は、ほとんどの Amazon マシンイメージ (AMI) にデフォルトでインストールされます。インスタンスが非標準 AMI または古い AMI で作成された場合は、エージェントを手動でインストールしなければならない場合があります。SSM Agent のインストールの手順については、ご使用のインスタンスのオペレーティングシステムに対応する次のトピックを参照してください。
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-windows.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/manually-install-ssm-agent-macos.html) 
+  [AlmaLinux](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-alma.html) 
+  [Amazon Linux 2 および AL2023](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-al2.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-deb.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-deb.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-oracle.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-oracle.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rhel.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rhel.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rocky.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rocky.html) 
+  [https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-ubuntu.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-ubuntu.html) 

SSM Agent に関する問題については、[SSM Agent のトラブルシューティング](troubleshooting-ssm-agent.md) を参照してください。

## セッションを開始するアクセス許可がありません
<a name="session-manager-troubleshooting-start-permissions"></a>

**問題**: セッションを開始しようとしましたが、システムから必要なアクセス権限がないと通知されました。
+ **解決策**: システム管理者から、Session Manager セッションを開始するための AWS Identity and Access Management (IAM) ポリシーのアクセス許可が与えられていません。詳細については、「[インスタンスへのユーザーセッションアクセスの制御](session-manager-getting-started-restrict-access.md)」を参照してください。

## SSM Agent がオンラインになっていません
<a name="session-manager-troubleshooting-agent-not-online"></a>

**問題**: Amazon EC2 インスタンスの **[Session Manager]** タブに、次のメッセージが表示されます。「SSM Agent がオンラインになっていません。SSM Agent は、Systems Manager エンドポイントに接続して、それ自体をサービスに登録することができませんでした。」

**解決策**: SSM Agent は、Session Manager が Amazon EC2 インスタンスに接続できるように、これらのインスタンス上で実行される Amazon ソフトウェアです。このエラーが表示される場合、SSM Agent は Systems Manager エンドポイントとの接続を確立できません。可能性のある問題の原因としては、ファイアウォール制限、ルーティング問題、またはインターネット接続がないことが考えられます。この問題を解決するには、ネットワーク接続問題を調査してください。詳細については、「[SSM Agent のトラブルシューティング](troubleshooting-ssm-agent.md)」および「[マネージドノードの可用性のトラブルシューティング](fleet-manager-troubleshooting-managed-nodes.md)」を参照してください。Systems Manager エンドポイントについては、[AWS 全般リファレンス](https://docs.aws.amazon.com/general/latest/gr/ssm.html)の「AWS Systems Manager エンドポイントとクォータ」を参照してください。

## セッション設定を変更するためのアクセス許可がありません
<a name="session-manager-troubleshooting-preferences-permissions"></a>

**問題**: 組織のグローバルなセッション設定を更新しようとしましたが、システムから必要なアクセス権限がないと通知されました。
+ **解決策**: システム管理者から、Session Manager を設定するための IAM ポリシーのアクセス許可が与えられていません。詳細については、「[Session Manager の設定を更新するためのユーザーアクセス許可を付与または拒否する](preference-setting-permissions.md)」を参照してください。

## Session Manager が使用できない、または使用に設定されていないマネージドノード。
<a name="session-manager-troubleshooting-instances"></a>

**問題 1**: **セッションの開始**のコンソールページでセッションを開始したくても、あるマネージドノードがリストにありません。
+ **解決策 A**: 接続したいマネージドノードが AWS Systems Manager 用に設定されていない可能性があります。詳細については、「[組織用の Systems Manager 統合コンソールのセットアップ](systems-manager-setting-up-organizations.md)」を参照してください。
**注記**  
IAM インスタンスプロファイルをアタッチする際に AWS Systems ManagerSSM Agent がマネージドノード上ですでに実行されている場合、**セッションの開始**コンソールページにインスタンスが表示される前に、エージェントを再起動しなければならない場合があります。
+ **解決策 B**: マネージドノードの SSM Agent に適用したプロキシ設定が正しくない可能性があります。プロキシ設定が正しくない場合、マネージドノードは必要なサービスエンドポイントに到達できないか、またはノードがに異なるオペレーティングシステムとして Systems Manager にレポートする可能性があります。詳細については、「[Linux ノードでプロキシを使用するための SSM Agent の設定](configure-proxy-ssm-agent.md)」および「[SSM Agent が Windows Server インスタンス用にプロキシを使用するように設定する](configure-proxy-ssm-agent-windows.md)」を参照してください。

**問題 2**: 接続したいマネージドノードが**セッションの開始**コンソールページのリストにありますが、「選択したインスタンスは Session Manager を使用するように構成されていません」というページが表示されます。
+ **解決策 A**: マネージドノードは Systems Manager サービスで使用されるように設定されていますが、ノードに添付された IAM インスタンスプロファイルに Session Manager ツールの許可が含まれていない可能性があります。詳細については、「[Session Manager アクセス権限を使用し、IAM インスタンスプロファイルロールを確認するか作成する](session-manager-getting-started-instance-profile.md)」を参照してください。
+ **解決策 B**: マネージドノードは、Session Manager をサポートする SSM Agent のバージョンを実行していません。ノードの SSM Agent をバージョン 2.3.68.0 以降に更新します。

  オペレーティングシステムに応じて [Windows Server 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-windows.md)、[Linux 用 EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-linux.md)、[macOS 用の EC2 インスタンスに SSM Agent を手動でインストールおよびアンインストールする](manually-install-ssm-agent-macos.md) の手順にしたがって、マネージドノードの SSM Agent を手動で更新します。

  または、Run Command ドキュメントの `AWS-UpdateSSMAgent` を使用して、1 つ以上のマネージドノードのエージェントバージョンを一度に更新します。詳細については、「[Run Command を使用して SSM Agent を更新する](run-command-tutorial-update-software.md#rc-console-agentexample)」を参照してください。
**ヒント**  
エージェントを常に最新の状態に保つには、次のいずれかの方法で定義した自動スケジュールを使用して、SSM Agent を最新バージョンにアップデートすることをお勧めします。  
State Manager 関連付けの一部として `AWS-UpdateSSMAgent` を実行します。詳細については、「[チュートリアル: AWS CLI で SSM Agent を自動的に更新する](state-manager-update-ssm-agent-cli.md)」を参照してください。
メンテナンスウィンドウの一部として `AWS-UpdateSSMAgent` を実行します。メンテナンスウィンドウの使用については、「[コンソールを使用してメンテナンスウィンドウを作成および管理する](sysman-maintenance-working.md)」と「[チュートリアル: AWS CLI を使用してメンテナンスウィンドウを作成および設定する](maintenance-windows-cli-tutorials-create.md)」を参照してください。
+ **解決方法 C**: マネージドノードは必要なサービスエンドポイントに到達できません。AWS PrivateLink によるインターフェイス・エンドポイントを使用して Systems Manager エンドポイントに接続することにより、マネージドノードのセキュリティ体制を改善できます。インターフェイス・エンドポイントを使用する代わりに、マネージドノードでアウトバウンド・インターネットアクセスを有効にする方法があります。詳細については、「[PrivateLink を使用して Session Manager の VPC エンドポイントをセットアップする](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html)」を参照してください。
+ **解決策 D**: マネージドノードの使用可能な CPU またはメモリリソースが制限されています。マネージドノードが機能していても、ノードに十分な使用可能なリソースがなければセッションを確立できません。詳細については、「[接続できないインスタンスのトラブルシューティング](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-console.html)」を参照してください。

## Session Manager プラグインが見つからない
<a name="plugin-not-found"></a>

AWS CLI を使用してセッションコマンドを実行するには、ローカルマシンにも Session Manager プラグインがインストールされている必要があります。詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。

## Session Manager プラグインがコマンドラインパスに自動的に追加されませんでした (Windows)
<a name="windows-plugin-env-var-not-set"></a>

Session Manager プラグインを Windows にインストールする場合、オペレーティングシステムの `PATH` 環境変数に `session-manager-plugin` 実行可能なファイルが自動的に追加されます。Session Manager プラグインが正しくインストールされているか (`aws ssm start-session --target instance-id`) 確認して、コマンド実行後に失敗した場合は、次の手順を使用して手動で設定する必要があります。

**PATH 変数を変更するには (Windows)**

1. Windows キーを押し、「**environment variables**」と入力します。

1. [**Edit environment variables for your account**] を選択します。

1. [**PATH**] を選択して、[**Edit**] を選択します。

1. 次の例に示すように、セミコロンで区切って [**Variable value (変数値)**] フィールドにパスを追加します: *`C:\existing\path`*;*`C:\new\path`*

   *`C:\existing\path`* は既にフィールドにある値を表します。以下の例に示すように、*`C:\new\path`* は追加するパスを表します。
   + **64 ビットコンピュータ**: `C:\Program Files\Amazon\SessionManagerPlugin\bin\`

1. [**OK**] を 2 回選択して、新しい設定を適用します。

1. 実行中のコマンドプロンプトを閉じ、もう一度開きます。

## Session Manager プラグインが応答しなくなる
<a name="plugin-unresponsive"></a>

ローカルマシンにウイルス対策ソフトウェアがインストールされている場合、ポート転送セッション中にトラフィックの転送が停止することがあります。場合によっては、ウイルス対策ソフトウェアが Session Manager プラグインがプロセスのデッドロックを引き起こします。この問題を解決するには、ウィルス対策ソフトウェアから Session Manager プラグインを許可するか除外します。Session Manager プラグインのデフォルトのインストールパスの詳細については、「[AWS CLI 用の Session Manager プラグインをインストールする](session-manager-working-with-install-plugin.md)」を参照してください。

## TargetNotConnected
<a name="ssh-target-not-connected"></a>

**問題**: セッションを開始しようとしましたが、システムは「StartSession オペレーションの呼び出し時にエラー (TargetNotConnected) が発生しました。*InstanceID* が接続されていません」というエラーメッセージを返します。
+ **解決策 A**: このエラーは、セッションに指定されたターゲットのマネージドノードが Session Manager で使用するように完全に設定されていない場合に返されます。詳細については、「[Session Manager を設定する](session-manager-getting-started.md)」を参照してください。
+ **解決策 B**: このエラーは、別の AWS アカウント または AWS リージョン にあるマネージドノードでセッションを開始しようとした場合も返されます。

## セッション開始後に空白の画面が表示される
<a name="session-manager-troubleshooting-start-blank-screen"></a>

**問題**: セッションを開始すると、Session Manager に空白の画面が表示される。
+ **解決策 A**: この問題は、マネージドノードのルートボリュームがいっぱいになったときに発生する可能性があります。ディスク容量不足のため、ノードの SSM Agent が動作を停止します。この問題を解決するには、Amazon CloudWatch を使用して、オペレーティングシステムからメトリクスとログを収集します。詳細については、「Amazon CloudWatch ユーザーガイド」の「[CloudWatch エージェントを使用してメトリクス、ログ、トレースを収集する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)」を参照してください。
+ **解決策 B**: エンドポイントとリージョンのペアが一致しないリンクを使用してコンソールにアクセスした場合、空白の画面が表示されることがあります。例えば、次のコンソール URL では、`us-west-2` は指定されたエンドポイントですが、`us-west-1` は指定された AWS リージョン です。

  ```
  https://us-west-2.console.aws.amazon.com/systems-manager/session-manager/sessions?region=us-west-1
  ```
+ **解決策 C**: VPC エンドポイントを使用してマネージドノードが Systems Manager に接続し、Session Manager の設定に基づいてセッション出力が Amazon S3 バケットまたは Amazon CloudWatch Logs のロググループに書き込みますが、`s3` ゲートウェイ・エンドポイントまたは `logs` インターフェイス・エンドポイントは VPC に存在しません。マネージドノードが VPC エンドポイントを使用して Systems Manager に接続し、Session Manager の設定に基づいてセッション出力が Amazon S3 バケット に書き込まれる場合、**`com.amazonaws.region.s3`** 形式の `s3` エンドポイントが必要です。マネージドノードが VPC エンドポイントを使用して Systems Manager に接続し、Session Manager の設定に基づいてセッション出力が CloudWatch Logs のロググループに書き込まれる場合、**`com.amazonaws.region.logs`** 形式の `logs` エンドポイントが必要です。詳細については、「[Systems Manager 用の VPC エンドポイントを作成する](setup-create-vpc.md#create-vpc-endpoints)」を参照してください。
+ **解決策 D**: セッション設定で指定したロググループまたは Amazon S3 バケットが削除されました。この問題を解決するには、有効なロググループまたは S3 バケットを使用してセッション設定を更新します。
+ **解決策 E**: セッション設定で指定したロググループまたは Amazon S3 バケットは暗号化されませんが、 `cloudWatchEncryptionEnabled` または `s3EncryptionEnabled` の入力を `true` に設定しています。この問題を解決するには、暗号化されたロググループまたは Amazon S3 バケットを使用してセッション設定を更新するか、`cloudWatchEncryptionEnabled` または `s3EncryptionEnabled` 入力を `false` に設定します。このシナリオは、コマンドラインツールを使用してセッション設定を作成する顧客にのみ適用されます。

## 長時間実行しているセッション中にマネージドノードが応答しなくなる
<a name="session-manager-troubleshooting-log-retention"></a>

**問題**: 長時間実行しているセッション中にマネージドノードが応答しなくなるか、またはクラッシュします。

**解決策**: Session Manager の SSM Agent ログ保持期間を減らします。

**セッションの SSM Agent ログの保持期間を短縮するには**

1. Linux 向けの `/etc/amazon/ssm/` ディレクトリ、または Windows 向けの `C:\Program Files\Amazon\SSM` 内で `amazon-ssm-agent.json.template` を検索します。

1. `amazon-ssm-agent.json.template` の内容を、`amazon-ssm-agent.json` という名前の同じディレクトリ内の新しいファイルにコピーします。

1. `SessionLogsRetentionDurationHours` プロパティの `SSM` 値のデフォルト値を小さくして、ファイルを保存します。

1. [SSM Agent] を再起動する

## StartSession オペレーションを呼び出すときにエラーが発生しました (InvalidDocument)
<a name="session-manager-troubleshooting-invalid-document"></a>

**問題**: AWS CLI を使用してセッションを開始すると、次のエラーが表示される。

```
An error occurred (InvalidDocument) when calling the StartSession operation: Document type: 'Command' is not supported. Only type: 'Session' is supported for Session Manager.
```

**解決策**: `--document-name` パラメータに指定した SSM ドキュメントが**セッションドキュメントではありません。次の手順を使用して、AWS マネジメントコンソール のセッションドキュメントのリストを表示します。

**セッションドキュメントのリストを表示するには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[ドキュメント]** を選択します。

1. **[カテゴリ]** リストで **[セッションドキュメント]** を選択します。