Contoh tambahan kebijakan IAM untuk Session Manager - AWS Systems Manager

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

Contoh tambahan kebijakan IAM untuk Session Manager

Lihat contoh kebijakan berikut untuk membantu Anda membuat kebijakan kustom AWS Identity and Access Management (IAM) untuk setiap skenario akses Session Manager pengguna yang ingin Anda dukung.

Contoh 1: Berikan akses ke dokumen di konsol

Anda dapat mengizinkan pengguna menentukan dokumen kustom saat mereka meluncurkan sesi menggunakan konsol Pengelola Sesi. Contoh berikut kebijakan IAM memberikan izin untuk mengakses dokumen dengan nama yang dimulai dengan SessionDocument- yang ditentukan Wilayah AWS dan. Akun AWS

Untuk menggunakan kebijakan ini, ganti setiap placeholder sumber daya contoh dengan informasi Anda sendiri.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:ListDocuments" ], "Resource": [ "arn:aws:ssm:region:account-id:document/SessionDocument-*" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } } ] }
catatan

Konsol Session Manager hanya mendukung dokumen Session sessionType yang memiliki Standard_Stream yang digunakan untuk menentukan preferensi sesi. Untuk informasi selengkapnya, lihat Skema dokumen sesi.

Contoh 2: Batasi akses ke node terkelola tertentu

Anda dapat membuat kebijakan IAM yang menentukan node terkelola mana yang diizinkan untuk disambungkan oleh pengguna menggunakan Session Manager. Misalnya, kebijakan berikut memberi pengguna izin untuk memulai, mengakhiri, dan melanjutkan sesi mereka pada tiga node tertentu. Kebijakan membatasi pengguna untuk menyambung ke node selain yang ditentukan.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890EXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-abcdefghijEXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-0e9d8c7b6aEXAMPLE" ] }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

Contoh 3: Batasi akses berdasarkan tag

