Kebijakan berbasis identitas untuk Amazon EC2 - Amazon Elastic Compute Cloud

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

Kebijakan berbasis identitas untuk Amazon EC2

Secara default, pengguna tidak memiliki izin untuk membuat atau memodifikasi EC2 sumber daya Amazon, atau melakukan tugas menggunakan Amazon EC2API, EC2 konsol Amazon, atauCLI. Untuk memungkinkan pengguna membuat atau memodifikasi sumber daya dan melakukan tugas, Anda harus membuat IAM kebijakan yang memberikan izin kepada pengguna untuk menggunakan sumber daya dan API tindakan tertentu yang mereka perlukan, lalu melampirkan kebijakan tersebut ke pengguna, grup, atau IAM peran yang memerlukan izin tersebut.

Saat Anda melampirkan kebijakan ke pengguna atau grup pengguna atau peran, kebijakan tersebut akan mengizinkan atau menolak izin pengguna untuk melakukan tugas tertentu pada sumber daya tertentu. Untuk informasi lebih umum tentang IAM kebijakan, lihat Kebijakan dan izin IAM di Panduan IAM Pengguna. Untuk informasi selengkapnya tentang mengelola dan membuat IAM kebijakan khusus, lihat Mengelola IAM kebijakan.

IAMKebijakan harus memberikan atau menolak izin untuk menggunakan satu atau beberapa EC2 tindakan Amazon. Kebijakan tersebut juga harus menentukan sumber daya yang dapat digunakan bersama dengan tindakan tersebut, yang dapat berupa semua sumber daya, atau dalam beberapa kasus, sumber daya tertentu. Kebijakan ini juga dapat mencakup syarat-syarat yang Anda terapkan pada sumber daya.

Untuk memulai, Anda dapat memeriksa apakah kebijakan AWS terkelola untuk Amazon EC2 memenuhi kebutuhan Anda. Jika tidak, Anda dapat membuat kebijakan khusus Anda sendiri. Untuk informasi selengkapnya, lihat AWS kebijakan terkelola untuk Amazon EC2.

Sintaksis kebijakan

IAMKebijakan adalah JSON dokumen yang terdiri dari satu atau lebih pernyataan. Masing-masing pernyataan memiliki struktur sebagai berikut.

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ] }

Ada berbagai elemen yang membentuk pernyataan:

  • Efek: Efek bisa berupa Allow atau Deny. Secara default, pengguna tidak memiliki izin untuk menggunakan sumber daya dan API tindakan, sehingga semua permintaan ditolak. izin eksplisit akan menggantikan izin default. penolakan eksplisit akan menggantikan izin apa pun.

  • Tindakan: Tindakan adalah API tindakan spesifik yang Anda berikan atau penolakan izin. Untuk mempelajari tentang cara menentukan tindakan, lihat Tindakan untuk Amazon EC2.

  • Sumber daya: Sumber daya yang dipengaruhi oleh tindakan. Beberapa EC2 API tindakan Amazon memungkinkan Anda untuk menyertakan sumber daya tertentu dalam kebijakan Anda yang dapat dibuat atau dimodifikasi oleh tindakan. Anda menentukan sumber daya menggunakan Amazon Resource Name (ARN) atau menggunakan wildcard (*) untuk menunjukkan bahwa pernyataan tersebut berlaku untuk semua sumber daya. Untuk informasi selengkapnya, lihat Izin tingkat sumber daya yang didukung untuk tindakan Amazon EC2 API.

  • Syarat: Syarat-syarat bersifat opsional. Syarat-syarat ini dapat digunakan untuk mengendalikan kapan kebijakan Anda berlaku. Untuk informasi selengkapnya tentang menentukan kondisi untuk AmazonEC2, lihatKunci kondisi untuk Amazon EC2.

Untuk informasi selengkapnya tentang persyaratan IAMJSONkebijakan, lihat referensi kebijakan di Panduan IAM Pengguna. Misalnya pernyataan IAM kebijakan untuk AmazonEC2, lihatContoh kebijakan untuk mengontrol akses Amazon EC2 API.

Tindakan untuk Amazon EC2

Dalam pernyataan IAM kebijakan, Anda dapat menentukan API tindakan apa pun dari layanan apa pun yang mendukungIAM. Untuk AmazonEC2, gunakan awalan berikut dengan nama API tindakan:ec2:. Misalnya: ec2:RunInstances dan ec2:CreateImage.

