Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat kebijakan IAM secara dinamis dengan IAM Access Analyzer dengan menggunakan Step Functions
Thomas Scott, Koen Blijderveen, Adil El Kanabi, dan Rafal Pawlaszek, 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
Least-privilege adalah praktik keamanan terbaik untuk memberikan izin minimum yang diperlukan untuk melakukan tugas. Menerapkan akses hak istimewa paling sedikit di akun Amazon Web Services (AWS) yang sudah aktif dapat menjadi tantangan karena Anda tidak ingin memblokir pengguna secara tidak sengaja untuk melakukan tugas pekerjaan mereka dengan mengubah izin mereka. Sebelum Anda dapat menerapkan perubahan kebijakan AWS Identity and Access Management (IAM), Anda perlu memahami tindakan dan sumber daya yang dilakukan pengguna akun.
Pola ini dirancang untuk membantu Anda menerapkan prinsip akses hak istimewa paling sedikit, tanpa memblokir atau memperlambat produktivitas tim. Ini menjelaskan cara menggunakan IAM Access Analyzer dan AWS Step Functions secara dinamis menghasilkan kebijakan up-to-date IAM untuk peran Anda, berdasarkan tindakan yang saat ini sedang dilakukan di akun. Kebijakan baru dirancang untuk mengizinkan aktivitas saat ini tetapi menghapus hak istimewa yang tidak perlu dan ditinggikan. Anda dapat menyesuaikan kebijakan yang dihasilkan dengan menentukan aturan izinkan dan tolak, dan solusinya mengintegrasikan aturan kustom Anda.
Pola ini mencakup opsi untuk mengimplementasikan solusi dengan AWS Cloud Development Kit (AWS CDK) atau HashiCorp CDK untuk Terraform (CDKTF). Anda kemudian dapat mengaitkan kebijakan baru dengan peran dengan menggunakan pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD). Jika Anda memiliki arsitektur multi-akun, Anda dapat menerapkan solusi ini di akun mana pun yang ingin Anda buat kebijakan IAM yang diperbarui untuk peran tersebut, meningkatkan keamanan seluruh lingkungan Anda. AWS Cloud
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS dengan AWS CloudTrail jejak diaktifkan.
Izin IAM untuk hal berikut:
Membuat dan menerapkan alur kerja Step Functions. Untuk informasi selengkapnya, lihat Kunci tindakan, sumber daya, dan kondisi untuk AWS Step Functions (dokumentasi Step Functions).
Buat AWS Lambda fungsi. Untuk informasi selengkapnya, lihat Peran eksekusi dan izin pengguna (dokumentasi Lambda).
Buat IAM role. Untuk informasi selengkapnya, lihat Membuat peran untuk mendelegasikan izin ke pengguna IAM (dokumentasi IAM).
npm diinstal. Untuk informasi selengkapnya, lihat Mengunduh dan menginstal Node.js dan npm
(dokumentasi npm). Jika Anda menerapkan solusi ini dengan AWS CDK (Opsi 1):
AWS CDK Toolkit, diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal AWS CDK (AWS CDK dokumentasi).
Jika Anda menerapkan solusi ini dengan CDKTF (Opsi 2):
CDKTF, diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Menginstal CDK untuk Terraform
(dokumentasi CDKTF). Terraform, diinstal dan dikonfigurasi. Untuk informasi selengkapnya, lihat Memulai
(dokumentasi Terraform).
AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi secara lokal untuk Anda Akun AWS. Untuk informasi selengkapnya, lihat Menginstal atau memperbarui versi terbaru AWS CLI (AWS CLI dokumentasi).
Batasan
Pola ini tidak menerapkan kebijakan IAM baru untuk peran tersebut. Pada akhir solusi ini, kebijakan IAM baru disimpan dalam AWS CodeCommit repositori. Anda dapat menggunakan CI/CD pipeline untuk menerapkan kebijakan ke peran di akun Anda.
Arsitektur
Arsitektur target

