Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memusatkan manajemen kunci akses IAM di AWS Organizations dengan menggunakan Terraform
Aarti Rajput, Chintamani Aphale, T.V.R.L.Phani Kumar Dadi, Pratap Kumar Nanda, Pradip kumar Pandey, dan Mayuri Shinde, Amazon Web Services
Ringkasan
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Menegakkan aturan keamanan untuk kunci dan kata sandi adalah tugas penting bagi setiap organisasi. Salah satu aturan penting adalah memutar kunci AWS Identity and Access Management (IAM) secara berkala untuk menegakkan keamanan. Kunci akses AWS umumnya dibuat dan dikonfigurasi secara lokal setiap kali tim ingin mengakses AWS dari AWS Command Line Interface (AWS CLI) atau dari aplikasi di luar AWS. Untuk menjaga keamanan yang kuat di seluruh organisasi, kunci keamanan lama harus diubah atau dihapus setelah persyaratan dipenuhi atau secara berkala. Proses mengelola rotasi kunci di beberapa akun dalam suatu organisasi memakan waktu dan membosankan. Pola ini membantu Anda mengotomatiskan proses rotasi dengan menggunakan Account Factory for Terraform (AFT) dan layanan AWS.
Pola ini memberikan manfaat ini:
Mengelola kunci akses IDs dan kunci akses rahasia Anda di semua akun di organisasi Anda dari lokasi pusat.
Secara otomatis memutar variabel
AWS_ACCESS_KEY_IDdanAWS_SECRET_ACCESS_KEYlingkungan.Menegakkan perpanjangan jika kredensi pengguna disusupi.
Pola ini menggunakan Terraform untuk menerapkan fungsi AWS Lambda, aturan EventBridge Amazon, dan peran IAM. EventBridge Aturan berjalan secara berkala dan memanggil fungsi Lambda yang mencantumkan semua kunci akses pengguna berdasarkan kapan mereka dibuat. Fungsi Lambda tambahan membuat ID kunci akses baru dan kunci akses rahasia, jika kunci sebelumnya lebih tua dari periode rotasi yang Anda tentukan (misalnya, 45 hari), dan beri tahu administrator keamanan dengan menggunakan Amazon Simple Notification Service (Amazon SNS) dan Amazon Simple Email Service (Amazon SES). Rahasia dibuat di AWS Secrets Manager untuk pengguna tersebut, kunci akses rahasia lama disimpan di Secrets Manager, dan izin untuk mengakses kunci lama dikonfigurasi. Untuk memastikan bahwa kunci akses lama tidak lagi digunakan, itu dinonaktifkan setelah periode tidak aktif (misalnya, 60 hari, yang akan menjadi 15 hari setelah kunci diputar dalam contoh kami). Setelah periode buffer tidak aktif (misalnya, 90 hari, atau 45 hari setelah kunci diputar dalam contoh kami), kunci akses lama dihapus dari AWS Secrets Manager. Untuk detail arsitektur dan alur kerja, lihat bagian Arsitektur.
Prasyarat dan batasan
Sebuah landing zone untuk organisasi Anda yang dibangun dengan menggunakan AWS Control Tower (versi 3.1 atau yang lebih baru)
Account Factory for Terraform (AFT)
dikonfigurasi dengan tiga akun: Akun manajemen organisasi
mengelola seluruh organisasi dari lokasi pusat. Akun manajemen AFT
menghosting pipeline Terraform dan menyebarkan infrastruktur ke dalam akun penerapan. Akun penyebaran
menyebarkan solusi lengkap ini dan mengelola kunci IAM dari lokasi pusat.
Terraform versi 0.15.0 atau yang lebih baru untuk menyediakan infrastruktur di akun penerapan.
Alamat email yang dikonfigurasi di Amazon Simple Email Service (Amazon SES)
. (Disarankan) Untuk meningkatkan keamanan, gunakan solusi ini di dalam subnet pribadi (akun penyebaran) dalam virtual private cloud (VPC
). Anda dapat memberikan detail VPC dan subnet saat Anda menyesuaikan variabel (lihat Menyesuaikan parameter untuk pipeline kode di bagian Epik).
Arsitektur
Repositori AFT
Pola ini menggunakan Account Factory for Terraform (AFT) untuk membuat semua sumber daya AWS yang diperlukan dan pipeline kode untuk menyebarkan sumber daya di akun penerapan. Pipeline kode berjalan di dua repositori:
Kustomisasi global berisi kode Terraform yang akan berjalan di semua akun yang terdaftar di AFT.
Kustomisasi akun berisi kode Terraform yang akan berjalan di akun penerapan.
Detail sumber daya
CodePipeline Pekerjaan AWS membuat sumber daya berikut di akun penerapan:
EventBridge Aturan AWS dan aturan yang dikonfigurasi
account-inventoryFungsi LambdaIAM-access-key-rotationFungsi LambdaNotificationFungsi LambdaBucket Amazon Simple Storage Service (Amazon S3) yang berisi template email
Kebijakan IAM yang diperlukan
Arsitektur

