Mengatur set izin untuk beberapa akun dengan menggunakan Account Factory untuk Terraform - AWS Prescriptive Guidance

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

Mengatur set izin untuk beberapa akun dengan menggunakan Account Factory untuk Terraform

Anand Krishna Varanasi dan Siamak Heshmati, Amazon Web Services

Ringkasan

Pola ini membantu Anda mengintegrasikan AWS Control Tower Account Factory Terraform (AFT) dengan untuk mengonfigurasi izin untuk beberapa AWS IAM Identity Center Akun AWS pada skala besar. Pendekatan ini menggunakan AWS Lambda fungsi kustom untuk mengotomatiskan penetapan set izin ke Akun AWS yang dikelola sebagai organisasi. Ini merampingkan proses karena tidak memerlukan intervensi manual dari tim teknik platform Anda. Solusi ini dapat meningkatkan efisiensi operasional, keamanan dan konsistensi. Ini mempromosikan proses orientasi yang aman dan terstandarisasi AWS Control Tower, sehingga sangat diperlukan bagi perusahaan yang memprioritaskan kelincahan dan keandalan untuk infrastruktur cloud mereka.

Prasyarat dan batasan

Prasyarat

Batasan

  • Solusi ini hanya dapat digunakan dengan akun yang dikelola melalui AWS Control Tower. Solusi ini digunakan dengan menggunakan Account Factory untuk Terraform.

  • Pola ini tidak termasuk instruksi untuk mengatur federasi identitas dengan sumber identitas. Untuk informasi selengkapnya tentang cara menyelesaikan pengaturan ini, lihat tutorial sumber identitas Pusat Identitas IAM di dokumentasi Pusat Identitas IAM.

Arsitektur

Ikhtisar AFT

AFT menyiapkan pipeline Terraform yang membantu Anda menyediakan dan menyesuaikan akun Anda. AWS Control Tower AFT mengikuti GitOps model yang mengotomatiskan proses penyediaan akun di. AWS Control Tower Anda membuat file Terraform permintaan akun dan memasukkannya ke repositori. Ini memulai alur kerja AFT untuk penyediaan akun. Setelah penyediaan akun selesai, AFT dapat secara otomatis menjalankan langkah-langkah penyesuaian tambahan. Untuk informasi selengkapnya, lihat arsitektur AFT dalam AWS Control Tower dokumentasi.

AFT menyediakan repositori utama berikut:

  • aft-account-request— Repositori ini berisi kode Terraform untuk membuat atau memperbarui. Akun AWS

  • aft-account-customizations— Repositori ini berisi kode Terraform untuk membuat atau menyesuaikan sumber daya berdasarkan per akun.

  • aft-global-customizations— Repositori ini berisi kode Terraform untuk membuat atau menyesuaikan sumber daya untuk semua akun, dalam skala besar.

  • aft-account-provisioning-customizations— Repositori ini mengelola kustomisasi yang diterapkan hanya untuk akun tertentu yang dibuat oleh dan dikelola dengan AFT. Misalnya, Anda dapat menggunakan repositori ini untuk menyesuaikan penetapan pengguna atau grup di Pusat Identitas IAM atau untuk mengotomatiskan penutupan akun.

Ikhtisar solusi

Solusi khusus ini mencakup mesin AWS Step Functions status dan AWS Lambda fungsi yang menetapkan set izin untuk pengguna dan grup untuk beberapa akun. Mesin status yang digunakan melalui pola ini beroperasi bersama dengan mesin status AFT aft_account_provisioning_customizations yang sudah ada sebelumnya. Pengguna mengirimkan permintaan untuk memperbarui tugas pengguna dan grup IAM Identity Center baik saat baru Akun AWS dibuat atau setelah akun dibuat. Mereka melakukan ini dengan mendorong perubahan ke aft-account-request repositori. Permintaan untuk membuat atau memperbarui akun memulai aliran di Amazon DynamoDB Streams. Ini memulai fungsi Lambda, yang memperbarui pengguna dan grup Pusat Identitas IAM untuk target. Akun AWS