Untuk menetapkan beberapa tindakan dalam satu pernyataan, pisahkan tindakan-tindakan tersebut menggunakan koma seperti berikut:

"Action": ["ec2:action1", "ec2:action2"]

Anda juga dapat menentukan beberapa tindakan menggunakan wildcard. Sebagai contoh, Anda dapat menentukan semua tindakan yang namanya dimulai dengan kata “Describe” seperti berikut ini:

"Action": "ec2:Describe*"
catatan

Saat ini, API tindakan Amazon EC2 Describe* tidak mendukung izin tingkat sumber daya. Untuk informasi selengkapnya tentang izin tingkat sumber daya untuk Amazon, lihat. EC2 Kebijakan berbasis identitas untuk Amazon EC2

Untuk menentukan semua EC2 API tindakan Amazon, gunakan wildcard * sebagai berikut:

"Action": "ec2:*"

Untuk daftar EC2 tindakan Amazon, lihat Tindakan yang ditentukan oleh Amazon EC2 di Referensi Otorisasi Layanan.

Izin tingkat sumber daya yang didukung untuk tindakan Amazon EC2 API

Izin tingkat sumber daya mengacu pada kemampuan untuk menentukan sumber daya mana yang boleh digunakan oleh para pengguna untuk melakukan tindakan. Amazon EC2 memiliki sebagian dukungan untuk izin tingkat sumber daya. Ini berarti bahwa untuk EC2 tindakan Amazon tertentu, Anda dapat mengontrol kapan pengguna diizinkan untuk menggunakan tindakan tersebut berdasarkan kondisi yang harus dipenuhi, atau sumber daya tertentu yang diizinkan untuk digunakan pengguna. Misalnya, Anda dapat memberikan izin kepada pengguna untuk meluncurkan instance, tetapi hanya untuk jenis tertentu, dan hanya menggunakan yang spesifik. AMI

Untuk menentukan sumber daya dalam pernyataan IAM kebijakan, gunakan Nama Sumber Daya Amazon (ARN). Untuk informasi selengkapnya tentang menentukan ARN nilai, lihatNama Sumber Daya Amazon (ARNs) untuk Amazon EC2. Jika API tindakan tidak mendukung individuARNs, Anda harus menggunakan wildcard (*) untuk menentukan bahwa semua sumber daya dapat terpengaruh oleh tindakan tersebut.

Untuk melihat tabel yang mengidentifikasi EC2 API tindakan Amazon mana yang mendukung izin tingkat sumber daya, serta kunci kondisi ARNs dan yang dapat digunakan dalam kebijakan, lihat Tindakan, sumber daya, dan kunci kondisi untuk Amazon. EC2

Ingatlah bahwa Anda dapat menerapkan izin tingkat sumber daya berbasis tag dalam kebijakan yang IAM Anda gunakan untuk tindakan Amazon. EC2 API Hal ini akan memberikan Anda kontrol yang lebih baik atas sumber daya yang dapat dibuat, dimodifikasi, atau digunakan oleh seorang pengguna. Untuk informasi selengkapnya, lihat Berikan izin untuk menandai EC2 sumber daya Amazon selama pembuatan.

Nama Sumber Daya Amazon (ARNs) untuk Amazon EC2

Setiap pernyataan IAM kebijakan berlaku untuk sumber daya yang Anda tentukan menggunakan merekaARNs.

An ARN memiliki sintaks umum berikut:

arn:aws:[service]:[region]:[account-id]:resourceType/resourcePath
layanan

Layanan (contohnya, ec2).

wilayah

Wilayah untuk sumber daya (contohnya, us-east-1).

account-id

ID AWS akun, tanpa tanda hubung (misalnya,123456789012).

resourceType

Jenis dari sumber daya (misalnya, instance).

resourcePath

jalur yang mengidentifikasi sumber daya. Anda dapat menggunakan wildcard * dalam jalur Anda.

Misalnya, Anda dapat menunjukkan instance (i-1234567890abcdef0) tertentu dalam pernyataan Anda menggunakan ARN sebagai berikut.

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"

Anda dapat menentukan semua instans yang menjadi milik dari akun tertentu menggunakan wildcard * seperti berikut ini.

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"

