Mengelola set AWS IAM Identity Center izin sebagai kode dengan menggunakan AWS CodePipeline - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengelola set AWS IAM Identity Center izin sebagai kode dengan menggunakan AWS CodePipeline

Andre Cavalcante dan Claison Amorim, Amazon Web Services

Ringkasan

AWS IAM Identity Center membantu Anda mengelola akses masuk tunggal (SSO) secara terpusat ke semua aplikasi dan aplikasi Anda. Akun AWS Anda dapat membuat dan mengelola identitas pengguna di Pusat Identitas IAM, atau Anda dapat menghubungkan sumber identitas yang ada, seperti domain Microsoft Active Directory atau penyedia identitas eksternal (iDP). IAM Identity Center menyediakan pengalaman administrasi terpadu untuk menentukan, menyesuaikan, dan menetapkan akses halus ke lingkungan Anda AWS dengan menggunakan set izin. Set izin berlaku untuk pengguna dan grup federasi dari toko identitas Pusat Identitas IAM atau iDP eksternal Anda.

Pola ini membantu Anda mengelola set izin IAM Identity Center sebagai kode di lingkungan multi-akun Anda yang dikelola sebagai organisasi. AWS Organizations Dengan pola ini, Anda dapat mencapai yang berikut:

  • Membuat, menghapus, dan memperbarui set izin

  • Buat, perbarui, atau hapus penetapan set izin ke target Akun AWS, unit organisasi (OUs), atau root organisasi Anda.

Untuk mengelola izin dan penugasan Pusat Identitas IAM sebagai kode, solusi ini menerapkan pipeline integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang menggunakan dan. AWS CodeBuild AWS CodePipeline Anda mengelola set izin dan tugas dalam template JSON yang Anda simpan di repositori jarak jauh. Ketika EventBridge aturan Amazon mendeteksi perubahan pada repositori atau mendeteksi modifikasi pada akun di OU target, itu memulai fungsi. AWS Lambda Fungsi Lambda memulai CI/CD pipeline yang memperbarui set izin dan penetapan di IAM Identity Center.

Prasyarat dan batasan

Prasyarat

  • Lingkungan multi-akun yang dikelola sebagai organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat Membuat organisasi.

  • Pusat Identitas IAM, diaktifkan dan dikonfigurasi dengan sumber identitas. Untuk informasi selengkapnya, lihat Memulai di dokumentasi Pusat Identitas IAM.

  • Akun anggota yang terdaftar sebagai administrator yang didelegasikan untuk hal-hal berikut: Layanan AWS

    catatan

    Anda harus menggunakan akun yang sama dengan administrator yang didelegasikan untuk kedua layanan.

  • Izin untuk menerapkan AWS CloudFormation tumpukan di akun administrator yang didelegasikan Pusat Identitas IAM dan di akun manajemen organisasi. Untuk informasi selengkapnya, lihat Mengontrol akses dalam CloudFormation dokumentasi.

  • Bucket Amazon Simple Storage Service (Amazon S3) di akun administrator yang didelegasikan IAM Identity Center. Anda mengunggah kode artefak ke dalam ember ini. Untuk petunjuknya, lihat Membuat bucket di dokumentasi Amazon S3.

  • ID akun akun manajemen organisasi. Untuk petunjuk, lihat Menemukan Akun AWS ID Anda.

  • Sebuah repositori di host kode sumber Anda, seperti. GitHub

Batasan

  • Pola ini tidak dapat digunakan untuk mengelola atau menetapkan set izin untuk lingkungan akun tunggal atau untuk akun yang tidak dikelola sebagai organisasi. AWS Organizations

  • Izin menetapkan nama, penugasan IDs, dan tipe utama Pusat Identitas IAM dan IDs tidak dapat dimodifikasi setelah penerapan.

  • Pola ini membantu Anda membuat dan mengelola izin khusus. Anda tidak dapat menggunakan pola ini untuk mengelola atau menetapkan izin yang telah ditentukan sebelumnya.

  • Pola ini tidak dapat digunakan untuk mengelola izin yang ditetapkan untuk akun manajemen organisasi.

Arsitektur

Arsitektur target

Menggunakan CI/CD pipeline untuk mengelola set izin di Pusat Identitas IAM.

