Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Putar kunci akses pengguna IAM secara otomatis sesuai skala dengan AWS Organizations dan AWS Secrets Manager
Tracy Hickey, Michael Davie, Arvind Patel, Laura Seletos, dan Gaurav Verma, Amazon Web Services
Ringkasan
Penting: Sebagai praktik terbaik, AWS merekomendasikan agar Anda menggunakan peran AWS Identity and Access Management (IAM) alih-alih pengguna IAM dengan kredensi jangka panjang seperti kunci akses. Pendekatan yang didokumentasikan dalam pola ini hanya ditujukan untuk implementasi lama yang memerlukan kredensil AWS API yang berumur panjang. Untuk implementasi ini, kami tetap menyarankan Anda mempertimbangkan opsi untuk menggunakan kredensil jangka pendek, seperti menggunakan profil instans Amazon Elastic Compute Cloud (Amazon EC2) atau IAM Roles Anywhere. Pendekatan dalam artikel ini hanya untuk kasus-kasus di mana Anda tidak dapat mengubah menggunakan kredensi jangka pendek segera, dan Anda memerlukan kredensi jangka panjang untuk diputar sesuai jadwal. Dengan pendekatan ini, Anda bertanggung jawab untuk memperbarui kode atau konfigurasi aplikasi lama Anda secara berkala untuk menggunakan kredensil API yang diputar. |
---|
Kunci akses adalah kredensil jangka panjang untuk pengguna IAM. Memutar kredensil IAM Anda secara teratur membantu mencegah sekumpulan kunci akses IAM yang disusupi mengakses komponen di akun AWS Anda. Memutar kredensil IAM juga merupakan bagian penting dari praktik terbaik keamanan di IAM.
Pola ini membantu Anda memutar kunci akses IAM secara otomatis dengan menggunakan CloudFormation templat AWS, yang disediakan dalam repositori rotasi kunci GitHub IAM
Pola ini mendukung penerapan dalam satu akun atau beberapa akun. Jika Anda menggunakan AWS Organizations, solusi ini mengidentifikasi semua akun AWS IDs dalam organisasi Anda dan menskalakan secara dinamis saat akun dihapus atau akun baru dibuat. Fungsi AWS Lambda terpusat menggunakan peran IAM yang diasumsikan untuk menjalankan fungsi rotasi secara lokal di beberapa akun yang Anda pilih.
Kunci akses IAM baru dihasilkan ketika kunci akses yang ada berusia 90 hari.
Kunci akses baru disimpan sebagai rahasia di AWS Secrets Manager. Kebijakan berbasis sumber daya hanya mengizinkan prinsipal IAM yang ditentukan untuk mengakses dan mengambil rahasia. Jika Anda memilih untuk menyimpan kunci di akun manajemen, kunci untuk semua akun disimpan di akun manajemen.
Alamat email yang ditetapkan untuk pemilik akun AWS tempat kunci akses baru dibuat menerima pemberitahuan.
Kunci akses sebelumnya dinonaktifkan pada usia 100 hari, dan kemudian dihapus pada usia 110 hari.
Pemberitahuan email terpusat dikirim ke pemilik akun AWS.
Fungsi Lambda dan Amazon CloudWatch secara otomatis melakukan tindakan ini. Anda kemudian dapat mengambil access key pair baru dan menggantinya dalam kode atau aplikasi Anda. Periode rotasi, penghapusan, dan penonaktifan dapat disesuaikan.
Prasyarat dan batasan
Setidaknya satu akun AWS aktif.
AWS Organizations, dikonfigurasi dan diatur (lihat tutorial).
Izin untuk menanyakan AWS Organizations dari akun manajemen Anda. Untuk informasi selengkapnya, lihat AWS Organizations dan peran terkait layanan dalam dokumentasi AWS Organizations.
Prinsipal IAM yang memiliki izin untuk meluncurkan CloudFormation template AWS dan sumber daya terkait. Untuk informasi selengkapnya, lihat Memberikan izin yang dikelola sendiri dalam dokumentasi CloudFormation AWS.
Bucket Amazon Simple Storage Service (Amazon S3) yang sudah ada untuk menyebarkan sumber daya.
Amazon Simple Email Service (Amazon SES) dipindahkan dari kotak pasir. Untuk informasi selengkapnya, lihat Keluar dari kotak pasir Amazon SES di dokumentasi Amazon SES.
Jika Anda memilih untuk menjalankan Lambda di virtual private cloud (VPC), sumber daya berikut, yang harus dibuat sebelum Anda menjalankan template utama: CloudFormation
SEBUAH VPC.
Sebuah subnet.
Titik akhir untuk Amazon SES, AWS Systems Manager, AWS Security Token Service (AWS STS), Amazon S3, dan AWS Secrets Manager. (Anda dapat menjalankan template titik akhir yang disediakan di repositori rotasi kunci GitHub IAM
untuk membuat titik akhir ini.)
Pengguna dan kata sandi Simple Mail Transfer Protocol (SMTP) yang disimpan dalam parameter AWS Systems Manager (parameter SSM). Parameter harus sesuai dengan parameter CloudFormation template utama.
Arsitektur
Tumpukan teknologi
Amazon CloudWatch
Amazon EventBridge
IAM
AWS Lambda
AWS Organizations
Amazon S3
Arsitektur
Diagram berikut menunjukkan komponen dan alur kerja untuk pola ini. Solusinya mendukung dua skenario untuk menyimpan kredensil: di akun anggota dan di akun manajemen.
Opsi 1: Simpan kredensialnya di akun anggota

