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 接続のアクセス許可を付与して制御する」を参照してください。