Diagram menunjukkan alur kerja berikut:

  1. Seorang pengguna membuat salah satu dari perubahan berikut:

    • Melakukan satu atau beberapa perubahan ke repositori jarak jauh, seperti GitHub

    • Memodifikasi akun di OU di AWS Organizations

  2. Jika pengguna melakukan perubahan ke repositori jarak jauh ke cabang utama, pipeline dimulai.

    Jika pengguna memodifikasi akun di OU, maka MoveAccount EventBridge aturan mendeteksi perubahan dan memulai fungsi Lambda di akun manajemen organisasi.

  3. Fungsi Lambda yang dimulai memulai pipeline masuk CI/CD . CodePipeline

  4. CodePipeline memulai TemplateValidation CodeBuild proyek. TemplateValidation CodeBuild Proyek ini menggunakan skrip Python di repositori jarak jauh untuk memvalidasi template set izin. CodeBuild memvalidasi yang berikut:

    • Nama set izin unik.

    • Pernyataan penugasan IDs (Sid) unik.

    • Definisi kebijakan dalam CustomPolicy parameter dan valid. (Validasi ini menggunakan AWS Identity and Access Management Access Analyzer.)

    • Nama Sumber Daya Amazon (ARNs) dari kebijakan terkelola valid.

  5. Grup PermissionSet tindakan dalam Deploy CodeBuild proyek digunakan AWS SDK untuk Python (Boto3) untuk menghapus, membuat, atau memperbarui set izin di Pusat Identitas IAM. Hanya set izin dengan SSOPipeline:true tag yang terpengaruh. Semua set izin yang dikelola melalui pipeline ini memiliki tag ini.

  6. Grup Assignments tindakan dalam Deploy CodeBuild proyek menggunakan Terraform untuk menghapus, membuat, atau memperbarui tugas di Pusat Identitas IAM. File status backend Terraform disimpan dalam bucket Amazon S3 di akun yang sama.

  7. CodeBuild memperbarui set izin dan tugas di IAM Identity Center.

Otomatisasi dan skala

Karena semua akun baru di lingkungan multi-akun dipindahkan ke unit organisasi tertentu di AWS Organizations, solusi ini secara otomatis berjalan dan memberikan set izin yang diperlukan ke semua akun yang Anda tentukan dalam templat penetapan. Tidak ada otomatisasi tambahan atau tindakan penskalaan yang diperlukan.

Di lingkungan yang besar, jumlah permintaan API ke IAM Identity Center dapat menyebabkan solusi ini berjalan lebih lambat. Terraform dan Boto3 secara otomatis mengelola pelambatan untuk meminimalkan penurunan kinerja apa pun.

Alat

Layanan AWS

  • AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS

  • AWS CodeBuildadalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan. 

  • 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.

  • 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 IAM Identity Centermembantu Anda mengelola akses masuk tunggal (SSO) secara terpusat ke semua aplikasi Anda Akun AWS dan cloud.

  • AWS Organizationsadalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa Akun AWS ke dalam organisasi yang Anda buat dan kelola secara terpusat.

  • AWS SDK untuk Python (Boto3)adalah kit pengembangan perangkat lunak yang membantu Anda mengintegrasikan aplikasi, perpustakaan, atau skrip Python Anda. Layanan AWS

  • Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

Repositori kode

Kode untuk pola ini tersedia di repositori aws-iam-identity-center-pipeline. Folder template dalam repositori menyertakan contoh template untuk set izin dan tugas. Ini juga mencakup AWS CloudFormation template untuk menyebarkan CI/CD pipeline dan AWS sumber daya di akun target.

Praktik terbaik

  • Sebelum Anda mulai memodifikasi set izin dan templat penetapan, sebaiknya Anda merencanakan set izin untuk organisasi Anda. Pertimbangkan izin apa yang seharusnya, akun atau OUs set izin mana yang harus diterapkan, dan prinsip Pusat Identitas IAM (pengguna atau grup) mana yang harus dipengaruhi oleh kumpulan izin. Izin menetapkan nama, asosiasi IDs, dan tipe utama Pusat Identitas IAM dan IDs tidak dapat dimodifikasi setelah penerapan.

  • Patuhi prinsip hak istimewa paling sedikit dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat Memberikan hak istimewa terkecil dan praktik terbaik Keamanan dalam dokumentasi AWS Identity and Access Management (IAM).

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repositori.

Dalam shell bash, masukkan perintah berikut. Ini mengkloning repositori aws-iam-identity-center-pipeline dari. GitHub

git clone https://github.com/aws-samples/aws-iam-identity-center-pipeline.git
DevOps insinyur

