View a markdown version of this page

Izin Armada Spot - Amazon Elastic Compute Cloud

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

Izin Armada Spot

penting

Spot Fleet menggunakan API lama tanpa investasi yang direncanakan. Sebaiknya gunakan EC2 Fleet atau grup Auto Scaling sebagai gantinya. Untuk informasi selengkapnya, lihat Metode armada mana yang terbaik untuk digunakan?.

Jika pengguna Anda akan membuat atau mengelola Armada Spot, Anda perlu memberinya izin yang diperlukan.

Jika Anda menggunakan konsol Amazon EC2 untuk membuat Armada Spot, konsol ini akan membuat dua peran tertaut layanan bernama AWSServiceRoleForEC2SpotFleet dan AWSServiceRoleForEC2Spot, serta peran bernama aws-ec2-spot-fleet-tagging-role yang memberikan izin kepada Armada Spot untuk meminta, meluncurkan, mengakhiri, dan menandai sumber daya atas nama Anda. Jika Anda menggunakan AWS CLI atau API, Anda harus memastikan bahwa peran ini ada.

Gunakan petunjuk berikut untuk memberikan izin yang diperlukan dan membuat peran.

Memberikan izin kepada pengguna untuk Armada Spot

Jika pengguna Anda akan membuat atau mengelola Armada Spot, pastikan untuk memberinya izin yang diperlukan.

Untuk membuat kebijakan Armada Spot
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Kebijakan, Buat kebijakan.

  3. Di halaman Buat kebijakan, pilih JSON, dan ganti teks dengan yang berikut ini.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:CreateTags", "ec2:RequestSpotFleet", "ec2:ModifySpotFleetRequest", "ec2:CancelSpotFleetRequests", "ec2:DescribeSpotFleetRequests", "ec2:DescribeSpotFleetInstances", "ec2:DescribeSpotFleetRequestHistory" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/aws-ec2-spot-fleet-tagging-role" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:ListRoles", "iam:ListInstanceProfiles" ], "Resource": "*" } ] }

    Contoh kebijakan sebelumnya memberikan izin yang diperlukan kepada pengguna untuk sebagian besar kasus penggunaan Armada Spot. Untuk membatasi pengguna ke tindakan API tertentu, tentukan hanya tindakan API tersebut saja.

    API EC2 dan IAM yang diperlukan

    API berikut harus disertakan dalam kebijakan:

    • ec2:RunInstances – Diperlukan untuk meluncurkan instans di Armada Spot

    • ec2:CreateTags – Diperlukan untuk menandai permintaan, instans, atau volume Armada Spot

    • iam:PassRole – Diperlukan untuk menentukan peran Armada Spot

    • iam:CreateServiceLinkedRole – Diperlukan untuk membuat peran tertaut-layanan

    • iam:ListRoles – Diperlukan untuk melakukan enumerasi peran IAM yang ada

    • iam:ListInstanceProfiles – Diperlukan untuk melakukan enumerasi profil instans yang sudah ada

    penting

    Jika Anda menentukan peran untuk profil instans IAM dalam spesifikasi peluncuran atau templat peluncuran, Anda harus memberikan izin kepada pengguna untuk meneruskan peran tersebut ke layanan. Untuk melakukan ini, dalam kebijakan IAM sertakan "arn:aws:iam::*:role/IamInstanceProfile-role" sebagai sumber daya untuk tindakan iam:PassRole. Untuk informasi selengkapnya, lihat Memberikan izin pengguna untuk meneruskan peran ke AWS layanan di Panduan Pengguna IAM.

    API Armada Spot

    Tambahkan tindakan API Armada Spot berikut ke kebijakan Anda, jika diperlukan:

    • ec2:RequestSpotFleet

    • ec2:ModifySpotFleetRequest

    • ec2:CancelSpotFleetRequests

    • ec2:DescribeSpotFleetRequests

    • ec2:DescribeSpotFleetInstances

    • ec2:DescribeSpotFleetRequestHistory

    API IAM opsional

    (Opsional) Untuk memungkinkan pengguna membuat peran atau profil instans menggunakan konsol IAM, Anda juga harus menambahkan tindakan berikut ke kebijakan:

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  4. Pilih Tinjau kebijakan.

  5. Pada halaman Tinjau kebijakan, masukkan nama dan deskripsi kebijakan, dan pilih Buat kebijakan.

  6. Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:

Service-linked peran untuk Spot Fleet

Amazon EC2 menggunakan peran tertaut layanan untuk izin yang diperlukan untuk memanggil layanan AWS lain atas nama Anda. Peran terkait layanan adalah jenis peran IAM unik yang ditautkan langsung ke layanan. AWS Service-linked peran menyediakan cara aman untuk mendelegasikan izin ke AWS layanan karena hanya layanan tertaut yang dapat mengambil peran terkait layanan. Untuk informasi selengkapnya, lihat Service-linked peran di Panduan Pengguna IAM.

Amazon EC2 menggunakan peran terkait layanan bernama AWSServiceRoleForEC2Spot Fleet untuk meluncurkan dan mengelola instans atas nama Anda.

penting

Jika Anda menentukan AMI terenkripsi atau snapshot Amazon EBS terenkripsi di Armada Spot Anda, Anda harus memberikan izin peran Ar AWSServiceRoleForEC2Spot mada untuk menggunakan CMK sehingga Amazon EC2 dapat meluncurkan instans atas nama Anda. Untuk informasi selengkapnya, lihat Berikan akses ke CMK untuk digunakan dengan AMI dan snapshot EBS terenkripsi.

Izin yang diberikan oleh AWSServiceRoleForEC2SpotFleet

Peran Ar AWSServiceRoleForEC2Spot mada memberikan izin Armada Spot untuk meminta, meluncurkan, menghentikan, dan menandai instance atas nama Anda. Amazon EC2 menggunakan peran tertaut layanan ini untuk menyelesaikan tindakan berikut:

  • ec2:RequestSpotInstances - Meminta Instans Spot

  • ec2:RunInstances - Meluncurkan instans

  • ec2:TerminateInstances - Mengakhiri instans

  • ec2:DescribeImages - Mendeskripsikan Amazon Machine Image (AMI) untuk instans

  • ec2:DescribeInstanceStatus - Mendeskripsikan status instans

  • ec2:DescribeSubnets - Mendeskripsikan subnet untuk instans

  • ec2:CreateTags - Menambahkan tanda ke permintaan, instans, dan volume Armada Spot

  • elasticloadbalancing:RegisterInstancesWithLoadBalancer - Menambahkan instans yang ditentukan ke penyeimbang beban yang ditentukan

  • elasticloadbalancing:RegisterTargets - Mendaftarkan target yang ditentukan dengan grup target yang ditentukan

Membuat peran tertaut layanan

Dalam sebagian besar situasi, Anda tidak perlu membuat peran tertaut layanan secara manual. Amazon EC2 membuat peran terkait AWSServiceRoleForEC2Spot layanan Armada saat pertama kali Anda membuat Spot Fleet menggunakan konsol.

Jika Anda memiliki permintaan Spot Fleet aktif sebelum Oktober 2017, ketika Amazon EC2 mulai mendukung peran terkait layanan ini, Amazon EC2 membuat peran Ar AWSServiceRoleForEC2Spot mada di akun Anda. AWS Untuk informasi selengkapnya, lihat Peran baru muncul di AWS akun saya di Panduan Pengguna IAM.

Jika Anda menggunakan AWS CLI atau API untuk membuat Spot Fleet, Anda harus terlebih dahulu memastikan bahwa peran ini ada.

Untuk membuat AWSServiceRoleForEC2SpotFleet peran untuk Spot Fleet menggunakan konsol
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Peran.

  3. Pilih Buat peran.

  4. Pada halaman Pilih entitas tepercaya, lakukan hal berikut:

    1. Untuk Ti pe entitas tepercaya, pilih AWS layanan.

    2. Di bawah Kasus penggunaan, untuk Layanan atau kasus penggunaan, pilih EC2.

    3. Untuk kasus penggunaan, pilih EC2 - Spot Fleet.

      catatan

      Kas us penggunaan EC2 - Spot Fleet akan secara otomatis membuat kebijakan dengan izin IAM yang diperlukan dan akan menyarankan AWSEC2SpotFleetServiceRolePolicy sebagai nama peran.

    4. Pilih Berikutnya.

  5. Pada halaman Tambahkan izin, pilih Berikutnya.

  6. Pada halaman Nama, ulasan, dan buat, pilih Buat peran.

