ステップ 8: (オプション) Session Manager を通して SSH 接続のアクセス許可を有効にして制御する - AWS Systems Manager

ステップ 8: (オプション) Session Manager を通して SSH 接続のアクセス許可を有効にして制御する

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

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

注記

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

Session Manager で SSH 接続を有効にする手順

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

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

  1. SSH 接続を有効にするマネージドノードに対して以下の手順を実行します:

  2. SSH を使用したマネージドノードに接続するローカルマシンで、以下の手順を実行します:

    • Session Manager プラグイン 1.1.23.0 バージョン以降がインストールされていることを確認します。

      Session Manager プラグインのインストールについては、(オプション) AWS CLI 用の Session Manager プラグインをインストールする を参照してください。

    • 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'"

      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 による SSH 接続のユーザーアクセス許可の制御

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

IAM ポリシーを使用して Session Manager での SSH 接続を許可するには

  • 以下のいずれかのオプションを使用します。

    • オプション 1: IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

      例えば、クイックスタート Session Manager のエンドユーザーポリシー で作成したクイックスタートポリシーに次の要素を追加します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartSession", "Resource": [ "arn:aws:ec2:region:account-id:instance/instance-id", "arn:aws:ssm:*:*:document/AWS-StartSSHSession" ] } ] }
    • オプション 2: AWS Management Console、AWS CLI、または AWS API を使用して、インラインポリシーをユーザーポリシーにアタッチします。

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

      詳細については、IAM ユーザーガイド の「IAM ID アクセス許可の追加と削除」を参照してください。

IAM ポリシーを使用して Session Manager での SSH 接続を拒否するには

  • 以下のいずれかのオプションを使用します。

    • オプション 1: IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。ナビゲーションペインで [ポリシー] を選択し、ユーザーまたはロールのアクセス許可ポリシーを更新して、Session Manager セッションの開始をブロックします。

      例えば、クイックスタート Session Manager のエンドユーザーポリシー で作成したクイックスタートポリシーに次の要素を追加します。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Deny", "Action": "ssm:StartSession", "Resource": "arn:aws:ssm:*:*:document/AWS-StartSSHSession" } ] }
    • オプション 2: AWS Management Console、AWS CLI、または AWS API を使用して、インラインポリシーをユーザーポリシーにアタッチします。

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

      詳細については、IAM ユーザーガイド の「IAM ID アクセス許可の追加と削除」を参照してください。