Berikut ini adalah contoh parameter yang dapat Anda berikan dalam fungsi Lambda untuk penetapan set izin untuk menargetkan pengguna dan grup:

custom_fields = { "InstanceArn" = "<Organization ID>", "PermissionSetArn" = "<Permission set ARN>", "PrincipalId" = "<Principal ID>", }

Berikut ini adalah parameter dalam pernyataan ini:

  • InstanceArn— Nama Sumber Daya Amazon (ARN) organisasi

  • PermissionSetArn— ARN dari set izin

  • PrincipalId— Pengidentifikasi pengguna atau grup di Pusat Identitas IAM tempat set izin akan diterapkan

catatan

Anda harus membuat set izin target, pengguna, dan grup sebelum menjalankan solusi ini.

Meskipun InstanceArn nilainya harus tetap konsisten, Anda dapat memodifikasi fungsi Lambda untuk menetapkan beberapa set izin ke beberapa identitas target. Parameter untuk set izin harus diakhiriPermissionSetArn, dan parameter untuk pengguna dan grup harus diakhiriPrincipalId. Anda harus mendefinisikan kedua atribut. Berikut ini adalah contoh cara mendefinisikan beberapa set izin dan target pengguna dan grup:

custom_fields = { "InstanceArn" = "<Organization ID>", "AdminAccessPermissionSetArn" = "<Admin privileges permission set ARN>", "AdminAccessPrincipalId" = "<Admin principal ID>", "ReadOnlyAccessPermissionSetArn" = "<Read-only privileges permission set ARN>", "ReadOnlyAccessPrincipalId" = "<Read-only principal ID>", }

Diagram berikut menunjukkan step-by-step alur kerja tentang cara solusi memperbarui set izin untuk pengguna dan grup dalam target Akun AWS pada skala besar. Saat pengguna memulai permintaan pembuatan akun, AFT memulai mesin status aft-account-provisioning-framework Step Functions. Mesin status ini memulai fungsi extract-alternate-sso Lambda. Fungsi Lambda menetapkan set izin untuk pengguna dan grup dalam target. Akun AWS Pengguna atau grup ini dapat berasal dari sumber identitas yang dikonfigurasi di IAM Identity Center. Contoh sumber identitas termasuk Okta, Active Directory, atau Ping Identity.

Alur kerja memperbarui set izin saat akun dibuat atau diperbarui.

Diagram menunjukkan alur kerja berikut saat akun baru dibuat:

  1. Seorang pengguna mendorong custom_fields perubahan ke aft-account-request repositori.

  2. AWS CodePipeline memulai AWS CodeBuild pekerjaan yang merekam metadata yang ditentukan pengguna ke dalam tabel Amazon aft-request-audit DynamoDB. Tabel ini memiliki atribut untuk merekam metadata yang ditentukan pengguna. ddb_event_nameAtribut mendefinisikan jenis operasi AFT:

    • Jika nilainyaINSERT, maka solusi akan menetapkan izin yang disetel ke identitas target saat yang baru Akun AWS dibuat.

    • Jika nilainyaUPDATE, maka solusi akan menetapkan izin yang disetel ke identitas target setelah dibuat. Akun AWS

  3. Amazon DynamoDB Streams memulai aft_alternate_sso_extract fungsi Lambda.

  4. Fungsi aft_alternate_sso_extract Lambda mengasumsikan peran AWS Identity and Access Management (IAM) dalam akun manajemen. AWS Control Tower

  5. Fungsi Lambda menetapkan set izin ke pengguna dan grup target dengan membuat panggilan API AWS SDK untuk Python (Boto3) create_account_assignment ke IAM Identity Center. Ini mengambil set izin dan penetapan identitas dari tabel Amazon aft-request-audit DynamoDB.

  6. Ketika alur kerja Step Functions selesai, set izin ditetapkan ke identitas target.

Otomatisasi dan skala

AFT beroperasi pada skala dengan menggunakan Layanan AWS seperti CodePipeline,, DynamoDB AWS CodeBuild, dan Lambda, yang sangat skalabel. Untuk otomatisasi tambahan, Anda dapat mengintegrasikan solusi ini dengan tiket atau sistem manajemen masalah, seperti Jira. Untuk informasi selengkapnya, lihat bagian Informasi tambahan dari pola ini.

