Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kelola set AWS izin secara dinamis dengan menggunakan Terraform
Vinicius Elias dan Marcos Vinicius Pinto Jordao, Amazon Web Services
Ringkasan
AWS IAM Identity Center meningkatkan AWS Identity and Access Management (IAM) dengan menyediakan hub terpusat untuk mengelola akses masuk tunggal ke dan aplikasi cloud. Akun AWS Namun, manajemen manual set izin Pusat Identitas IAM dapat menjadi semakin kompleks dan rawan kesalahan seiring pertumbuhan organisasi Anda. Kompleksitas ini dapat menyebabkan potensi kesenjangan keamanan dan overhead administratif.
Solusi ini memungkinkan Anda untuk mengelola set izin melalui infrastruktur sebagai kode (IAc) menggunakan pipeline continuous integration and continuous delivery (CI/CD) yang dibangun dengan native. Layanan AWS Ini memungkinkan integrasi tanpa batas dari mekanisme penetapan set izin dengan peristiwa AWS Control Tower siklus hidup atau lingkungan Account Factory for Terraform (AFT). Pendekatan ini menyediakan konfigurasi identitas dinamis untuk yang baru dan yang sudah ada Akun AWS.
EventBridge Aturan Amazon memantau Akun AWS pembuatan dan pembaruan, yang membantu konfigurasi identitas Anda tetap disinkronkan dengan struktur organisasi Anda. Setelah membuat atau memperbarui akun di AWS Control Tower atau AFT, pipeline dipicu. Ini mengevaluasi satu set file JSON dengan definisi set izin dan aturan penetapan. Kemudian pipeline berlaku dan menyinkronkan pengaturan di semua akun.
Pendekatan ini memberikan manfaat sebagai berikut:
Konsistensi - Menghilangkan penyimpangan konfigurasi manual di seluruh organisasi Anda AWS
Auditabilitas - Mempertahankan riwayat lengkap dari semua perubahan manajemen identitas
Skalabilitas - Secara otomatis menerapkan konfigurasi saat lingkungan Anda tumbuh AWS
Keamanan - Mengurangi kesalahan manusia dalam penugasan izin
Kepatuhan — Memfasilitasi memenuhi persyaratan peraturan melalui perubahan yang terdokumentasi dan aturan penugasan
Prasyarat dan batasan
Lingkungan multi-akun dengan AWS Control Tower dan AWS Organizations pengaturan. Secara opsional, Anda dapat menggunakan AFT dengan AWS Control Tower.
Administrator yang didelegasikan Pusat Identitas IAM Akun AWS untuk menerima solusinya. Untuk informasi selengkapnya, lihat Administrasi yang didelegasikan dalam dokumentasi Pusat Identitas IAM.
Sebuah sistem kontrol versi (VCS) repositori untuk menangani kode utama. Untuk sampel, lihat GitHub repositori
solusi. AWS Sumber daya yang diperlukan untuk manajemen backend Terraform, seperti bucket Amazon Simple Storage Service (Amazon S3) dan tabel Amazon DynamoDB.
Batasan
Pipeline menggunakan sumber daya AWS asli dan Terraform open source. Pipa tidak siap untuk melakukan panggilan ke ekosistem pihak ketiga.
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah
. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.
Arsitektur
Diagram berikut menunjukkan komponen dan alur kerja untuk pola ini.

