IAM ポリシーでセッションドキュメントを指定して、ドキュメントでセッションを開始する - AWS Systems Manager

IAM ポリシーでセッションドキュメントを指定して、ドキュメントでセッションを開始する

デフォルトのセッションドキュメントを使用して start-session 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"]}'

セッション開始時にセッションドキュメントのアクセス許可チェックを強制する

AWS-StartPortForwardingSession セッションドキュメントへのアクセスを制限するには、ユーザーの IAM ポリシーに、ユーザーにセッションドキュメントへのアクセスが明示的に許可されているかどうかを確認する条件要素を追加できます。この条件が適用されると、ユーザーは start-session コマンドの document-name オプションの値を指定する必要があります。以下の条件要素を IAM ポリシーの ssm:StartSession アクションに追加すると、その要素によってセッションドキュメントのアクセスチェックが実行されます。

"Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } }

この条件要素を true に設定した場合、ユーザーがセッションを開始するためには、IAM ポリシーでセッションドキュメントへのアクセスが明示的に許可されている必要があります。条件エレメントが強制されるようにするには、ssm:StartSession アクションが許可されているすべてのポリシーステートメントにこのエレメントを含める必要があります。以下はその例です。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnableSSMSession", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-west-2:123456789012:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:us-west-2::document/AWS-StartPortForwardingSession" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } } ] }

この IAM ポリシーを適用すると、SessionDocumentAccessCheck 条件要素が true に設定されている場合、ユーザーは AWS CLI を使用してセッションを開始するときに、コマンドに document-name パラメータを入力する必要があります。document-name の値は IAM ポリシーの Resource セクションで指定されているドキュメントである必要があります。ユーザーが別のドキュメント名を入力したり、document-name パラメータを指定しなかったりすると、リクエストは失敗します。

SessionDocumentAccessCheck の条件要素が false に設定されていても、IAM ポリシーの評価には影響しません。

IAM ポリシーで Session Manager セッションドキュメントを指定する例については、「クイックスタート Session Manager のエンドユーザーポリシー」を参照してください。

その他のシナリオ

SSH を使用してセッションを開始する場合、ターゲットのマネージドノードとユーザーのローカルマシンの両方に対して設定手順を完了する必要があります。詳細については、「(オプション) Session Manager を通して SSH 接続のアクセス許可を付与して制御する」を参照してください。