Saya menggunakan perintah "aws ec2 run-instances" (dari AWS Command Line Interface (CLI) ) untuk meluncurkan instance Amazon EC2 . Saya ingin menetapkan peran IAM untuk instance EC2 yang saya luncurkan. Peran IAM dikonfigurasikan dan saya dapat menggunakannya dengan sukses saat meluncurkan instance dari UI web AWS. Tetapi ketika saya mencoba melakukan ini menggunakan perintah itu, dan opsi "--iam-instance-profile", gagal. Melakukan "aws ec2 run-instance help" menunjukkan Arn = dan Name = subbidang untuk nilainya. Ketika saya mencoba mencari Arn menggunakan "aws iam list-instance-profiles" itu memberikan pesan kesalahan ini:
Terjadi kesalahan klien (AccessDenied): Pengguna: arn: aws: sts :: xxxxxxxxxxxx: asumsi-peran / shell / i-15c2766d tidak diizinkan melakukan: iam: ListInstanceProfiles pada sumber daya: arn: aws: iam :: xxxxxxxxxxxx: instance -Profil/
(di mana xxxxxxxxxxxx adalah nomor akun AWS 12 digit saya)
Saya mencari string Arn melalui web UI dan menggunakannya melalui "--iam-instance-profile Arn = arn: aws: iam :: xxxxxxxxxxxx: instance-profile / shell" pada perintah run-instance, dan gagal dengan :
Terjadi kesalahan klien (UnauthorizedOperation): Anda tidak berwenang untuk melakukan operasi ini.
Jika saya mengabaikan opsi "--iam-instance-profile" sepenuhnya, instance akan diluncurkan tetapi tidak memiliki pengaturan peran IAM yang saya butuhkan. Jadi izin tampaknya ada hubungannya dengan menggunakan "--iam-instance-profile" atau mengakses data IAM. Saya mengulangi beberapa kali dalam kasus gangguan AWS (kadang-kadang terjadi) dan tidak berhasil.
Saya menduga bahwa mungkin ada batasan bahwa instance dengan peran IAM tidak diizinkan untuk meluncurkan instance dengan peran IAM yang lebih kuat. Tetapi dalam kasus ini, contoh saya melakukan perintah di memiliki peran IAM yang sama yang saya coba gunakan. bernama "shell" (meskipun saya juga mencoba menggunakan yang lain, tidak beruntung).
Apakah menetapkan peran IAM bahkan tidak diizinkan dari sebuah instance (melalui kredensial peran IAM-nya)?
Apakah ada beberapa izin peran IAM yang lebih tinggi diperlukan untuk menggunakan peran IAM, daripada yang diperlukan untuk hanya meluncurkan contoh sederhana?
Apakah "--iam-instance-profile" cara yang tepat untuk menentukan peran IAM?
Apakah saya perlu menggunakan subset dari string Arn, atau memformatnya dengan cara lain?
Apakah mungkin untuk mengatur peran IAM yang dapat melakukan akses peran IAM apa pun (mungkin "Super Root IAM" ... mengarang nama ini)?
FYI, semuanya melibatkan Linux yang berjalan pada instance. Juga, saya menjalankan semua ini dari sebuah instance karena saya tidak bisa menginstal alat ini di desktop saya. Itu dan saya tidak ingin menempatkan kredensial pengguna IAM saya pada penyimpanan AWS seperti yang disarankan oleh AWS di sini .
setelah dijawab:
Saya tidak menyebutkan izin peluncuran contoh "PowerUserAccess" (vs "AdministratorAccess") karena saya tidak menyadari akses tambahan diperlukan pada saat pertanyaan diajukan. Saya berasumsi bahwa peran IAM adalah "informasi" yang melekat pada peluncuran. Tetapi sebenarnya lebih dari itu. Itu adalah pemberian izin.
sumber
Untuk meluncurkan instance EC2 dengan peran IAM memerlukan akses administratif ke fasilitas IAM. Ini berlaku bahkan jika instance baru memiliki peran yang sama persis dengan instance yang melakukan peluncuran. Contoh yang saya luncurkan dari memiliki izin "PowerUserAccess", yang memungkinkan peluncuran contoh, tetapi tidak akses peran IAM. Setelah saya mengajukan izin dalam contoh peluncuran ke "AdministratorAccess" kemudian berhasil.
Karena peran IAM memberikan izin, jelas ada masalah keamanan yang harus diatasi. Anda tidak ingin peran IAM menjadi sarana untuk memungkinkan eskalasi izin. Tetapi ini juga berarti untuk memberikan peran IAM, instance peluncuran harus memiliki "AdministratorAccess" atau menggunakan akses pengguna / kunci rahasia (dengan izin tersebut) dari dalam instance (tidak disarankan), yang akan memungkinkan pemberian peran IAM.
Mampu meluncurkan instance dengan izin yang sama (peran IAM yang sama) seperti yang dimiliki oleh instance yang melakukan launching akan berguna, tetapi EC2 atau IAM tidak memiliki tingkat granularitas ini, atau tidak memiliki sarana untuk memverifikasi ini dengan aman. .
sumber