Opsi 2: Simpan kredensil di akun manajemen

Diagram menunjukkan alur kerja berikut:
Sebuah EventBridge acara memulai fungsi
account_inventory
Lambda setiap 24 jam.Fungsi Lambda ini menanyakan AWS Organizations untuk daftar semua akun AWS, nama akun IDs, dan email akun.
Fungsi
account_inventory
Lambda memulai fungsiaccess_key_auto_rotation
Lambda untuk setiap ID akun AWS dan meneruskan metadata ke sana untuk pemrosesan tambahan.Fungsi
access_key_auto_rotation
Lambda menggunakan peran IAM yang diasumsikan untuk mengakses ID akun AWS. Skrip Lambda menjalankan audit terhadap semua pengguna dan kunci akses IAM mereka di akun.Jika usia kunci akses IAM belum melebihi ambang praktik terbaik, fungsi Lambda tidak mengambil tindakan lebih lanjut.
Jika usia kunci akses IAM telah melampaui ambang praktik terbaik, fungsi
access_key_auto_rotation
Lambda menentukan tindakan rotasi mana yang harus dilakukan.Ketika tindakan diperlukan, fungsi
access_key_auto_rotation
Lambda membuat dan memperbarui rahasia di AWS Secrets Manager jika kunci baru dibuat. Kebijakan berbasis sumber daya juga dibuat yang memungkinkan hanya prinsipal IAM yang ditentukan untuk mengakses dan mengambil rahasia. Dalam kasus opsi 1, kredensil disimpan di Secrets Manager di akun masing-masing. Dalam kasus opsi 2 (jikaStoreSecretsInCentralAccount
bendera disetel ke True), kredensialnya disimpan di Secrets Manager di akun manajemen.Fungsi
notifier
Lambda dimulai untuk memberi tahu pemilik akun tentang aktivitas rotasi. Fungsi ini menerima ID akun AWS, nama akun, email akun, dan tindakan rotasi yang dilakukan.Fungsi
notifier
Lambda menanyakan bucket S3 penerapan untuk template email dan memperbaruinya secara dinamis dengan metadata aktivitas yang relevan. Email tersebut kemudian dikirim ke alamat email pemilik akun.
Catatan:
Solusi ini mendukung ketahanan di beberapa Availability Zone. Namun, itu tidak mendukung ketahanan di beberapa Wilayah AWS. Untuk dukungan di beberapa Wilayah, Anda dapat menerapkan solusi di Wilayah kedua dan menonaktifkan EventBridge aturan rotasi kunci. Anda kemudian dapat mengaktifkan aturan ketika Anda ingin menjalankan solusi di Wilayah kedua.
Anda dapat menjalankan solusi ini dalam mode audit. Dalam mode audit, kunci akses IAM tidak dimodifikasi, tetapi email dikirim untuk memberi tahu pengguna. Untuk menjalankan solusi dalam mode audit, setel
DryRunFlag
flag ke True saat Anda menjalankan template rotasi kunci atau dalam variabel lingkungan untuk fungsiaccess_key_auto_rotation
Lambda.
Otomatisasi dan skala
CloudFormation Template yang mengotomatiskan solusi ini disediakan di repositori rotasi kunci GitHub IAMASA-iam-key-auto-rotation-iam-assumed-roles.yaml
CloudFormation template di beberapa akun alih-alih menerapkan solusi satu per satu ke setiap akun anggota.
Alat
Layanan AWS
Amazon CloudWatch membantu Anda memantau metrik sumber daya AWS Anda dan aplikasi yang Anda jalankan di AWS secara real time.
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Lambda adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
AWS Organizations adalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa akun AWS ke dalam organisasi yang Anda buat dan kelola secara terpusat.
AWS Secrets Manager membantu Anda mengganti kredensi hardcode dalam kode Anda, termasuk kata sandi, dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
Amazon Simple Email Service (Amazon SES) membantu Anda mengirim dan menerima email dengan menggunakan alamat email dan domain Anda sendiri.
Amazon Simple Notification Service (Amazon SNS) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.
Amazon Virtual Private Cloud (Amazon VPC) membantu Anda meluncurkan sumber daya AWS ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur AWS yang dapat diskalakan.
Titik akhir Amazon VPC menyediakan antarmuka untuk terhubung ke layanan yang didukung oleh AWS PrivateLink, termasuk banyak layanan AWS. Untuk setiap subnet yang Anda tentukan dari VPC Anda, antarmuka jaringan endpoint dibuat di subnet dan diberi alamat IP pribadi dari rentang alamat subnet.
Kode
CloudFormation Template AWS yang diperlukan, skrip Python, dan dokumentasi runbook tersedia di repositori rotasi kunci GitHub IAM
Templat | Terapkan di | Catatan |
---|---|---|
| Akun penyebaran | Ini adalah template utama untuk solusinya. |
| Akun anggota tunggal atau beberapa tempat Anda ingin memutar kredensialnya | Anda dapat menggunakan set CloudFormation tumpukan untuk menyebarkan template ini di beberapa akun. |
| Akun pusat/manajemen | Gunakan template ini untuk menyimpan inventaris akun di AWS Organizations. |
| Akun penyebaran | Gunakan template ini untuk mengotomatiskan pembuatan titik akhir hanya jika Anda ingin menjalankan fungsi Lambda di VPC (atur |
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Pilih bucket S3 penerapan Anda. | Masuk ke AWS Management Console untuk akun Anda, buka konsol Amazon S3 | Arsitek awan |
Kloning repositori. | Kloning repositori rotasi kunci GitHub IAM | Arsitek awan |
Unggah file ke bucket S3. | Unggah file yang dikloning ke bucket S3 Anda. Gunakan struktur folder default berikut untuk menyalin dan menempelkan semua file dan direktori yang dikloning: catatanAnda dapat menyesuaikan struktur folder ini di CloudFormation template. | Arsitek awan |
Ubah template email. | Ubah template | Arsitek awan |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Luncurkan CloudFormation template untuk rotasi kunci. |
| Arsitek awan |
Luncurkan CloudFormation template untuk peran yang diasumsikan. |
| Arsitek awan |
Luncurkan CloudFormation template untuk inventaris akun. |
| Arsitek awan |
Luncurkan CloudFormation template untuk titik akhir VPC. | Tugas ini opsional.
| Arsitek awan |
Sumber daya terkait
Praktik terbaik keamanan dalam IAM (dokumentasi IAM)
AWS Organizations dan peran terkait layanan (dokumentasi AWS Organizations)
Memilih template tumpukan (CloudFormation dokumentasi)
Bekerja dengan AWS CloudFormation StackSets (CloudFormation dokumentasi)