Tentukan set izin.

  1. Di repositori kloning, navigasikan ke templates/permissionsets folder, lalu buka salah satu templat yang tersedia.

  2. Dalam Name parameter, masukkan nama untuk set izin. Nilai ini harus unik, dan tidak dapat diubah setelah penerapan.

  3. Dalam Description parameter, jelaskan secara singkat set izin, seperti kasus penggunaannya.

  4. Dalam SessionDuration parameter, tentukan lamanya waktu pengguna dapat masuk ke file Akun AWS. Gunakan format durasi ISO-8601 (Wikipedia), seperti selama 4 jam. PT4H Jika tidak ada nilai yang ditentukan, default di IAM Identity Center adalah 1 jam.

  5. Dalam RelayState parameter, tentukan URL yang menyediakan akses cepat ke konsol yang paling sesuai untuk peran pengguna.

  6. Sesuaikan kebijakan dalam set izin. Semua parameter berikut adalah opsional dan dapat dimodifikasi setelah penerapan. Anda harus menggunakan setidaknya satu parameter untuk menentukan kebijakan dalam kumpulan izin:

    • Dalam ManagedPolicies parameter, masukkan kebijakan ARNs AWS terkelola apa pun yang ingin Anda tetapkan.

    • Dalam CustomerManagedPolicies parameter, masukkan nama kebijakan yang dikelola pelanggan yang ingin Anda tetapkan. Jangan gunakan ARN.

    • Dalam PermissionBoundary parameter, lakukan hal berikut untuk menetapkan batas izin:

      • Jika Anda menggunakan kebijakan AWS terkelola sebagai batas izin, masuk, masukPolicyType, dan masuk AWSPolicy, masukkan ARN kebijakan tersebut.

      • Jika Anda menggunakan kebijakan yang dikelola pelanggan sebagai batas izin, masuk, masuk PolicyTypeCustomer, dan masukPolicy, masukkan nama kebijakan. Jangan gunakan ARN.

    • Dalam CustomPolicy parameter, tentukan kebijakan kustom, berformat JSON yang ingin Anda tetapkan. Untuk informasi selengkapnya tentang struktur kebijakan JSON, lihat Ikhtisar kebijakan JSON.

  7. Simpan dan tutup template set izin. Kami menyarankan Anda menyimpan file dengan nama yang cocok dengan nama set izin.

  8. Ulangi proses ini untuk membuat set izin sebanyak yang diperlukan untuk organisasi Anda, dan hapus templat sampel apa pun yang tidak diperlukan.

DevOps insinyur

Tentukan tugas.

  1. Di repositori kloning, arahkan ke templates/assignments folder, lalu buka. iam-identitycenter-assigments.json File ini menjelaskan bagaimana Anda ingin menetapkan set izin ke Akun AWS atau OUs.

  2. Dalam SID parameter, masukkan pengidentifikasi untuk penugasan. Nilai ini harus unik, dan tidak dapat dimodifikasi setelah penerapan.

  3. Dalam Target parameter, tentukan akun atau organisasi tempat Anda ingin menerapkan set izin. Nilai yang valid adalah akun IDs, OUs, atauroot. rootmemberikan izin yang ditetapkan ke semua akun anggota di organisasi, tidak termasuk akun manajemen. Masukkan nilai dalam tanda kutip ganda, dan pisahkan beberapa nilai dengan koma. Akun IDs dan OUs harus mengikuti pola: {{account_name}}:{{account_id}} atau{{ou_name}}:{{ou_id}}. Jika Anda ingin menetapkan izin secara rekursif ke nested OUs, gunakan pola OU dengan wildcard di bagian akhir. Contoh: {{ou_name}}:{{ou_id}}:*

  4. Dalam PrincipalType parameter, masukkan tipe utama IAM Identity Center yang akan terpengaruh oleh set izin. Nilai-nilai yang valid adalah USER atau GROUP. Nilai ini tidak dapat dimodifikasi setelah penerapan.

  5. Dalam PrincipalID parameter, masukkan nama pengguna atau grup di toko identitas Pusat Identitas IAM yang akan terpengaruh oleh set izin. Nilai ini tidak dapat dimodifikasi setelah penerapan.

  6. Dalam PermissionSetName parameter, masukkan nama set izin yang ingin Anda tetapkan.

  7. Ulangi langkah 2—6 untuk membuat tugas sebanyak yang diperlukan dalam file ini. Biasanya, ada satu tugas untuk setiap set izin. Hapus tugas sampel apa pun yang tidak diperlukan.

  8. Simpan dan tutup file iam-identitycenter-assigments.json.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan sumber daya di akun administrator yang didelegasikan IAM Identity Center.

  1. Di akun administrator yang didelegasikan IAM Identity Center, buka konsol.AWS CloudFormation

  2. Menyebarkan iam-identitycenter-pipeline.yaml template. Berikan tumpukan nama yang jelas dan deskriptif, dan perbarui parameter seperti yang diinstruksikan. Untuk petunjuk, lihat Membuat tumpukan dalam CloudFormation dokumentasi.

