Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan IAM peran untuk memberikan izin ke aplikasi yang berjalan di instans Amazon EC2
Aplikasi yang berjalan pada EC2 instans Amazon harus menyertakan AWS kredensi dalam permintaan. AWS API Anda dapat meminta pengembang Anda menyimpan AWS kredensil langsung dalam EC2 instans Amazon dan mengizinkan aplikasi dalam contoh itu untuk menggunakan kredensil tersebut. Tetapi pengembang kemudian harus mengelola kredensil dan memastikan bahwa mereka meneruskan kredensil dengan aman ke setiap EC2 instance dan memperbarui setiap instans Amazon ketika saatnya memperbarui kredensil. Banyak pekerjaan tambahan.
Sebagai gantinya, Anda dapat dan harus menggunakan IAM peran untuk mengelola kredensil sementara untuk aplikasi yang berjalan di instans AmazonEC2. Saat Anda menggunakan peran, Anda tidak perlu mendistribusikan kredenal jangka panjang (seperti kredenal masuk atau kunci akses) ke instans Amazon. EC2 Sebagai gantinya, peran menyediakan izin sementara yang dapat digunakan aplikasi saat mereka melakukan panggilan ke AWS sumber daya lain. Saat meluncurkan EC2 instans Amazon, Anda menentukan IAM peran yang akan diasosiasikan dengan instance tersebut. Aplikasi yang berjalan pada instance kemudian dapat menggunakan kredenal sementara yang disediakan peran untuk menandatangani permintaan. API
Menggunakan peran untuk memberikan izin ke aplikasi yang berjalan di EC2 instans Amazon memerlukan sedikit konfigurasi tambahan. Aplikasi yang berjalan pada EC2 instance Amazon diabstraksikan AWS oleh sistem operasi tervirtualisasi. Karena pemisahan ekstra ini, Anda memerlukan langkah tambahan untuk menetapkan AWS peran dan izin terkait ke EC2 instans Amazon dan membuatnya tersedia untuk aplikasinya. Langkah ekstra ini adalah pembuatan profil instance yang dilampirkan ke instance. Profil instans berisi peran dan dapat memberikan kredensial sementara peran ke aplikasi yang berjalan pada instans. Kredensi sementara tersebut kemudian dapat digunakan dalam API panggilan aplikasi untuk mengakses sumber daya dan untuk membatasi akses hanya ke sumber daya yang ditentukan oleh peran tersebut.
catatan
Hanya satu peran yang dapat ditetapkan ke EC2 instans Amazon pada satu waktu, dan semua aplikasi pada instance berbagi peran dan izin yang sama. Saat memanfaatkan Amazon ECS untuk mengelola EC2 instans Amazon, Anda dapat menetapkan peran ke ECS tugas Amazon yang dapat dibedakan dari peran EC2 instans Amazon yang dijalankannya. Menetapkan setiap tugas peran selaras dengan prinsip akses yang paling tidak memiliki hak istimewa dan memungkinkan kontrol terperinci yang lebih besar atas tindakan dan sumber daya.
Untuk informasi selengkapnya, lihat Menggunakan IAM peran dengan ECS tugas Amazon di Panduan Praktik Terbaik Amazon Elastic Container Service.
Penggunaan peran dengan cara ini memiliki beberapa keuntungan. Karena kredensi peran bersifat sementara dan diperbarui secara otomatis, Anda tidak perlu mengelola kredensil, dan Anda tidak perlu khawatir tentang risiko keamanan jangka panjang. Selain itu, jika Anda menggunakan satu peran untuk beberapa instance, Anda dapat membuat perubahan pada satu peran tersebut dan perubahan tersebut menyebar secara otomatis ke semua instance.
catatan
Meskipun peran biasanya ditetapkan ke EC2 instans Amazon saat Anda meluncurkannya, peran juga dapat dilampirkan ke EC2 instans Amazon yang sedang berjalan. Untuk mempelajari cara melampirkan peran ke instance yang sedang berjalan, lihat IAMPeran untuk Amazon EC2.
Topik
Bagaimana cara kerja peran untuk EC2 instans Amazon?
Pada gambar berikut, pengembang menjalankan aplikasi pada EC2 instance Amazon yang memerlukan akses ke bucket S3 bernamaphotos
. Administrator membuat peran Get-pics
layanan dan melampirkan peran tersebut ke EC2 instans Amazon. Peran ini mencakup kebijakan izin yang memberikan akses hanya-baca ke bucket S3 tertentu. Ini juga mencakup kebijakan kepercayaan yang memungkinkan EC2 instans Amazon untuk mengambil peran dan mengambil kredensi sementara. Saat aplikasi berjalan pada instans, itu menggunakan kredensial sementara peran untuk mengakses bucket foto. Administrator tidak perlu memberikan izin kepada developer untuk mengakses bucket foto, dan developer tidak perlu membagikan atau mengelola kredensial.
![Aplikasi pada EC2 instans Amazon yang mengakses sumber daya AWS](images/roles-usingrole-ec2roleinstance.png)
-
Administrator menggunakan IAM untuk membuat
Get-pics
peran. Dalam kebijakan kepercayaan peran, administrator menetapkan bahwa hanya EC2 instans Amazon yang dapat mengambil peran tersebut. Dalam kebijakan izin peran, administrator menentukan izin hanya-baca untuk bucketphotos
. -
Pengembang meluncurkan EC2 instance Amazon dan menetapkan
Get-pics
peran tersebut ke instance tersebut.catatan
Jika Anda menggunakan IAM konsol, profil instance dikelola untuk Anda dan sebagian besar transparan bagi Anda. Namun, jika Anda menggunakan AWS CLI atau API untuk membuat dan mengelola peran dan EC2 instans Amazon, maka Anda harus membuat profil instance dan menetapkan peran tersebut sebagai langkah terpisah. Kemudian, saat Anda meluncurkan instans, Anda harus menentukan nama profil instans dan bukan nama peran.
-
Saat aplikasi berjalan, aplikasi memperoleh kredensil keamanan sementara dari metadata EC2 instans Amazon, seperti yang dijelaskan dalam Mengambil Kredensial Keamanan dari Metadata Instance. Ini adalah kredensial keamanan sementara yang mewakili peran tersebut dan berlaku untuk periode waktu yang terbatas.
Dengan beberapa AWS SDKs
, pengembang dapat menggunakan penyedia yang mengelola kredenal keamanan sementara secara transparan. (Dokumentasi untuk individu AWS SDKs menjelaskan fitur yang didukung oleh itu SDK untuk mengelola kredensi.) Atau, aplikasi bisa mendapatkan kredensi sementara langsung dari metadata instance dari instans Amazon. EC2 Kredensial dan nilai terkait tersedia dari kategori
iam/security-credentials/
(dalam hal ini,role-name
iam/security-credentials/Get-pics
) metadata. Jika aplikasi mendapatkan kredensial dari metadata instans, itu dapat menyimpan kredensial tersebut. -
Dengan menggunakan kredensial sementara yang diambil, aplikasi mengakses bucket foto. Karena kebijakan terlampir pada peran
Get-pics
, aplikasi memiliki izin hanya-baca.Kredensi keamanan sementara yang tersedia pada instans secara otomatis diperbarui sebelum kedaluwarsa sehingga set yang valid selalu tersedia. Aplikasi hanya perlu memastikan bahwa itu mendapatkan serangkaian kredensial baru dari metadata instans sebelum metadata yang sedang digunakan kedaluwarsa. Dimungkinkan untuk menggunakan AWS SDK untuk mengelola kredensil sehingga aplikasi tidak perlu menyertakan logika tambahan untuk menyegarkan kredensil. Misalnya, membuat instan klien dengan Penyedia Kredensial Profil Instans. Namun, jika aplikasi mendapatkan kredensial keamanan sementara dari metadata instans dan sudah menyimpannya, itu akan mendapatkan rangkaian kredensial yang diperbarui setiap jam, atau setidaknya 15 menit sebelum rangkaian yang sedang digunakan kedaluwarsa. Waktu kedaluwarsa termasuk dalam informasi yang dikembalikan dalam kategori.
iam/security-credentials/
role-name
Izin diperlukan untuk menggunakan peran dengan Amazon EC2
Untuk meluncurkan instance dengan peran, pengembang harus memiliki izin untuk meluncurkan EC2 instans Amazon dan izin untuk meneruskan IAM peran.
Kebijakan contoh berikut memungkinkan pengguna untuk menggunakan AWS Management Console untuk meluncurkan instance dengan peran. Kebijakan ini mencakup wildcard (*
) untuk memungkinkan pengguna meneruskan peran apa pun dan melakukan EC2 tindakan Amazon yang terdaftar. ListInstanceProfiles
Tindakan ini memungkinkan pengguna untuk melihat semua peran yang tersedia di Akun AWS.
contoh Contoh kebijakan yang memberikan izin kepada pengguna untuk menggunakan EC2 konsol Amazon untuk meluncurkan instance dengan peran apa pun
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "ec2.amazonaws.com" } } }, { "Sid": "ListEc2AndListInstanceProfiles", "Effect": "Allow", "Action": [ "iam:ListInstanceProfiles", "ec2:Describe*", "ec2:Search*", "ec2:Get*" ], "Resource": "*" } ] }
Membatasi peran mana yang dapat diteruskan ke EC2 instans Amazon (menggunakan) PassRole
Anda dapat menggunakan PassRole
izin untuk membatasi peran mana yang dapat diteruskan pengguna ke EC2 instans Amazon saat pengguna meluncurkan instance. Ini membantu mencegah pengguna menjalankan aplikasi yang memiliki izin lebih dari yang diberikan kepada pengguna—yaitu, agar dapat memperoleh hak istimewa yang ditingkatkan. Misalnya, bayangkan bahwa pengguna Alice memiliki izin hanya untuk meluncurkan EC2 instans Amazon dan bekerja dengan bucket Amazon S3, tetapi peran yang dia berikan ke EC2 instance Amazon memiliki izin untuk bekerja dengan dan Amazon DynamoDB. IAM Dalam hal ini, Alice mungkin dapat meluncurkan instance, masuk ke dalamnya, mendapatkan kredensil keamanan sementara, dan kemudian melakukan atau tindakan IAM DynamoDB yang tidak dia otorisasi.
Untuk membatasi peran mana yang dapat diteruskan pengguna ke EC2 instans Amazon, Anda membuat kebijakan yang mengizinkan PassRole
tindakan tersebut. Anda kemudian melampirkan kebijakan ke pengguna (atau ke IAM grup yang menjadi milik pengguna) yang akan meluncurkan EC2 instans Amazon. Di Resource
elemen kebijakan, Anda mencantumkan peran atau peran yang diizinkan diteruskan pengguna ke EC2 instans Amazon. Saat pengguna meluncurkan instance dan mengaitkan peran dengannya, Amazon EC2 memeriksa apakah pengguna diizinkan untuk melewati peran itu. Tentu saja, Anda juga harus memastikan bahwa peran yang dapat diteruskan oleh pengguna tidak mencakup lebih banyak izin dari yang seharusnya dimiliki oleh pengguna.
catatan
PassRole
bukan API tindakan dengan cara yang sama seperti itu RunInstances
atau ListInstanceProfiles
apa adanya. Sebagai gantinya, ini ARN adalah izin yang AWS memeriksa setiap kali peran diteruskan sebagai parameter ke API (atau konsol melakukan ini atas nama pengguna). Itu membantu administrator untuk mengontrol peran mana yang dapat diteruskan oleh pengguna yang mana. Dalam hal ini, ini memastikan bahwa pengguna diizinkan untuk melampirkan peran tertentu ke EC2 instance Amazon.
contoh Contoh kebijakan yang memberikan izin kepada pengguna untuk meluncurkan EC2 instans Amazon dengan peran tertentu
Kebijakan contoh berikut memungkinkan pengguna menggunakan Amazon EC2 API untuk meluncurkan instance dengan peran. Resource
Elemen menentukan Amazon Resource Name (ARN) peran. Dengan menentukanARN, kebijakan memberi pengguna izin untuk hanya meneruskan peran. Get-pics
Jika pengguna mencoba menentukan peran yang berbeda saat meluncurkan suatu instans, tindakan tersebut gagal. Pengguna memang memiliki izin untuk menjalankan setiap instans, terlepas dari apakah mereka meneruskan suatu peran.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::
account-id
:role/Get-pics" } ] }
Memungkinkan peran profil instans untuk beralih ke peran dalam akun lain
Anda dapat mengizinkan aplikasi yang berjalan pada EC2 instans Amazon untuk menjalankan perintah di akun lain. Untuk melakukan ini, Anda harus mengizinkan peran EC2 instans Amazon di akun pertama untuk beralih ke peran di akun kedua.
Bayangkan Anda menggunakan dua Akun AWS dan Anda ingin mengizinkan aplikasi yang berjalan pada EC2 instance Amazon untuk menjalankan AWS CLI111111111111
. Instance tersebut menyertakan peran profil abcd
instance yang memungkinkan aplikasi melakukan tugas Amazon S3 hanya-baca di bucket dalam akun my-bucket-1
yang sama. 111111111111
Namun demikian, aplikasi tersebut juga harus diizinkan untuk menjalankan efgh
peran lintas akun untuk mengakses my-bucket-2
bucket Amazon S3 dalam akun 222222222222
.
![Diagram menunjukkan bagaimana pengembang meluncurkan EC2 instans Amazon dengan peran untuk mendapatkan akses ke foto di bucket Amazon S3.](images/roles-instance-profile-cross-account.png)
Peran profil EC2 instans abcd
Amazon harus memiliki kebijakan izin berikut untuk mengizinkan aplikasi mengakses bucket my-bucket-1
Amazon S3:
Akun 111111111111 Kebijakan abcd
Izin Peran
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::my-bucket-1/*", "arn:aws:s3:::my-bucket-1" ] }, { "Sid": "AllowIPToAssumeCrossAccountRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::222222222222:role/efgh" } ] }
abcd
Peran tersebut harus mempercayai EC2 layanan Amazon untuk mengambil peran tersebut. Untuk melakukannya, peran abcd
harus memiliki kebijakan kepercayaan berikut:
Akun 111111111111 Kebijakan abcd
Kepercayaan Peran
{ "Version": "2012-10-17", "Statement": [ { "Sid": "abcdTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"Service": "ec2.amazonaws.com"} } ] }
Anggap bahwa efgh
peran lintas akun memungkinkan tugas Amazon S3 hanya baca di bucket my-bucket-2
dengan akun 222222222222
yang sama. Untuk melakukannya, peran lintas akun efgh
harus memiliki kebijakan izin berikut:
Akun 222222222222 Kebijakan efgh
Izin Peran
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountLevelS3Actions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowListAndReadS3ActionOnMyBucket", "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "arn:aws:s3:::my-bucket-2/*", "arn:aws:s3:::my-bucket-2" ] } ] }
Peran efgh
harus mempercayai profil instans abcd
untuk menjalankannya. Untuk melakukannya, peran efgh
harus memiliki kebijakan kepercayaan berikut:
Akun 222222222222 Kebijakan efgh
Kepercayaan Peran
{ "Version": "2012-10-17", "Statement": [ { "Sid": "efghTrustPolicy", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111111111111:role/abcd"} } ] }
Bagaimana saya memulainya?
Untuk memahami cara kerja peran dengan EC2 instans Amazon, Anda perlu menggunakan IAM konsol untuk membuat peran, meluncurkan EC2 instance Amazon yang menggunakan peran tersebut, lalu memeriksa instance yang sedang berjalan. Anda dapat menguji metadata instans untuk melihat bagaimana kredensial sementara peran tersedia untuk sebuah instans. Anda juga dapat melihat bagaimana aplikasi yang berjalan pada suatu instans dapat menggunakan peran tersebut. Gunakan sumber daya berikut ini untuk mempelajari lebih banyak.
-
IAMPeran di Tutorial EC2 Instans Amazon
. Video tertaut menunjukkan cara menggunakan IAM peran dengan EC2 instans Amazon untuk mengontrol apa yang dapat dilakukan aplikasi saat dijalankan pada instance. Video menunjukkan bagaimana aplikasi (ditulis dalam AWS SDK) bisa mendapatkan kredensi keamanan sementara melalui peran tersebut. -
SDKpenelusuran. AWS SDKDokumentasi mencakup penelusuran yang menunjukkan aplikasi yang berjalan di EC2 instans Amazon yang menggunakan kredensi sementara untuk peran untuk membaca bucket Amazon S3. Setiap penelusuran berikut menyajikan langkah serupa dengan bahasa pemrograman yang berbeda:
-
Konfigurasikan IAM Peran untuk Amazon EC2 dengan SDK for Java di Panduan AWS SDK for Java Pengembang
-
Luncurkan EC2 Instans Amazon menggunakan SDK for. NETdi Panduan AWS SDK for .NET Pengembang
-
Membuat EC2 Instans Amazon dengan SDK for Ruby di Panduan AWS SDK for Ruby Pengembang
-
Informasi terkait
Untuk informasi selengkapnya tentang membuat peran atau peran untuk EC2 instans Amazon, lihat informasi berikut:
-
Untuk informasi selengkapnya tentang penggunaan IAM peran dengan EC2 instans Amazon, buka Panduan EC2 Pengguna Amazon.
-
Untuk membuat peran, lihat IAMpenciptaan peran
-
Untuk informasi lebih lanjut tentang membuat kredensial keamanan sementara, lihat Kredensial keamanan sementara di IAM.
-
Jika Anda bekerja dengan IAM API atauCLI, Anda harus membuat dan mengelola profil IAM instance. Untuk informasi selengkapnya tentang profil instans, lihat Gunakan profil contoh.
-
Untuk informasi selengkapnya tentang kredensil keamanan sementara untuk peran dalam metadata instans, lihat Mengambil Kredensil Keamanan dari Metadata Instance di Panduan Pengguna Amazon. EC2