Session Manager プリファレンスドキュメントを作成する (コマンドライン) - AWS Systems Manager

Session Manager プリファレンスドキュメントを作成する (コマンドライン)

次の手順を使用して、AWS Systems Manager Session Manager セッションのプリファレンスを定義する SSM ドキュメントを作成します。このドキュメントを使用して、データ暗号化、セッション期間、ログ記録などのセッションオプションを設定できます。例えば、Amazon Simple Storage Service (Amazon S3) バケットまたは Amazon CloudWatch Logs ロググループにセッションログデータを格納するかどうかを指定します。AWS アカウント および AWS リージョン のすべてのセッションの一般的なプリファレンスを定義するドキュメントや、個々のセッションのプリファレンスを定義するドキュメントを作成できます。

注記

Session Manager コンソールを使用して、一般的なセッション設定を設定することもできます。

Session Manager プリファレンスの設定に使用するドキュメントには、Standard_StreamsessionType が付いている必要があります。これらの Session ドキュメントの詳細については、「セッションドキュメントスキーマ」を参照してください。

コマンドラインを使用して既存の Session Manager 設定を更新する方法については、「Session Manager 設定の更新 (コマンドライン)」を参照してください。

AWS CloudFormation を使用してセッション設定を作成する方法の例については、AWS CloudFormationユーザーガイドで「Session Manager の設定向けに Systems Manager ドキュメントを作成する」を参照してください。

注記

この手順では、AWS アカウント レベルで Session Manager プリファレンスを設定するためのドキュメントを作成する方法について説明します。セッションレベルのプリファレンスの設定に使用されるドキュメントを作成するには、ファイル名関連のコマンド入力に SSM-SessionManagerRunShell 以外の値を指定します。

ドキュメントを使用して AWS Command Line Interface (AWS CLI) から開始されるセッションのプリファレンスを設定するには、--document-name パラメータ値としてドキュメント名を指定します。Session Manager コンソールから開始したセッションのプリファレンスを設定するには、ドキュメントの名前を入力するか、リストから選択します。

Session Manager 設定を作成するには (コマンドライン)
  1. SessionManagerRunShell.json などの名前でローカルマシンに JSON ファイルを作成し、次の内容を貼り付けます。

    { "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "", "s3KeyPrefix": "", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "", "cloudWatchEncryptionEnabled": true, "cloudWatchStreamingEnabled": false, "kmsKeyId": "", "runAsEnabled": false, "runAsDefaultUser": "", "idleSessionTimeout": "", "maxSessionDuration": "", "shellProfile": { "windows": "date", "linux": "pwd;ls" } } }

    次の例に示すように、値をハードコーディングするのではなく、パラメータを使用してセッション設定に値を渡すこともできます。

    { "schemaVersion":"1.0", "description":"Session Document Parameter Example JSON Template", "sessionType":"Standard_Stream", "parameters":{ "s3BucketName":{ "type":"String", "default":"" }, "s3KeyPrefix":{ "type":"String", "default":"" }, "s3EncryptionEnabled":{ "type":"Boolean", "default":"false" }, "cloudWatchLogGroupName":{ "type":"String", "default":"" }, "cloudWatchEncryptionEnabled":{ "type":"Boolean", "default":"false" } }, "inputs":{ "s3BucketName":"{{s3BucketName}}", "s3KeyPrefix":"{{s3KeyPrefix}}", "s3EncryptionEnabled":"{{s3EncryptionEnabled}}", "cloudWatchLogGroupName":"{{cloudWatchLogGroupName}}", "cloudWatchEncryptionEnabled":"{{cloudWatchEncryptionEnabled}}", "kmsKeyId":"" } }
  2. セッションデータを送信する場所を指定します。(オプションでプレフィックスが付いた) S3 バケット名または CloudWatch Logs ロググループ名を指定することができます。ローカルクライアントとマネージドノード間でデータをさらに暗号化する場合、暗号化に使用する KMS キーを指定します。次に例を示します。

    { "schemaVersion": "1.0", "description": "Document to hold regional settings for Session Manager", "sessionType": "Standard_Stream", "inputs": { "s3BucketName": "DOC-EXAMPLE-BUCKET", "s3KeyPrefix": "MyS3Prefix", "s3EncryptionEnabled": true, "cloudWatchLogGroupName": "MyLogGroupName", "cloudWatchEncryptionEnabled": true, "cloudWatchStreamingEnabled": false, "kmsKeyId": "MyKMSKeyID", "runAsEnabled": true, "runAsDefaultUser": "MyDefaultRunAsUser", "idleSessionTimeout": "20", "maxSessionDuration": "60", "shellProfile": { "windows": "MyCommands", "linux": "MyCommands" } } }
    注記

    セッションログデータを暗号化しない場合は、s3EncryptionEnabled の「true」を「false」に変更します。

    Amazon S3 バケットまたは CloudWatch Logs ロググループにログを送信しない場合、アクティブなセッションデータを暗号化しない場合、またはアカウントのセッションの Run As サポートを有効にしない場合は、それらのオプション用に次の行を削除できます。「inputs」セクションの最後の行がカンマで終わっていないことを確認してください。

    セッションデータを暗号化するために KMS キー ID を追加する場合、セッションを開始するユーザーとそのユーザーが接続するマネージドノードの両方が、キーを使用する許可が必要になります。IAM ポリシーを通して Session Manager で KMS キーを使用するアクセス許可を付与します。詳細については、以下のトピックを参照してください。

  3. ファイルを保存します。

  4. JSON ファイルを作成したディレクトリで、次のコマンドを実行します。

    Linux & macOS
    aws ssm create-document \ --name SSM-SessionManagerRunShell \ --content "file://SessionManagerRunShell.json" \ --document-type "Session" \ --document-format JSON
    Windows
    aws ssm create-document ^ --name SSM-SessionManagerRunShell ^ --content "file://SessionManagerRunShell.json" ^ --document-type "Session" ^ --document-format JSON
    PowerShell
    New-SSMDocument ` -Name "SSM-SessionManagerRunShell" ` -Content (Get-Content -Raw SessionManagerRunShell.json) ` -DocumentType "Session" ` -DocumentFormat JSON

    成功すると、コマンドは以下のような出力を返します。

    {
        "DocumentDescription": {
            "Status": "Creating",
            "Hash": "ce4fd0a2ab9b0fae759004ba603174c3ec2231f21a81db8690a33eb66EXAMPLE",
            "Name": "SSM-SessionManagerRunShell",
            "Tags": [],
            "DocumentType": "Session",
            "PlatformTypes": [
                "Windows",
                "Linux"
            ],
            "DocumentVersion": "1",
            "HashType": "Sha256",
            "CreatedDate": 1547750660.918,
            "Owner": "111122223333",
            "SchemaVersion": "1.0",
            "DefaultVersion": "1",
            "DocumentFormat": "JSON",
            "LatestVersion": "1"
        }
    }