DevOps insinyur

Menyebarkan sumber daya di akun AWS Organizations manajemen.

  1. Masuk ke akun manajemen organisasi.

  2. Buka konsol AWS CloudFormation.

  3. Di bilah navigasi, pilih nama yang saat ini ditampilkan Wilayah AWS. Kemudian pilih us-east-1 Region. Wilayah ini diperlukan agar MoveAccount EventBridge aturan dapat mendeteksi AWS CloudTrail peristiwa yang terkait dengan perubahan organisasi.

  4. Menyebarkan iam-identitycenter-organization template. Berikan tumpukan nama yang jelas dan deskriptif, dan perbarui parameter seperti yang diinstruksikan. Untuk petunjuk, lihat Membuat tumpukan dalam CloudFormation dokumentasi.

DevOps insinyur

Selesaikan pengaturan repositori jarak jauh.

Ubah status AWS CodeConnections koneksi dari PENDING keAVAILABLE. Koneksi ini dibuat saat Anda menerapkan CloudFormation tumpukan. Untuk petunjuk, lihat Memperbarui koneksi yang tertunda dalam CodeConnections dokumentasi.

DevOps insinyur

Unggah file ke repositori jarak jauh.

Unggah semua file yang telah Anda unduh dari aws-samples repositori dan edit pada langkah sebelumnya ke repositori jarak jauh. Perubahan pada main cabang memulai pipeline, yang membuat atau memperbarui set izin dan penugasan.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Perbarui set izin dan tugas.

Saat EventBridge aturan MoveAccount Amazon mendeteksi modifikasi pada akun di organisasi, CI/CD pipeline akan dimulai secara otomatis dan memperbarui set izin. Misalnya, jika Anda menambahkan akun ke OU yang ditentukan dalam file JSON tugas, maka CI/CD pipeline akan menerapkan izin yang disetel ke akun baru.

Jika Anda ingin memodifikasi set izin dan penetapan yang diterapkan, perbarui file JSON dan kemudian komit ke repositori jarak jauh.

Perhatikan hal berikut saat menggunakan CI/CD pipeline untuk mengelola kumpulan izin dan asosiasi yang diterapkan sebelumnya:

  • Jika Anda mengubah nama set izin, CI/CD pipeline akan menghapus set izin asli dan membuat yang baru.

  • Pipeline ini hanya mengelola set izin yang memiliki SSOPipeline:true tag.

  • Anda dapat memiliki beberapa set izin dan templat penetapan di folder yang sama di repositori.

  • Jika Anda menghapus templat, pipeline akan menghapus set penetapan atau izin.

  • Jika Anda menghapus seluruh blok JSON penetapan, pipeline akan menghapus penugasan dari IAM Identity Center.

  • Anda tidak dapat menghapus set izin yang ditetapkan ke Akun AWS. Pertama, Anda harus membatalkan penetapan set izin.

DevOps insinyur

Pemecahan Masalah

IsuSolusi

Akses kesalahan ditolak

Konfirmasikan bahwa Anda memiliki izin yang diperlukan untuk menyebarkan CloudFormation templat dan sumber daya yang ditentukan di dalamnya. Untuk informasi selengkapnya, lihat Mengontrol akses dalam CloudFormation dokumentasi.

Kesalahan saluran pipa dalam fase validasi

Kesalahan ini muncul jika ada kesalahan dalam set izin atau templat penugasan.

  1. Di CodeBuild, lihat detail build.

  2. Di log build, temukan error validasi yang memberikan informasi lebih lanjut tentang apa yang menyebabkan build gagal.

  3. Perbarui set izin atau templat penugasan, lalu komit ke repositori.

  4. CI/CD Pipa memulai ulang CodeBuild proyek. Pantau status untuk mengonfirmasi bahwa kesalahan validasi telah teratasi.

Sumber daya terkait

  • Set izin (dokumentasi Pusat Identitas IAM)