Anda juga dapat menentukan semua EC2 sumber daya Amazon milik akun tertentu dengan menggunakan wildcard * sebagai berikut.

"Resource": "arn:aws:ec2:us-east-1:123456789012:*"

Untuk menentukan semua sumber daya, atau jika API tindakan tertentu tidak mendukungARNs, gunakan wildcard * dalam Resource elemen sebagai berikut.

"Resource": "*"

Banyak EC2 API tindakan Amazon melibatkan banyak sumber daya. Misalnya, AttachVolume melampirkan EBS volume Amazon ke instance, sehingga pengguna harus memiliki izin untuk menggunakan volume dan instance. Untuk menentukan beberapa sumber daya dalam satu pernyataan, pisahkan ARNs dengan koma, sebagai berikut.

"Resource": ["arn1", "arn2"]

Untuk daftar EC2 sumber daya Amazon, lihat Jenis sumber daya yang ditentukan oleh Amazon EC2. ARNs

Kunci kondisi untuk Amazon EC2

di pernyataan kebijakan, Anda dapat secara opsional menentukan syarat yang mengontrol kapan pernyataan tersebut berlaku. Setiap syarat mengandung satu atau beberapa pasangan nilai-kunci . Kunci syarat tidak memedulikan huruf besar atau kecil. Kami telah menetapkan kunci kondisi AWS global, ditambah kunci kondisi khusus layanan tambahan.

Untuk daftar kunci kondisi khusus layanan untuk AmazonEC2, lihat Kunci kondisi untuk Amazon. EC2 Amazon EC2 juga mengimplementasikan kunci kondisi AWS global. Untuk informasi selengkapnya, lihat Informasi yang tersedia di semua permintaan di Panduan IAM Pengguna.

Semua EC2 tindakan Amazon mendukung kunci aws:RequestedRegion dan ec2:Region kondisi. Untuk informasi selengkapnya, lihat Contoh: Membatasi akses ke suatu Wilayah tertentu.