Diagram ini menggambarkan hal sebagai berikut:
EventBridge Aturan memanggil fungsi
account-inventoryLambda setiap 24 jam.Fungsi
account-inventoryLambda menanyakan AWS Organizations untuk daftar semua akun AWS, nama akun IDs, dan email akun.Fungsi
account-inventoryLambda memulai fungsiIAM-access-key-auto-rotationLambda untuk setiap akun AWS dan meneruskan metadata ke dalamnya untuk pemrosesan tambahan.Fungsi
IAM-access-key-auto-rotationLambda menggunakan peran IAM yang diasumsikan untuk mengakses akun AWS. Skrip Lambda menjalankan audit terhadap semua pengguna dan kunci akses IAM mereka di akun.Ambang batas rotasi kunci IAM (periode rotasi) dikonfigurasi sebagai variabel lingkungan saat fungsi
IAM-access-key-auto-rotationLambda diterapkan. Jika periode rotasi diubah, fungsiIAM-access-key-auto-rotationLambda di-deploy kembali dengan variabel lingkungan yang diperbarui. Anda dapat mengonfigurasi parameter untuk mengatur periode rotasi, periode tidak aktif untuk kunci lama, dan buffer tidak aktif setelah itu kunci lama akan dihapus (lihat Menyesuaikan parameter untuk pipa kode di bagian Epik).Fungsi
IAM-access-key-auto-rotationLambda memvalidasi usia kunci akses berdasarkan konfigurasinya. Jika usia kunci akses IAM belum melebihi periode rotasi yang Anda tentukan, fungsi Lambda tidak akan mengambil tindakan lebih lanjut.Jika usia kunci akses IAM telah melebihi periode rotasi yang Anda tentukan, fungsi
IAM-access-key-auto-rotationLambda membuat kunci baru dan memutar kunci yang ada.Fungsi Lambda menyimpan kunci lama di Secrets Manager dan membatasi izin kepada pengguna yang kunci aksesnya menyimpang dari standar keamanan. Fungsi Lambda juga membuat kebijakan berbasis sumber daya yang memungkinkan hanya prinsipal IAM yang ditentukan untuk mengakses dan mengambil rahasia.
Fungsi
IAM-access-key-rotationLambda memanggil fungsi LambdaNotification.Fungsi
NotificationLambda menanyakan bucket S3 untuk template email dan secara dinamis menghasilkan pesan email dengan metadata aktivitas yang relevan.Fungsi
NotificationLambda memanggil Amazon SES untuk tindakan lebih lanjut.Amazon SES mengirimkan email ke alamat email pemilik akun dengan informasi yang relevan.
Alat
Layanan AWS
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. Patern ini membutuhkan peran dan izin IAM.
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 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 Email Service (Amazon SES) membantu Anda mengirim dan menerima email dengan menggunakan alamat email dan domain Anda sendiri.
Alat-alat lainnya
Terraform
adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.
Repositori kode
Instruksi dan kode untuk pola ini tersedia di repositori rotasi kunci akses GitHub IAM
Praktik terbaik
Untuk IAM, lihat praktik terbaik keamanan dalam dokumentasi IAM.
Untuk rotasi kunci, lihat panduan untuk memperbarui kunci akses dalam dokumentasi IAM.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Konfigurasikan akun bootstrap. | Sebagai bagian dari proses bootstrap AFT
| DevOps insinyur |
Konfigurasikan penyesuaian global. | Sebagai bagian dari pengaturan folder AFT
| DevOps insinyur |
Konfigurasikan kustomisasi akun. | Sebagai bagian dari pengaturan folder AFT
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Sesuaikan parameter pipeline kode non-Terraform untuk semua akun. | Buat file yang disebut | DevOps insinyur |
Sesuaikan parameter pipeline kode untuk akun penerapan. | Buat file yang dipanggil Tentukan nilai untuk parameter berdasarkan persyaratan organisasi Anda, termasuk yang berikut ini (lihat file di repositori Github
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Validasi solusinya. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Sesuaikan tanggal pemberitahuan email. | Jika Anda ingin mengirim notifikasi email pada hari tertentu sebelum menonaktifkan tombol akses, Anda dapat memperbarui fungsi
| DevOps insinyur |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Pekerjaan | Jika mengalami masalah ini, Anda harus memvalidasi izin:
|
Sumber daya terkait
Praktik yang Direkomendasikan Terraform (dokumentasi
Terraform) Praktik terbaik keamanan dalam IAM (dokumentasi IAM)
Praktik terbaik untuk rotasi kunci (dokumentasi IAM)