AWS CLI でセッションドキュメントのアクセス許可チェックを適用する - AWS Systems Manager

AWS CLI でセッションドキュメントのアクセス許可チェックを適用する

アカウントに Session Manager を設定すると、SSM-SessionManagerRunShell という名前で Session タイプの SSM ドキュメントが作成されます。この SSM ドキュメントには、セッションデータの保存先を 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": "MyBucketName", "s3KeyPrefix": "MyBucketPrefix", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "MyLogGroupName", "cloudWatchEncryptionEnabled": true, "kmsKeyId": "MyKMSKeyID", "runAsEnabled": true, "runAsDefaultUser": "MyDefaultRunAsUser" } }

デフォルトでは、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:*:*: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 接続を有効にする」を参照してください。