Untuk membuat AWSServiceRoleForEC2SpotFleet peran untuk Spot Fleet menggunakan AWS CLI

Gunakan perintah create-service-linked-role sebagai berikut.

aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com

Jika Anda tidak perlu lagi menggunakan Spot Fleet, sebaiknya hapus peran AWSServiceRoleForEC2Spot Armada. Setelah peran ini dihapus dari akun Anda, Amazon EC2 akan membuat peran lagi jika Anda meminta Armada Spot dengan menggunakan konsol. Untuk informasi selengkapnya, lihat Menghapus peran terkait layanan dalam Panduan Pengguna IAM.

Berikan akses ke CMK untuk digunakan dengan AMI dan snapshot EBS terenkripsi

Jika Anda menentukan AMI terenkripsi atau snapshot Amazon EBS terenkripsi dalam permintaan Spot Fleet Anda dan Anda menggunakan kunci yang dikelola pelanggan untuk enkripsi, Anda harus memberikan izin peran Ar AWSServiceRoleForEC2Spot mada untuk menggunakan CMK sehingga Amazon EC2 dapat meluncurkan instans atas nama Anda. Untuk melakukannya, Anda harus menambahkan pemberian izin ke CMK, seperti yang ditunjukkan dalam prosedur berikut.

Ketika memberikan izin, pemberian izin merupakan alternatif dari kebijakan kunci. Untuk informasi selengkapnya, lihat Menggunakan Pemberian Izin dan Menggunakan Kebijakan Kunci di AWS KMS dalam Panduan Developer AWS Key Management Service .

Untuk memberikan izin AWSServiceRoleForEC2SpotFleet peran untuk menggunakan CMK
  • Gunakan perintah create-grant untuk menambahkan hibah ke CMK dan untuk menentukan prinsipal (peran terkait layanan Ar AWSServiceRoleForEC2Spot mada) yang diberi izin untuk melakukan operasi yang diizinkan oleh hibah. CMK ditentukan oleh parameter key-id dan ARN CMK. Prinsip ditentukan oleh grantee-principal parameter dan ARN dari peran terkait AWSServiceRoleForEC2Spot layanan Armada.

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/spotfleet.amazonaws.com/AWSServiceRoleForEC2SpotFleet \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

Service-linked peran untuk Instans Spot

Amazon EC2 menggunakan peran terkait layanan bernamaAWSServiceRoleForEC2Spot untuk meluncurkan dan mengelola Instans Spot atas nama Anda. Untuk informasi selengkapnya, lihat Service-linked peran untuk permintaan Instance Spot.

Peran IAM untuk menandai Armada Spot

Peran IAM aws-ec2-spot-fleet-tagging-role memberikan izin ke Armada Spot untuk menandai permintaan, instans, dan volume Armada Spot. Untuk informasi selengkapnya, lihat Menandai permintaan Spot Fleet baru atau yang sudah ada serta instans serta volume yang diluncurkan.

penting

Jika Anda memilih untuk menandai instans di armada dan Anda juga memilih untuk mempertahankan kapasitas target (permintaan Armada Spot bertipe maintain), perbedaan izin yang ditetapkan untuk pengguna dan IamFleetRole dapat menyebabkan perilaku penandaan instans yang tidak konsisten di armada. Jika IamFleetRole tidak menyertakan izin CreateTags, beberapa instans yang diluncurkan oleh armada mungkin tidak akan ditandai. Sementara kami berusaha memperbaiki inkonsistensi ini, untuk memastikan bahwa semua instans yang diluncurkan oleh armada telah ditandai, kami menyarankan Anda menggunakan peran aws-ec2-spot-fleet-tagging-role untuk IamFleetRole. Atau, untuk menggunakan peran yang ada, lampirkan Kebijakan AmazonEC2SpotFleetTaggingRole AWS Terkelola ke peran yang ada. Jika tidak, Anda perlu menambahkan izin CreateTags secara manual untuk kebijakan yang ada.