AWS Control Tower aliran peristiwa
Solusinya dimulai dengan integrasi peristiwa yang berasal dari salah satu AWS Control Tower atau AFT. Pilihan antara satu atau layanan lainnya dibuat pada waktu implementasi melalui definisi variabel. Terlepas dari metode yang digunakan, pipeline dipicu setiap kali akun dibuat atau diperbarui. Pipeline merekonsiliasi kebijakan yang disimpan dalam repositori manajemen set izin.
Berikut ini adalah peristiwa AWS Control Tower siklus hidup:
CreateManagedAccount— Saat akun baru dibuatUpdateManagedAccount— Saat akun yang ada diperbarui
Perutean acara
EventBridge berfungsi sebagai layanan pemrosesan acara pusat, menangkap peristiwa yang dihasilkan di AWS Control Tower akun. Ketika peristiwa terjadi, EventBridge secara cerdas mengarahkannya ke bus acara terpusat di akun solusi. AWS Control Tower peristiwa siklus hidup mengikuti pola perutean yang berbeda. Jika AFT didefinisikan sebagai sumber peristiwa, akun manajemen AFT menangani peristiwa alih-alih AWS Control Tower akun. Arsitektur berbasis peristiwa ini memungkinkan respons otomatis terhadap perubahan organisasi tanpa intervensi manual.
Proses integrasi AFT
Ketika peristiwa AWS Control Tower siklus hidup mencapai akun manajemen AFT, peristiwa tersebut secara otomatis memicu beberapa proses hilir yang intrinsik ke AFT. Setelah alur kerja kustomisasi akun AFT selesai, ia menerbitkan pesan ke topik Simple Notification Service aft-notifications Amazon (Amazon SNS) khusus. Topik itu memicu aft-new-account-forward-event AWS Lambda fungsi yang diterapkan oleh solusi ini. Fungsi Lambda mengirimkan acara ke bus acara akun solusi, di mana ia digunakan untuk memulai pipeline.
Infrastruktur sebagai pipa kode
Pipa solusi beroperasi sebagai mekanisme penyebaran yang sepenuhnya otomatis. AWS CodePipeline Layanan terus memantau repositori untuk perubahan. Setelah mendeteksi komit baru, secara otomatis memulai alur kerja penerapan dan memulai proses sekuensial yang mencakup fase validasi dan eksekusi. Sistem menjalankan plan operasi Terraform untuk mengidentifikasi perubahan yang diusulkan, diikuti oleh apply perintah Terraform untuk mengimplementasikan perubahan tersebut di lingkungan. AWS Khususnya, pipa berjalan tanpa gerbang persetujuan manual. Pendekatan ini memungkinkan penyebaran cepat perubahan infrastruktur sambil mempertahankan auditabilitas melalui log pipa dan file status Terraform.
Pipeline memanfaatkan AWS CodeBuild untuk menjalankan operasi Terraform di lingkungan yang terkendali dengan izin yang sesuai. Melalui pendekatan IAc ini, pipeline dapat melakukan operasi manajemen izin yang komprehensif termasuk:
Buat set izin baru.
Perbarui set izin yang ada.
Hapus set izin yang tidak perlu.
Kelola penetapan izin ini di seluruh akun dan grup dalam organisasi. AWS
Untuk menjaga konsistensi infrastruktur dan mencegah perubahan yang bertentangan, solusinya mengimplementasikan sistem manajemen status backend Terraform menggunakan bucket Amazon S3 dan tabel Amazon DynamoDB khusus. Pendekatan ini menyediakan lokasi penyimpanan persisten untuk file status Terraform dan mekanisme penguncian status untuk mencegah modifikasi bersamaan pada sumber daya yang sama.
Kode Terraform utama menggunakan modul AWS permission-sets Terraform resmi. Modul ini dapat secara dinamis mengelola set izin di IAM Identity Center, berdasarkan template set izin.
Manajemen kontrol sumber
Templat set izin (file JSON) berada di sistem kontrol versi eksternal, seperti GitHub, yang menyediakan repositori terpusat untuk konfigurasi manajemen identitas. Pendekatan ini menetapkan satu sumber kebenaran untuk definisi set izin, sambil memungkinkan pengembangan kolaboratif melalui praktik tinjauan kode standar. Pengguna yang berwenang dapat melakukan perubahan pada templat ini mengikuti proses manajemen perubahan organisasi. Komit ini berfungsi sebagai pemicu utama untuk pipeline penerapan otomatis, memulai proses pembaruan infrastruktur.
Alat
Layanan AWS
AWS CodeBuildadalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS CodeConnectionsmemungkinkan AWS sumber daya dan layanan, seperti CodePipeline, untuk terhubung ke repositori kode eksternal, seperti. GitHub
AWS CodePipelinemembantu Anda dengan cepat memodelkan dan mengkonfigurasi berbagai tahapan rilis perangkat lunak dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus.
AWS Command Line Interface (AWS CLI) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
AWS Control Towermembantu Anda mengatur dan mengatur lingkungan AWS multi-akun, mengikuti praktik terbaik preskriptif.
Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.
Amazon EventBridge adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data waktu nyata dari berbagai sumber. Misalnya, AWS Lambda fungsi, titik akhir pemanggilan HTTP menggunakan tujuan API, atau bus acara di tempat lain. Akun AWS
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS IAM Identity Centermembantu Anda mengelola akses masuk tunggal (SSO) secara terpusat ke semua aplikasi Anda Akun AWS dan cloud.
AWS Lambdaadalah 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 Organizationsadalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa Akun AWS ke dalam organisasi yang Anda buat dan kelola secara terpusat.
Amazon Simple Notification Service (Amazon SNS) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email. Ini memungkinkan pemberitahuan push untuk acara manajemen akun, memastikan bahwa pihak terkait diberitahu tentang perubahan atau tindakan penting dalam sistem.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
Alat-alat lainnya
Terraform
adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.
Repositori kode
Kode untuk pola ini tersedia di organisasi AWS Sampel di dalam GitHub repositori sample-terraform-aws-permission-sets-pipeline
Praktik terbaik
Selalu sematkan versi modul dan penyedia Terraform yang digunakan untuk menjalankan kode dalam produksi.
Gunakan alat analisis kode statis, seperti Checkov
, untuk memindai kode Anda dan kemudian memecahkan masalah keamanan. Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Berikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi IAM.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat sumber daya backend Terraform. | Jika Anda belum membuat AWS sumber daya backend Terraform, gunakan langkah-langkah berikut untuk membuat bucket () Amazon S3
| Administrator AWS |
Buat peran lintas akun. | Anda harus memberikan peran IAM lintas akun dalam konfigurasi penyedia
Contoh ini menggunakan kebijakan AdministratorAccessIAM AWS terkelola. Jika mau, Anda dapat menggunakan kebijakan yang lebih spesifik. | Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat repositori khusus. | Tugas ini mengasumsikan bahwa Anda menggunakan GitHub. Buat repositori khusus untuk menyimpan kode Terraform utama dan file JSON template set izin. | DevOps insinyur |
Siapkan kode set izin. | Untuk informasi tentang bagaimana Anda dapat menyusun file-file berikut, lihat contoh kode ── utama.tf ── keluaran.tf ── penyedia.jinja ── templat Salin konten, simpan | DevOps insinyur |
Komit perubahan Anda. | Komit dan dorong perubahan ke repositori yang Anda buat sebelumnya. Simpan nama repositori dan GitHub organisasinya, misalnya,. | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Unduh kontennya. | Unduh (kloning) konten dari repositori | DevOps insinyur |
Memenuhi variabel. | Buat
Untuk informasi tentang opsi variabel tambahan, lihat file variabel.tf | DevOps insinyur |
Sesuaikan konfigurasi backend Terraform. | Dalam
Jika mau, Anda dapat menggunakan konfigurasi backend Terraform Anda sendiri. | DevOps insinyur |
Sesuaikan konfigurasi penyedia Terraform. | Dalam
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Pilih Akun AWS. | Kami menyarankan Anda menerapkan solusi di akun administrator yang didelegasikan IAM Identity Center. Namun, Anda juga dapat menerapkannya di akun AWS Organizations manajemen. Untuk masuk ke akun yang dipilih di Wilayah yang sama dengan instans Pusat Identitas IAM, gunakan. AWS CLI Pastikan bahwa peran IAM yang Anda gunakan memiliki izin untuk mengambil peran yang ditentukan untuk | Administrator AWS |
Jalankan Terraform secara manual. | Untuk menginisialisasi, merencanakan, dan menerapkan konfigurasi, jalankan perintah Terraform berikut dalam urutan yang ditunjukkan:
| DevOps insinyur |
Periksa hasil penerapan. | Di akun administrator yang didelegasikan IAM Identity Center, periksa apakah | AWS DevOps |
Selesaikan CodeConnections konfigurasi. | Untuk menyelesaikan CodeConnections konfigurasi, gunakan langkah-langkah berikut:
Pipeline sekarang harus memiliki akses ke repositori set izin. Untuk petunjuk mendetail, lihat Memperbarui sambungan yang tertunda di dokumentasi konsol Alat Pengembang. | AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Jalankan pipeline oleh AWS Control Tower atau pembaruan AFT. | Setelah akun dibuat atau diubah dengan menggunakan AWS Control Tower atau AFT (tergantung pada jenis peristiwa siklus hidup yang Anda pilih), pipeline dimulai. | Administrator AWS |
Jalankan pipeline dengan mengubah kode. | Setelah Anda mengubah kode dan mengkomitmennya ke | AWS DevOps |
Jalankan pipa secara manual. | Untuk memulai pipeline secara manual, gunakan fitur Rilis perubahan di AWS CodePipeline. | AWS DevOps |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Akses ditolak | Verifikasi bahwa Anda memiliki izin yang diperlukan untuk menerapkan solusi. |
CodeConnections masalah |
|
Masalah eksekusi pipa |
|
Izin menetapkan masalah penerapan |
|
Sumber daya terkait
Layanan AWS dokumentasi
Kelola Akun AWS dengan set izin (dokumentasi Pusat Identitas IAM)
Sumber daya lainnya
AWS Modul Set Izin
(Terraform)
Informasi tambahan
File JSON dengan set izin sampel
Contoh berikut menunjukkan cara mengkonfigurasi set izin dengan menggunakan file JSON di repositori:
{ "Name": "ps-billing", // Permission set identifier "Comment": "Sample permission set for billing access", // Comment to document the purpose of the permission set "Description": "Billing access in AWS", // Detailed description "SessionDuration": "PT4H", // Session duration = 4 hours (ISO 8601 format) "ManagedPolicies": [ // List of AWS IAM managed policies "arn:aws:iam::aws:policy/job-function/Billing", "arn:aws:iam::aws:policy/job-function/SupportUser", "arn:aws:iam::aws:policy/AWSSupportAccess", "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess" ], "CustomerPolicies": [], // References to IAM policies previously created "CustomPolicy": {}, // Inline IAM policy defined directly in the permission set "PermissionBoundary": { // AWS or customer managed IAM policy to be used as boundary "ManagedPolicy": "", "CustomerPolicy": "" }, "Assignments": [ // Define the assignment rules { "all_accounts": true, // Apply to ALL active AWS accounts in organization "principal": "G_BILLING_USERS", // Group/user name in Identity Center "type": "GROUP", // Can be "GROUP" or "USER" "account_id": [], // List of AWS account ID (empty since all_accounts=true) "account_ou": [], // List of AWS Organizational Unit IDs with target AWS accounts "account_tag": [] // List of tags (key:value) to match AWS Organization accounts tags } ] }
Untuk informasi selengkapnya, lihat skema JSON dalam dokumentasi modul Set AWS Izin
Kiat
Anda dapat menggunakan blok impor
Terraform untuk mengimpor izin yang ada yang disetel ke solusi. Anda dapat menggunakan AFT untuk mengimplementasikan pipeline set AWS izin di akun yang didelegasikan. Untuk informasi lebih lanjut, lihat AFT Blueprints
.