Untuk menggunakan kunci kondisi dalam IAM kebijakan Anda, gunakan Condition pernyataan tersebut. Sebagai contoh, kebijakan berikut memberikan izin kepada para pengguna untuk menambah dan menghapus aturan ke dalam dan ke luar untuk grup keamanan apa pun. Ini menggunakan kunci ec2:Vpc kondisi untuk menentukan bahwa tindakan ini hanya dapat dilakukan pada grup keamanan tertentuVPC.

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress"], "Resource": "arn:aws:ec2:region:account:security-group/*", "Condition": { "StringEquals": { "ec2:Vpc": "arn:aws:ec2:region:account:vpc/vpc-11223344556677889" } } } ] }

Jika Anda menentukan beberapa kondisi, atau beberapa kunci dalam satu kondisi, kami mengevaluasi mereka menggunakan AND operasi logis. Jika Anda menentukan satu syarat dengan beberapa nilai untuk satu kunci, kami akan mengevaluasi syarat tersebut menggunakan operasi logika OR. Agar izin bisa diberikan, semua syarat harus terpenuhi.

Anda juga dapat menggunakan placeholder saat menentukan syarat. Untuk informasi selengkapnya, lihat elemen IAM kebijakan: Variabel dan tag di Panduan IAM Pengguna.

penting

Banyak kunci kondisi khusus untuk sumber daya, dan beberapa API tindakan menggunakan banyak sumber daya. Jika Anda menyusun kebijakan dengan kunci syarat, gunakan elemen Resource dari pernyataan tersebut untuk menentukan sumber daya yang padanya kunci syarat tersebut berlaku. Jika tidak, kebijakan ini dapat membuat pengguna tidak bisa melakukan tindakan sama sekali, karena pemeriksaan syarat gagal sebab kunci syarat tidak berlaku terhadap sumber daya tersebut. Jika Anda tidak ingin menentukan sumber daya, atau jika Anda telah menulis Action elemen kebijakan untuk menyertakan beberapa API tindakan, Anda harus menggunakan tipe ...IfExists kondisi untuk memastikan bahwa kunci kondisi diabaikan untuk sumber daya yang tidak menggunakannya. Untuk informasi lebih lanjut, lihat... IfExists Ketentuan dalam Panduan IAM Pengguna.

Kunci syarat ec2:Attribute

Kunci syarat ec2:Attribute dapat digunakan untuk syarat-syarat yang memfilter akses berdasarkan atribut sumber daya.

Kunci kondisi ini hanya mendukung properti yang bertipe data primitif (seperti string atau bilangan bulat), atau AttributeValueobjek kompleks yang hanya berisi properti Nilai (seperti Deskripsi atau ImdsSupportobjek tindakan). ModifyImageAttributeAPI Kunci kondisi tidak dapat digunakan dengan objek kompleks yang berisi beberapa properti, seperti LaunchPermissionobjek dari ModifyImageAttribute.

Misalnya, kebijakan berikut menggunakan kunci ec2:Attribute/Description kondisi untuk memfilter akses berdasarkan objek Description kompleks dari ModifyImageAttributeAPItindakan tersebut. Kunci syarat hanya mengizinkan permintaan yang memodifikasi deskripsi citra ke Production atau Development.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute/Description": [ "Production", "Development" ] } } } ] }

Contoh kebijakan berikut menggunakan kunci ec2:Attribute kondisi untuk memfilter akses oleh properti Atribut primitif dari ModifyImageAttributeAPItindakan. Kunci syarat menolak semua permintaan yang berusaha memodifikasi deskripsi citra.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "ec2:ModifyImageAttribute", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { "ec2:Attribute": "Description" } } } ] }

Kunci syarat ec2:ResourceID

Saat menggunakan kunci ec2:ResourceID kondisi berikut dengan API tindakan yang ditentukan, nilai kunci kondisi digunakan untuk menentukan sumber daya yang dihasilkan yang dibuat oleh API tindakan. ec2:ResourceIDkunci kondisi tidak dapat digunakan untuk menentukan sumber daya yang ditentukan dalam API permintaan. Jika Anda menggunakan salah satu kunci ec2:ResourceID kondisi berikut dengan yang ditentukanAPI, maka Anda harus selalu menentukan wildcard (*). Jika Anda menentukan nilai yang berbeda, syarat tersebut selalu diselesaikan dengan * selama runtime. Misalnya, untuk menggunakan tombol ec2:ImageId kondisi dengan CopyImageAPI, maka Anda harus menentukan kunci kondisi sebagai berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-*", "Condition": { "StringEquals": { ec2:ImageID": "*" } } } ] }

Kami menyarankan Anda menghindari penggunaan tombol kondisi ini dengan API tindakan ini:

  • ec2:DhcpOptionsIDCreateDhcpOptions

  • ec2:ImageIDCopyImage,CreateImage,ImportImage, dan RegisterImage

  • ec2:InstanceIDRunInstances dan ImportInstance

  • ec2:InternetGatewayIDCreateInternetGateway

  • ec2:NetworkAclIDCreateNetworkAcl

  • ec2:NetworkInterfaceIDCreateNetworkInterface

  • ec2:PlacementGroupNameCreatePlacementGroup

  • ec2:RouteTableIDCreateRouteTable

  • ec2:SecurityGroupIDCreateSecurityGroup

  • ec2:SnapshotIDCopySnapshot,CreateSnapshot,CreateSnapshots, dan ImportSnapshots

  • ec2:SubnetIDCreateSubnet

  • ec2:VolumeIDCreateVolume dan ImportVolume

  • ec2:VpcIDCreateVpc

  • ec2:VpcPeeringConnectionIDCreateVpcPeeringConnection

Untuk memfilter akses berdasarkan sumber daya tertentuIDs, sebaiknya gunakan elemen Resource kebijakan sebagai berikut.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CopyImage", "Resource": "arn:aws:ec2:us-east-1::image/ami-01234567890abcdef" } ] }

Kunci syarat ec2:SourceInstanceARN

Gunakan ec2:SourceInstanceARN untuk menentukan ARN contoh dari mana permintaan dibuat. Ini adalah kunci kondisi AWS global, yang berarti Anda dapat menggunakannya dengan layanan selain AmazonEC2. Untuk contoh kebijakan, lihatContoh: Izinkan instance tertentu untuk melihat sumber daya di AWS layanan lain.

Kontrol akses menggunakan akses berbasis atribut

Saat membuat IAM kebijakan yang memberi pengguna izin untuk menggunakan EC2 sumber daya, Anda dapat menyertakan informasi tag dalam Condition elemen kebijakan untuk mengontrol akses berdasarkan tag. Ini dikenal sebagai Attribute-based Access Control ()ABAC. ABACmemberikan kontrol yang lebih baik atas sumber daya yang dapat dimodifikasi, digunakan, atau dihapus oleh pengguna. Untuk informasi lebih lanjut, lihat ABACUntuk apa AWS?

Sebagai contoh, Anda dapat membuat kebijakan yang memungkinkan para pengguna untuk mengakhiri instans, tetapi menolak tindakan itu jika instans tersebut memiliki tanda environment=production. Untuk melakukan hal ini, Anda bisa menggunakan kunci syarat aws:ResourceTag untuk mengizinkan atau menolak akses ke sumber daya berdasarkan tanda yang dilampirkan pada sumber daya.

"StringEquals": { "aws:ResourceTag/environment": "production" }

Untuk mengetahui apakah EC2 API tindakan Amazon mendukung pengendalian akses menggunakan kunci aws:ResourceTag kondisi, lihat Tindakan, sumber daya, dan kunci kondisi untuk Amazon EC2. Perhatikan bahwa tindakan Describe tidak mendukung izin tingkat sumber daya, sehingga Anda harus menentukannya dalam pernyataan terpisah yang tidak disertai syarat.

Misalnya IAM kebijakan, lihatContoh kebijakan untuk mengontrol akses Amazon EC2 API.

Jika Anda mengizinkan atau menolak akses para pengguna ke sumber daya berdasarkan tanda, maka Anda harus mempertimbangkan untuk menolak secara eksplisit memberikan kemampuan kepada pengguna untuk menambahkan atau menghapus tanda tersebut dari sumber daya yang sama. Jika tidak, pengguna dapat mengakali pembatasan Anda dan mendapatkan akses atas sumber daya dengan melakukan modifikasi pada tanda dari sumber daya tersebut.

Berikan izin kepada pengguna, grup, dan peran

Untuk memberikan akses, menambahkan izin ke pengguna, grup, atau peran Anda:

Memeriksa apakah pengguna memiliki izin yang diperlukan

Setelah membuat IAM kebijakan, sebaiknya periksa apakah kebijakan tersebut memberi pengguna izin untuk menggunakan API tindakan dan sumber daya tertentu yang mereka butuhkan sebelum memasukkan kebijakan tersebut ke dalam produksi.

Pertama, buat pengguna untuk tujuan pengujian, lalu lampirkan IAM kebijakan yang Anda buat ke pengguna pengujian. Kemudian, buatlah permintaan sebagai pengguna uji.

Jika EC2 tindakan Amazon yang Anda uji membuat atau memodifikasi sumber daya, Anda harus membuat permintaan menggunakan DryRun parameter (atau menjalankan AWS CLI perintah dengan --dry-run opsi). Dalam hal ini, perintah akan menyelesaikan pemeriksaan otorisasi, tetapi tidak akan menyelesaikan operasi. Sebagai contoh, Anda dapat memeriksa apakah pengguna dapat mengakhiri instans tertentu tanpa benar-benar mengakhirinya. Jika pengguna uji tersebut memiliki izin yang diperlukan, maka permintaan itu akan menampilkan DryRunOperation; jika tidak, UnauthorizedOperation yang akan ditampilkan.

Jika kebijakan tersebut tidak memberikan izin kepada pengguna seperti yang Anda harapkan, atau terlalu longgar dalam memberikan izin, maka Anda dapat menyesuaikan kebijakan itu sesuai kebutuhan Anda dan menguji ulang hingga Anda mendapatkan hasil yang Anda inginkan.

penting

Pengujian ini dapat memakan waktu beberapa menit sebelum perubahan terjadi pada kebijakan untuk ditransmisikan sebelum diberlakukan. Oleh karena itu, kami merekomendasikan Anda memberikan waktu lima menit sebelum Anda menguji pembaruan kebijakan Anda.

Jika pemeriksaan otorisasi gagal, maka permintaan akan menampilkan informasi berenkode yang memuat informasi diagnostik. Anda dapat melakukan dekode pada pesan tersebut menggunakan tindakan DecodeAuthorizationMessage. Untuk informasi selengkapnya, lihat DecodeAuthorizationMessagedi AWS Security Token Service APIReferensi, dan decode-authorization-messagedi Referensi AWS CLI Perintah.