ステップ 8: (オプション) Session Manager を通して SSH 接続のアクセス許可を付与および制御する
AWS アカウント のユーザーに AWS Command Line Interface (AWS CLI) を使用する許可を付与して、AWS Systems Manager の Session Manager が適用されたマネージドノードに Secure Shell (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 接続を有効にするには
-
SSH 接続を有効にするマネージドノードに対して以下の手順を実行します:
-
SSH がマネージドノードに実行されていることを確認します。(ノードのインバウンドポートを閉じることができます)
-
SSM Agent のバージョン 2.3.672.0 以降がマネージドノードにインストールされていることを確認します。
マネージドノードに SSM Agent のインストールまたは更新の詳細については、以下のトピックをご参照ください:
注記
マネージドノードとしてアクティベートしたオンプレミスサーバー、エッジデバイス、仮想マシン (VM) に Session Manager を使用する場合、アドバンストインスタンス層を使用する必要があります。アドバンストインスタンスの詳細については、「インスタンス層の設定」を参照してください。
-
-
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 アクセス許可の追加と削除」を参照してください。
-