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 dalam 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 kebijakan AWS Identity and Access Management (IAM) yang memungkinkan pengguna mengakses hanya Session dokumen yang Anda tentukan. Untuk informasi selengkapnya tentang cara menggunakan kebijakan IAM untuk membatasi akses ke perintah dalam sesi, lihat Contoh kebijakan IAM 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 dokumen SSM Session tipe kustom yang mendefinisikan perintah pengguna diizinkan untuk menjalankan.

Batasi akses ke perintah dalam sesi (konsol)

Untuk membatasi perintah yang dapat dijalankan pengguna dalam 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 dalam Session Manager sesi menggunakan JSON atau YAMM, 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 dalam Session Manager sesi (baris perintah)
  1. Buat file JSON atau YAMAL untuk konten dokumen Anda yang mendefinisikan perintah yang dapat dijalankan pengguna dalam 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 dokumen SSM menggunakan konten Anda yang mendefinisikan perintah yang dapat dijalankan pengguna dalam sesi. Session Manager

    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 yang dapat Anda berikan parameter perintah saat menggunakan AWS CLI, dan cara menangani karakter khusus atau escape.

Parameter yang disimpan dalam 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 di JSON seperti yang ditunjukkan dalam 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 file JSON 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 input JSON seperti yang ditunjukkan pada contoh berikut. Untuk informasi selengkapnya tentang menghasilkan AWS CLI kerangka dari file input JSON, lihat Menghasilkan AWS CLI kerangka dan parameter input dari file input JSON atau YAMM 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.

Contoh kebijakan IAM untuk perintah interaktif

Anda dapat membuat kebijakan IAM yang mengizinkan pengguna untuk mengakses hanya dokumen Session yang Anda tentukan. Ini membatasi perintah yang dapat dijalankan pengguna dalam Session Manager sesi hanya pada perintah yang ditentukan dalam dokumen SSM 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" ], "Condition":{ "BoolIfExists":{ "ssm:SessionDocumentAccessCheck":"true" } } } ] }
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" ], "Condition":{ "BoolIfExists":{ "ssm:SessionDocumentAccessCheck":"true" } } } ] }
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" ], "Condition":{ "BoolIfExists":{ "ssm:SessionDocumentAccessCheck":"true" } } } ] }