Anda dapat membatasi akses ke node terkelola berdasarkan tag tertentu. Dalam contoh berikut, pengguna diizinkan untuk memulai dan melanjutkan sesi (Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession) pada setiap node terkelola (Resource: arn:aws:ec2:region:987654321098:instance/*) dengan syarat bahwa node tersebut adalah Finance WebServer (ssm:resourceTag/Finance: WebServer). Jika pengguna mengirim perintah ke node terkelola yang tidak diberi tag atau yang memiliki tag selainFinance: WebServer, hasil perintah akan disertakanAccessDenied.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/Finance": [ "WebServers" ] } } }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

Anda dapat membuat kebijakan IAM yang memungkinkan pengguna memulai sesi ke node terkelola yang ditandai dengan beberapa tag. Kebijakan berikut memungkinkan pengguna untuk memulai sesi ke node terkelola yang memiliki kedua tag yang ditentukan diterapkan padanya. Jika pengguna mengirim perintah ke node terkelola yang tidak ditandai dengan kedua tag ini, hasil perintah akan disertakanAccessDenied.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:StartSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag-key1":[ "tag-value1" ], "ssm:resourceTag/tag-key2":[ "tag-value2" ] } } } ] }

Untuk informasi selengkapnya tentang membuat kebijakan IAM, lihat Kebijakan Terkelola dan Kebijakan Inline di Panduan Pengguna IAM. Untuk informasi selengkapnya tentang menandai node terkelola, lihat Menandai node terkelola dan Menandai resource Amazon EC2 Anda di Panduan Pengguna Amazon EC2 untuk Instans Linux (konten berlaku dan node terkelola). Windows Linux Untuk informasi selengkapnya tentang meningkatkan postur keamanan terhadap perintah tingkat root yang tidak sah pada node terkelola, lihat Membatasi akses ke perintah tingkat root melaluiSSM Agent

Contoh 4: Izinkan pengguna untuk mengakhiri hanya sesi yang mereka mulai

Session Managermenyediakan dua metode untuk mengontrol sesi mana pengguna federasi di Anda Akun AWS diizinkan untuk mengakhiri.

  • Gunakan variabel {aws:userid} dalam kebijakan izin AWS Identity and Access Management (IAM). Pengguna federasi hanya dapat mengakhiri sesi yang mereka mulai. Untuk pengguna yang tidak terfederasi, gunakan variabel {aws:username} sebagai ganti. {aws:userid}

  • Gunakan tag yang disediakan oleh AWS tag dalam kebijakan izin IAM. Dalam kebijakan, Anda memasukkan ketentuan yang mengizinkan pengguna untuk mengakhiri hanya sesi yang ditandai dengan tanda tertentu yang telah diberikan oleh AWS. Metode ini bekerja untuk semua akun, termasuk yang menggunakan ID federasi untuk memberikan akses ke AWS.

Metode 1: Berikan TerminateSession hak istimewa menggunakan variabel {aws:username}

Kebijakan IAM berikut mengizinkan pengguna untuk melihat ID semua sesi di akun Anda. Namun, pengguna dapat berinteraksi dengan node terkelola hanya melalui sesi yang mereka mulai. Pengguna yang ditetapkan kebijakan berikut tidak dapat terhubung ke atau mengakhiri sesi pengguna lain. Kebijakan menggunakan {aws:username} variabel untuk mencapai hal ini.

catatan

Metode ini tidak bekerja untuk akun yang memberikan akses ke AWS menggunakan ID federasi.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:DescribeSessions" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:TerminateSession" ], "Effect": "Allow", "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

Metode 2: Berikan TerminateSession hak istimewa menggunakan tag yang disediakan oleh AWS

Anda dapat mengontrol sesi mana yang dapat diakhiri pengguna dengan menyertakan variabel kunci tag bersyarat dalam kebijakan IAM. Ketentuan menetapkan bahwa pengguna hanya dapat mengakhiri sesi yang ditandai dengan salah satu atau kedua variabel kunci tanda tertentu dan nilai tertentu ini.

Saat pengguna Akun AWS memulai sesi, Session Manager terapkan dua tag sumber daya ke sesi tersebut. Tanda sumber daya pertama adalah aws:ssmmessages:target-id, yang dengannya Anda menentukan ID target yang diizinkan untuk diakhiri oleh pengguna. Tag sumber daya lainnya adalah aws:ssmmessages:session-id, dengan nilai dalam format role-id:caller-specified-role-name.

catatan

Session Managertidak mendukung tag khusus untuk kebijakan kontrol akses IAM ini. Anda harus menggunakan tag sumber daya yang disediakan oleh AWS, dijelaskan di bawah ini.

aws:ssmmessages:target-id

Dengan kunci tag ini, Anda menyertakan ID node terkelola sebagai nilai dalam kebijakan. Dalam blok kebijakan berikut, pernyataan kondisi memungkinkan pengguna untuk mengakhiri hanya node I-02573CAFCFExample.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "i-02573cafcfEXAMPLE" ] } } } ] }

Jika pengguna mencoba untuk mengakhiri sesi yang belum diberi izin TerminateSession ini, mereka menerima kesalahan AccessDeniedException.

aws:ssmmessages:session-id

Kunci tanda ini mencakup variabel untuk ID sesi sebagai nilai dalam permintaan untuk memulai sesi.

Contoh berikut menunjukkan kebijakan untuk kasus di mana tipe pemanggil adalah User. Nilai yang Anda sediakan untuk aws:ssmmessages:session-id adalah ID pengguna. Dalam contoh ini, AIDIODR4TAW7CSEXAMPLE mewakili ID pengguna di Akun AWS Anda. Untuk mengambil ID untuk pengguna di Anda Akun AWS, gunakan perintah IAM,. get-user Untuk selengkapnya, lihat mendapatkan pengguna di AWS Identity and Access Management bagian Panduan Pengguna IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "AIDIODR4TAW7CSEXAMPLE" ] } } } ] }

Contoh berikut menunjukkan kebijakan untuk kasus di mana tipe pemanggil adalah AssumedRole. Anda dapat menggunakan variabel {aws:userid} untuk nilai yang Anda sediakan untuk aws:ssmmessages:session-id. Atau, Anda dapat hardcode ID peran untuk nilai yang Anda sediakan untuk aws:ssmmessages:session-id. Jika Anda hardcode ID peran, Anda harus memberi nilai dalam format role-id:caller-specified-role-name. Sebagai contoh, AIDIODR4TAW7CSEXAMPLE:MyRole.

penting

Agar tanda sistem diterapkan, ID peran yang Anda sediakan hanya dapat berisi karakter berikut: huruf Unicode, 0-9, spasi, _, ., :, /, =, +, -, @, dan \.

Untuk mengambil ID peran untuk peran dalam Anda Akun AWS, gunakan get-caller-identity perintah. Untuk informasi, lihat get-caller-identitydi Referensi AWS CLI Perintah.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userid}*" ] } } } ] }

Jika pengguna mencoba mengakhiri sesi yang belum diberi izin TerminateSession ini, mereka menerima kesalahan AccessDeniedException.

aws:ssmmessages:target-id dan aws:ssmmessages:session-id

Anda juga dapat membuat kebijakan IAM yang mengizinkan pengguna untuk mengakhiri sesi yang ditandai dengan kedua tanda sistem, seperti yang ditunjukkan dalam contoh ini.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:TerminateSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/aws:ssmmessages:target-id":[ "i-02573cafcfEXAMPLE" ], "ssm:resourceTag/aws:ssmmessages:session-id":[ "${aws:userid}*" ] } } } ] }

Contoh 5: Izinkan akses penuh (administratif) ke semua sesi

Kebijakan IAM berikut memungkinkan pengguna untuk sepenuhnya berinteraksi dengan semua node terkelola dan semua sesi yang dibuat oleh semua pengguna untuk semua node. Ini harus diberikan hanya kepada Administrator yang membutuhkan kontrol penuh atas Session Manager aktivitas organisasi Anda.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:StartSession", "ssm:TerminateSession", "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:GetConnectionStatus" ], "Effect": "Allow", "Resource": [ "*" ] } ] }