Alat

Layanan AWS

  • Account Factory for Terraform (AFT) adalah alat utama dalam solusi ini. aft-account-provisioning-customizationsRepositori berisi kode Terraform untuk membuat penyesuaian, seperti penugasan pengguna atau grup Pusat Akun AWS Identitas IAM kustom.

  • Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.

  • 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 Step Functionsadalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan AWS Lambda fungsi dan lainnya Layanan AWS untuk membangun aplikasi bisnis yang penting.

Alat-alat lainnya

  • Python adalah bahasa pemrograman komputer tujuan umum.

  • Terraform adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.

Repositori kode

Repositori kode untuk AFT tersedia di GitHub AWS Control Tower Account Factory for Terraform repositori. Kode untuk pola ini tersedia di Govern SSO Assignments untuk menggunakan Account Akun AWS Factory for Terraform (AFT) repositori.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat peran IAM.

Di akun AWS Control Tower manajemen, gunakan Terraform untuk membuat peran IAM. Peran ini memiliki akses lintas akun dan kebijakan kepercayaan yang memungkinkan akses federasi dari penyedia identitas. Ini juga memiliki izin untuk memberikan akses ke akun lain melalui AWS Control Tower. Fungsi Lambda akan mengambil peran ini. Lakukan hal-hal berikut:

  1. Unduh AFTCrossAccountRole.tf file dari repositori GitHub kode.

  2. Ubah AFTCrossAccountRole.tf file seperlunya untuk AWS lingkungan Anda.

  3. Di Terraform, masukkan perintah berikut untuk membuat peran IAM ini:

    terraform init terraform plan terraform apply
  4. Validasi bahwa peran berhasil diterapkan dan memiliki akses lintas akun yang diharapkan.

AWS DevOps, arsitek Cloud

Sesuaikan solusi untuk lingkungan Anda.

  1. Masukkan perintah berikut untuk mengkloning Govern SSO Assignments untuk menggunakan Account Akun AWS Factory for Terraform (AFT) repositori ke workstation lokal Anda.

    git clone https://github.com/aws-samples/aft-custom-sso-assignment.git
  2. Di aft-account-provisioning-customizations/terraform folder, buka variables.tf file.

  3. Ubah variabel sesuai kebutuhan untuk lingkungan Anda.

  4. Simpan dan tutup file variables.tf.

  5. Buka account-request.tf file di aft-account-request repositori Anda.

  6. Ubah custom_fields parameter untuk menentukan set izin dan target pengguna dan grup. Untuk informasi lebih lanjut, lihat bagian Arsitektur dari pola ini.

  7. Simpan dan tutup file account-request.tf.

AWS DevOps, arsitek Cloud

Menyebarkan solusinya.

  1. Di repositori kloning, salin isi terraform folder, lalu tempelkan ke terraform folder di repositori. aft-account-provisioning-customizations

  2. Di akun manajemen AFT, mulai ct-aft-account-provisioning-customizations pipa. Ini menyebarkan solusi khusus. Untuk petunjuk, lihat Memulai pipeline di CodePipeline.

  3. Validasi bahwa sumber daya berhasil digunakan di akun manajemen AFT.

AWS DevOps, arsitek Cloud

Siapkan koneksi repositori kode.

Siapkan koneksi antara repositori kode tempat Anda akan menyimpan file konfigurasi dan file Anda. Akun AWS Untuk petunjuk, lihat Tambahkan penyedia sumber pihak ketiga ke saluran pipa yang digunakan CodeConnections dalam AWS CodePipeline dokumentasi.

AWS DevOps, arsitek Cloud
TugasDeskripsiKeterampilan yang dibutuhkan

Mulai pipeline AFT untuk menerapkan akun baru.

Ikuti petunjuk di Menyediakan akun baru dengan AFT untuk memulai pipeline yang membuat yang baru Akun AWS di AWS Control Tower lingkungan Anda. Tunggu proses pembuatan akun selesai.

