Langkah 5: (Opsional) Batasi akses ke perintah dalam sesi - AWS Systems Manager

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Langkah 5: (Opsional) Batasi akses ke perintah dalam sesi

Anda dapat membatasi perintah yang dapat dijalankan pengguna di AWS Systems Manager Session Manager sesi dengan menggunakan dokumen Session tipe kustom AWS Systems Manager (SSM). Dalam dokumen, Anda menentukan perintah yang dijalankan ketika pengguna memulai sesi dan parameter yang dapat diberikan pengguna ke perintah. Dokumen Session dari schemaVersion harus 1.0, dan sessionType dokumen harus InteractiveCommands. Anda kemudian dapat membuat AWS Identity and Access Management (IAM) kebijakan yang memungkinkan pengguna mengakses hanya Session dokumen yang Anda tentukan. Untuk informasi selengkapnya tentang penggunaan IAM kebijakan untuk membatasi akses ke perintah dalam sesi, lihatIAMcontoh kebijakan untuk perintah interaktif.

Dokumen dengan sessionType of hanya InteractiveCommands didukung untuk sesi yang dimulai dari AWS Command Line Interface (AWS CLI). Pengguna memberikan nama dokumen kustom sebagai nilai --document-name parameter dan memberikan nilai parameter perintah apa pun menggunakan --parameters opsi. Untuk informasi selengkapnya tentang menjalankan perintah interaktif, lihat Memulai sesi (perintah interaktif dan noninteraktif).

Gunakan prosedur berikut untuk membuat SSM dokumen Session tipe kustom yang mendefinisikan perintah pengguna diizinkan untuk menjalankan.

Batasi akses ke perintah dalam sesi (konsol)

Untuk membatasi perintah yang dapat dijalankan pengguna di Session Manager sesi (konsol)
  1. Buka AWS Systems Manager konsol di https://console.aws.amazon.com/systems-manager/.

  2. Di panel navigasi, pilih Dokumen.

  3. Pilih Buat perintah atau sesi.

  4. Untuk Nama, masukkan nama deskriptif untuk dokumen.

  5. Untuk tipe dokumen, pilih Dokumen sesi.

  6. Masukkan konten dokumen Anda yang mendefinisikan perintah yang dapat dijalankan pengguna Session Manager sesi menggunakan JSON atauYAML, seperti yang ditunjukkan pada contoh berikut.

    YAML
    --- schemaVersion: '1.0' description: Document to view a log file on a Linux instance sessionType: InteractiveCommands parameters: logpath: type: String description: The log file path to read. default: "/var/log/amazon/ssm/amazon-ssm-agent.log" allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$" properties: linux: commands: "tail -f {{ logpath }}" runAsElevated: true
    JSON
    { "schemaVersion": "1.0", "description": "Document to view a log file on a Linux instance", "sessionType": "InteractiveCommands", "parameters": { "logpath": { "type": "String", "description": "The log file path to read.", "default": "/var/log/amazon/ssm/amazon-ssm-agent.log", "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$" } }, "properties": { "linux": { "commands": "tail -f {{ logpath }}", "runAsElevated": true } } }
  7. Pilih Buat dokumen.

Batasi akses ke perintah dalam sesi (baris perintah)

Sebelum Anda mulai

Jika Anda belum melakukannya, instal dan konfigurasikan AWS Command Line Interface (AWS CLI) atau file AWS Tools for PowerShell. Untuk selengkapnya, lihat Menginstal atau memperbarui versi terbaru AWS CLI dan Menginstal AWS Tools for PowerShell.

