AWS CLI でセッションドキュメントのアクセス許可チェックを適用する
アカウントに Session Manager を設定すると、SSM-SessionManagerRunShell
という Session
タイプの SSM ドキュメントが作成されます。この SSM ドキュメントには、セッションデータの保存先を Amazon Simple Storage Service
(Amazon S3) バケットにするか Amazon CloudWatch Logs ロググループにするか、AWS Key Management Service
を使用してセッションデータを暗号化するかどうか、セッションで Run As サポートを有効にするかどうかなど、セッションの設定が保存されます。以下はその例です。
{ "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "
DOC-EXAMPLE-BUCKET
", "s3KeyPrefix": "MyBucketPrefix
", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "MyLogGroupName
", "cloudWatchEncryptionEnabled": true, "kmsKeyId": "MyKMSKeyID
", "runAsEnabled": true, "runAsDefaultUser": "MyDefaultRunAsUser
" } }
デフォルトでは、AWS Identity and Access Management (IAM) ユーザーポリシーでセッションを開始するアクセス許可がアカウントのユーザーに付与されている場合、そのユーザーはこの
SSM-SessionManagerRunShell
SSM ドキュメントにアクセスできます。つまり、AWS CLI を使用して start-session
コマンドを実行し、--document-name
オプションでドキュメントを指定しない場合、システムは SSM-SessionManagerRunShell
を使用してセッションを開始します。セッションは、ユーザーの IAM ポリシーで SSM-SessionManagerRunShell
ドキュメントへのアクセスが明示的に許可されていない場合でも開始されます。
たとえば、以下のコマンドではセッションドキュメントを指定していません。
aws ssm start-session \ --target i-02573cafcfEXAMPLE
以下の例では、デフォルトの Session Manager セッションドキュメントを指定しています。
aws ssm start-session \ --document-name SSM-SessionManagerRunShell \ --target i-02573cafcfEXAMPLE
デフォルトまたは任意のセッションドキュメントへのアクセスを制限するには、ユーザーにセッションドキュメントへのアクセスが明示的に許可されているかどうかを検証する条件要素を、ユーザーの
IAM ポリシーに追加できます。この条件が適用されると、ユーザーは start-session
AWS CLI コマンドの --document-name
オプションの値を指定する必要があります。この値は、デフォルトの Session Manager セッションドキュメントまたは作成したカスタムのセッションドキュメントのいずれかです。以下の条件要素を
IAM ポリシーの ssm:StartSession
アクションに追加すると、その要素によってセッションドキュメントのアクセスチェックが実行されます。
"Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } }
この条件要素を true
に設定した場合、ユーザーがセッションを開始するためには、IAM ポリシーでセッションドキュメントへのアクセスが明示的に許可されている必要があります。以下はその例です。
{ "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:
region
:account-id
:instance/instance-id
", "arn:aws:ssm:region
:account-id
:document/SSM-SessionManagerRunShell" ] }
IAM ポリシーで Session Manager セッションドキュメントを指定する例については、「クイックスタート Session Manager のエンドユーザーポリシー」を参照してください。
その他のシナリオ
start-session
CLI コマンドからドキュメント名を省略できるのは、デフォルトの SSM-SessionManagerRunShell
セッションドキュメントを使用する場合のみです。それ以外の場合、ユーザーは start-session
AWS CLI コマンドの --document-name
オプションに値を指定する必要があります。ユーザーは指定したセッションドキュメントへのアクセスが明示的に許可されているかどうかが、システムによってチェックされます。
たとえば、お客様が作成したカスタムのセッションドキュメントの名前をユーザーが指定する場合は、ユーザーの IAM ポリシーで、そのドキュメントへのアクセスをユーザーに許可する必要があります。
ユーザーが SSH を使用してセッションを開始するコマンドを実行する場合は、ユーザーのポリシーで、AWS-StartSSHSession
セッションドキュメントへのアクセスをユーザーに許可する必要があります。
SSH を使用してセッションを開始するには、ターゲットインスタンスとユーザーのローカルマシンの両方で、そのための設定手順を完了する必要があります。詳細については、「(オプション) Session Managerを介して SSH 接続を有効にする」を参照してください。