AWS DevOps, arsitek Cloud

Validasi perubahan.

  1. Buka konsol AWS IAM Identity Center.

  2. Dalam daftar akun, pilih akun yang baru dibuat.

  3. Validasi bahwa set izin telah ditetapkan untuk memberikan akses ke pengguna dan grup target.

AWS DevOps, arsitek Cloud

Pemecahan Masalah

IsuSolusi

Penugasan set izin tidak berfungsi.

Pastikan parameter ARN grup, id organisasi, dan Lambda sudah benar. Sebagai contoh, lihat bagian Ikhtisar solusi dari pola ini.

Memperbarui kode di repositori tidak memulai pipa.

Masalah ini terkait dengan konektivitas antara Anda Akun AWS dan repositori. Dalam Konsol Manajemen AWS, validasi bahwa koneksi aktif. Untuk informasi selengkapnya, lihat GitHub koneksi dalam AWS CodePipeline dokumentasi.

Informasi tambahan

Mengintegrasikan dengan alat manajemen tiket

Anda dapat memilih untuk mengintegrasikan solusi ini dengan alat manajemen tiket atau masalah, seperti Jira atau ServiceNow. Diagram berikut menunjukkan contoh alur kerja untuk opsi ini. Anda dapat mengintegrasikan alat manajemen tiket dengan repositori solusi AFT dengan menggunakan konektor alat Anda. Untuk konektor Jira, lihat Mengintegrasikan Jira dengan. GitHub Untuk ServiceNow konektor, lihat Mengintegrasikan dengan GitHub. Anda bahkan dapat membuat solusi khusus yang mengharuskan pengguna untuk memberikan ID tiket sebagai bagian dari persetujuan permintaan tarik. Jika permintaan untuk membuat yang baru Akun AWS dengan menggunakan AFT disetujui, peristiwa tersebut dapat memulai alur kerja yang menambahkan bidang khusus ke repositori. aft-account-request GitHub Anda dapat mendesain alur kerja khusus apa pun yang memenuhi persyaratan kasus penggunaan Anda.

Alur kerja yang menggunakan GitHub Tindakan dan alat manajemen tiket.

Diagram menunjukkan alur kerja berikut:

  1. Pengguna meminta penetapan set izin khusus di alat manajemen tiket, seperti Jira.

  2. Setelah kasus disetujui, alur kerja mulai memperbarui penetapan set izin. (Opsional) Anda dapat menggunakan plugin untuk otomatisasi kustom langkah ini.

  3. Operator mengirim kode Terraform dengan parameter set izin yang diperbarui ke aft-account-request repositori ke cabang pengembangan atau fitur.

  4. GitHub Tindakan dimulai AWS CodeBuild dengan menggunakan panggilan OpenID Connect (OIDC). CodeBuild melakukan pemindaian keamanan infrastruktur sebagai kode (IAc) dengan menggunakan alat seperti tfsec dan checkov. Ini memperingatkan operator dari setiap pelanggaran keamanan.

  5. Jika tidak ada pelanggaran yang ditemukan, GitHub Actions akan membuat permintaan tarik otomatis dan menetapkan peninjauan kode kepada pemilik kode. Ini juga membuat tag untuk permintaan tarik.

  6. Jika pemilik kode menyetujui peninjauan kode, alur kerja GitHub Tindakan lain akan dimulai. Ini memeriksa standar permintaan tarik, termasuk:

    • Jika judul permintaan tarik memenuhi persyaratan.

    • Jika badan permintaan tarik berisi nomor kasus yang disetujui.

    • Jika permintaan tarik ditandai dengan benar.

  7. Jika permintaan tarik memenuhi standar, GitHub Actions akan memulai alur kerja produk AFT. Ini menggunakan memulai ct-aft-account-request pipa di AWS CodePipeline. Pipeline ini memulai mesin status aft-account-provisioning-framework kustom di Step Functions. Mesin status ini berfungsi seperti yang dijelaskan sebelumnya di bagian Ikhtisar solusi dari pola ini.