Guna membuat peran IAM untuk menandai Armada Spot
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Peran.

  3. Pilih Buat peran.

  4. Pada halaman Pilih entitas tepercaya, di bawah Tipe entitas tepercaya, pilih Layanan AWS .

  5. Di bawah Kasus penggunaan, dari Kasus penggunaan untuk layanan AWS lain, pilih EC2, lalu pilih EC2 - Penandaan Armada Spot.

  6. Pilih Berikutnya.

  7. Pada halaman Tambahkan izin, pilih Berikutnya.

  8. Pada Nama, tinjau, dan buat, untuk Nama peran, masukkan nama untuk peran (misalnya, aws-ec2-spot-fleet-tagging-role).

  9. Tinjau informasi di halaman tersebut, lalu pilih Buat peran.

Cross-service pencegahan wakil yang bingung

Masalah confused deputy adalah masalah keamanan saat entitas yang tidak memiliki izin untuk melakukan suatu tindakan dapat memaksa entitas yang lebih berhak untuk melakukan tindakan tersebut. Sebaiknya gunakan kunci konteks kondisi global aws:SourceArn dan aws:SourceAccount dalam kebijakan kepercayaan aws-ec2-spot-fleet-tagging-role untuk membatasi izin yang diberikan Armada Spot pada layanan lain ke sumber daya.

Untuk menambahkan kunci SourceAccount kondisi aws: SourceArn dan aws: ke kebijakan kepercayaan aws-ec 2-spot-fleet-tagging-role
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi, pilih Peran.

  3. Temukan aws-ec2-spot-fleet-tagging-role yang Anda buat sebelumnya dan pilih tautan (bukan kotak centang).

  4. Di bawah Ringkasan, pilih tab Hubungan kepercayaan, lalu pilih Edit kebijakan kepercayaan.

  5. Dalam pernyataan JSON, tambahkan elemen Condition yang berisi kunci konteks kondisi global aws:SourceAccount dan aws:SourceArn untuk mencegah masalah confused deputy, sebagai berikut:

    "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/sfr-*" }, "StringEquals": { "aws:SourceAccount": "111122223333" }
    catatan

    Jika nilai aws:SourceArn berisi ID akun Anda dan Anda menggunakan kedua kunci konteks kondisi global tersebut, nilai aws:SourceAccount dan akun di nilai aws:SourceArn harus menggunakan ID akun yang sama saat digunakan dalam pernyataan kebijakan yang sama.

    Kebijakan kepercayaan terakhir adalah sebagai berikut:

    JSON
    { "Version":"2012-10-17", "Statement": { "Sid": "ConfusedDeputyPreventionExamplePolicy", "Effect": "Allow", "Principal": { "Service": "spotfleet.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/sfr-*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } } }
  6. Pilih Perbarui kebijakan.

Tabel berikut memberikan nilai potensial untuk aws:SourceArn guna membatasi ruang lingkup aws-ec2-spot-fleet-tagging-role Anda dalam berbagai tingkat kekhususan.

Operasi API Layanan yang dipanggil Lingkup aws:SourceArn
RequestSpotFleet AWS STS (AssumeRole) Batasi kemampuan AssumeRole pada aws-ec2-spot-fleet-tagging-role untuk spot-fleet-requests di akun yang ditentukan. arn:aws:ec2:*:123456789012:spot-fleet-request/sfr-*
RequestSpotFleet AWS STS (AssumeRole) Batasi kemampuan AssumeRole pada aws-ec2-spot-fleet-tagging-role untuk spot-fleet-requests di akun yang ditentukan dan Wilayah yang ditentukan. Perhatikan bahwa peran ini tidak akan dapat digunakan di Wilayah lain. arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-*
RequestSpotFleet AWS STS (AssumeRole) Batasi kemampuan AssumeRole di aws-ec2-spot-fleet-tagging-role hanya pada tindakan yang memengaruhi armada sfr-11111111-1111-1111-1111-111111111111. Perhatikan bahwa peran ini mungkin tidak dapat digunakan untuk Armada Spot lainnya. Selain itu, peran ini tidak dapat digunakan untuk meluncurkan Armada Spot baru melalui request-spot-fleet. arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-11111111-1111-1111-1111-111111111111