Untuk membatasi perintah yang dapat dijalankan pengguna di Session Manager sesi (baris perintah)
  1. Buat YAML file JSON atau untuk konten dokumen Anda yang mendefinisikan perintah yang dapat dijalankan pengguna Session Manager sesi, seperti yang ditunjukkan pada contoh berikut.

    YAML
    --- schemaVersion: '1.0' description: Document to view a log file on a Linux instance sessionType: InteractiveCommands parameters: logpath: type: String description: The log file path to read. default: "/var/log/amazon/ssm/amazon-ssm-agent.log" allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$" properties: linux: commands: "tail -f {{ logpath }}" runAsElevated: true
    JSON
    { "schemaVersion": "1.0", "description": "Document to view a log file on a Linux instance", "sessionType": "InteractiveCommands", "parameters": { "logpath": { "type": "String", "description": "The log file path to read.", "default": "/var/log/amazon/ssm/amazon-ssm-agent.log", "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$" } }, "properties": { "linux": { "commands": "tail -f {{ logpath }}", "runAsElevated": true } } }
  2. Jalankan perintah berikut untuk membuat SSM dokumen menggunakan konten Anda yang mendefinisikan perintah yang dapat dijalankan pengguna Session Manager sesi.

    Linux & macOS
    aws ssm create-document \ --content file://path/to/file/documentContent.json \ --name "exampleAllowedSessionDocument" \ --document-type "Session"
    Windows
    aws ssm create-document ^ --content file://C:\path\to\file\documentContent.json ^ --name "exampleAllowedSessionDocument" ^ --document-type "Session"
    PowerShell
    $json = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String New-SSMDocument ` -Content $json ` -Name "exampleAllowedSessionDocument" ` -DocumentType "Session"

Parameter perintah interaktif dan AWS CLI

Ada berbagai cara yang dapat Anda lakukan dalam memberikan parameter perintah interaktif saat menggunakan AWS CLI. Bergantung pada sistem operasi (OS) mesin klien Anda yang Anda gunakan untuk terhubung ke node terkelola dengan AWS CLI, sintaks yang Anda berikan untuk perintah yang berisi karakter khusus atau escape mungkin berbeda. Contoh berikut menunjukkan beberapa cara berbeda Anda dapat memberikan parameter perintah saat menggunakan AWS CLI, dan cara menangani karakter khusus atau escape.

Parameter disimpan di Parameter Store dapat direferensikan dalam AWS CLI untuk parameter perintah Anda seperti yang ditunjukkan pada contoh berikut.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["{{ssm:mycommand}}"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["{{ssm:mycommand}}"]}'

Contoh berikut menunjukkan bagaimana Anda dapat menggunakan sintaks singkat dengan AWS CLI untuk meneruskan parameter.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters command="ifconfig"
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters command="ipconfig"

Anda juga dapat memberikan parameter JSON seperti yang ditunjukkan pada contoh berikut.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["ifconfig"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["ipconfig"]}'

Parameter juga dapat disimpan dalam JSON file dan disediakan untuk AWS CLI seperti yang ditunjukkan pada contoh berikut. Untuk informasi lebih lanjut tentang penggunaan parameter AWS CLI dari file, lihat Memuat parameter AWS CLI dari file di Panduan Pengguna AWS Command Line Interface .

{ "command": [ "my command" ] }
Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters file://complete/path/to/file/parameters.json
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters file://complete/path/to/file/parameters.json

Anda juga dapat menghasilkan AWS CLI kerangka dari file JSON input seperti yang ditunjukkan pada contoh berikut. Untuk informasi selengkapnya tentang menghasilkan AWS CLI kerangka dari file JSON input, lihat Menghasilkan AWS CLI kerangka dan parameter input dari file JSON atau YAML input di Panduan Pengguna.AWS Command Line Interface

{ "Target": "instance-id", "DocumentName": "MyInteractiveCommandDocument", "Parameters": { "command": [ "my command" ] } }
Linux & macOS
aws ssm start-session \ --cli-input-json file://complete/path/to/file/parameters.json
Windows
aws ssm start-session ^ --cli-input-json file://complete/path/to/file/parameters.json

Agar karakter escape di dalam tanda kutip, Anda harus menambahkan garis miring tambahan untuk karakter escape seperti yang ditunjukkan dalam contoh berikut.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["printf \"abc\\\\tdef\""]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["printf \"abc\\\\tdef\""]}'

Untuk informasi tentang menggunakan tanda kutip dengan parameter perintah di AWS CLI lihat Menggunakan tanda kutip dengan string di AWS CLI pada AWS Command Line Interface Panduan Pengguna.

IAMcontoh kebijakan untuk perintah interaktif

Anda dapat membuat IAM kebijakan yang memungkinkan pengguna mengakses hanya Session dokumen yang Anda tentukan. Ini membatasi perintah yang dapat dijalankan pengguna di Session Manager sesi untuk hanya perintah yang ditentukan dalam SSM dokumen Session tipe kustom Anda.

Izinkan pengguna menjalankan perintah interaktif pada satu node terkelola
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:region:987654321098:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:region:987654321098:document/exampleAllowedSessionDocument" ] } ] }
Izinkan pengguna menjalankan perintah interaktif pada semua node yang dikelola
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:us-west-2:987654321098:instance/*", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument" ] } ] }
Izinkan pengguna menjalankan beberapa perintah interaktif pada semua node yang dikelola
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:us-west-2:987654321098:instance/*", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument2" ] } ] }