Aturan EventBridge acara Amazon yang dijadwalkan secara teratur memulai alur kerja Step Functions. Anda mendefinisikan jadwal regenerasi ini sebagai bagian dari pengaturan solusi ini.
Dalam alur kerja Step Functions, fungsi Lambda menghasilkan rentang tanggal yang akan digunakan saat menganalisis aktivitas akun di CloudTrail log.
Langkah alur kerja berikutnya memanggil IAM Access Analyzer API untuk mulai membuat kebijakan.
Menggunakan Nama Sumber Daya Amazon (ARN) peran yang Anda tentukan selama penyiapan, IAM Access Analyzer menganalisis CloudTrail log untuk aktivitas dalam tingkat tanggal yang ditentukan. Berdasarkan aktivitas, IAM Access Analyzer menghasilkan kebijakan IAM yang hanya mengizinkan tindakan dan layanan yang digunakan oleh peran selama rentang tanggal yang ditentukan. Ketika langkah ini selesai, langkah ini menghasilkan ID pekerjaan.
Langkah alur kerja berikutnya memeriksa ID pekerjaan setiap 30 detik. Ketika ID pekerjaan terdeteksi, langkah ini menggunakan ID pekerjaan untuk memanggil IAM Access Analyzer API dan mengambil kebijakan IAM baru. IAM Access Analyzer mengembalikan kebijakan sebagai file JSON.
Langkah alur kerja berikutnya menempatkan file /policy.json <IAM role name>di bucket Amazon Simple Storage Service (Amazon S3). Anda mendefinisikan bucket S3 ini sebagai bagian dari pengaturan solusi ini.
Pemberitahuan acara Amazon S3 memulai fungsi Lambda.
Fungsi Lambda mengambil kebijakan dari bucket S3, mengintegrasikan aturan kustom yang Anda tetapkan dalam file allow.json dan deny.json, lalu mendorong kebijakan yang diperbarui. CodeCommit Anda mendefinisikan jalur CodeCommit repositori, cabang, dan folder sebagai bagian dari pengaturan solusi ini.
Alat
Layanan AWS
AWS Cloud Development Kit (AWS CDK)adalah kerangka pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan AWS Cloud infrastruktur dalam kode.
AWS CDK Toolkit adalah kit pengembangan cloud baris perintah yang membantu Anda berinteraksi dengan AWS Cloud Development Kit (AWS CDK) aplikasi Anda.
AWS CloudTrailmembantu Anda mengaudit tata kelola, kepatuhan, dan risiko operasional Anda Akun AWS.
AWS CodeCommitadalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
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. Pola ini menggunakan IAM Access Analyzer, fitur IAM, untuk menganalisis CloudTrail log Anda guna mengidentifikasi tindakan dan layanan yang telah digunakan oleh entitas IAM (pengguna atau peran) dan kemudian menghasilkan kebijakan IAM yang didasarkan pada aktivitas tersebut.
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.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
AWS Step Functionsadalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan AWS Lambda fungsi dan lainnya Layanan AWS untuk membangun aplikasi bisnis yang penting. Dalam pola ini, Anda menggunakan integrasi layanan AWS SDK di Step Functions untuk memanggil tindakan API layanan dari alur kerja Anda.
Alat-alat lainnya
CDK for Terraform (CDKTF) membantu Anda mendefinisikan infrastruktur sebagai kode (IAc)
dengan menggunakan bahasa pemrograman umum, seperti Python dan TypeScript. Lerna
adalah sistem build untuk mengelola dan menerbitkan beberapa JavaScript atau TypeScript paket dari repositori yang sama. Node.js
adalah lingkungan JavaScript runtime berbasis peristiwa yang dirancang untuk membangun aplikasi jaringan yang dapat diskalakan. npm
adalah registri perangkat lunak yang berjalan di lingkungan Node.js dan digunakan untuk berbagi atau meminjam paket dan mengelola penyebaran paket pribadi.
Repositori kode
Kode untuk pola ini tersedia di repositori GitHub Automated IAM Access Analyzer Role Policy Generator
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repo. | Perintah berikut mengkloning repositori Automated IAM Access Analyzer Role Policy Generator
| Pengembang aplikasi |
Instal Lerna. | Perintah berikut menginstal Lerna.
| Pengembang aplikasi |
Siapkan dependensi. | Perintah berikut menginstal dependensi untuk repositori.
| Pengembang aplikasi |
Bangun kodenya. | Perintah berikut menguji, membangun, dan menyiapkan paket zip dari fungsi Lambda.
| Pengembang aplikasi |
Membangun konstruksi. | Perintah berikut membangun infrastruktur mensintesis aplikasi, untuk keduanya AWS CDK dan CDKTF.
| |
Konfigurasikan izin khusus apa pun. | Di folder repo repositori kloning, edit file allow.json dan deny.json untuk menentukan izin khusus apa pun untuk peran tersebut. Jika file allow.json dan deny.json berisi izin yang sama, izin penolakan diterapkan. | Administrator AWS, Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan AWS CDK tumpukan. | Perintah berikut menyebarkan infrastruktur melalui AWS CloudFormation. Tentukan parameter berikut:
catatanTanda kurung siku menunjukkan parameter opsional. | Pengembang aplikasi |
(Opsional) Tunggu kebijakan baru. | Jika jejak tidak berisi jumlah aktivitas historis yang wajar untuk peran tersebut, tunggu hingga Anda yakin bahwa ada cukup aktivitas yang dicatat untuk IAM Access Analyzer untuk menghasilkan kebijakan yang akurat. Jika peran telah aktif di akun untuk jangka waktu yang cukup, masa tunggu ini mungkin tidak diperlukan. | Administrator AWS |
Tinjau kebijakan yang dihasilkan secara manual. | Di CodeCommit repositori Anda, tinjau file.json <ROLE_ARN>yang dihasilkan untuk mengonfirmasi bahwa izin izinkan dan tolak sesuai untuk peran tersebut. | Administrator AWS |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Sintesis template Terraform. | Perintah berikut mensintesis template Terraform.
| Pengembang aplikasi |
Terapkan template Terraform. | Perintah berikut menavigasi ke direktori yang berisi infrastruktur yang ditentukan CDKTF.
Perintah berikut menyebarkan infrastruktur di target Akun AWS. Tentukan parameter berikut:
catatanTanda kurung siku menunjukkan parameter opsional. | Pengembang aplikasi |
(Opsional) Tunggu kebijakan baru. | Jika jejak tidak berisi jumlah aktivitas historis yang wajar untuk peran tersebut, tunggu hingga Anda yakin bahwa ada cukup aktivitas yang dicatat untuk IAM Access Analyzer untuk menghasilkan kebijakan yang akurat. Jika peran telah aktif di akun untuk jangka waktu yang cukup, masa tunggu ini mungkin tidak diperlukan. | Administrator AWS |
Tinjau kebijakan yang dihasilkan secara manual. | Di CodeCommit repositori Anda, tinjau file.json <ROLE_ARN>yang dihasilkan untuk mengonfirmasi bahwa izin izinkan dan tolak sesuai untuk peran tersebut. | Administrator AWS |
Sumber daya terkait
AWS sumber daya
Sumber daya lainnya