

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
<a name="govern-permission-sets-aft"></a>

*Anand Krishna Varanasi dan Siamak Heshmati, Amazon Web Services*

## Ringkasan
<a name="govern-permission-sets-aft-summary"></a>

Pola ini membantu Anda mengintegrasikan [AWS Control Tower Account Factory Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) dengan untuk mengonfigurasi izin untuk beberapa [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) Akun AWS pada skala besar. Pendekatan ini menggunakan AWS Lambda fungsi kustom untuk mengotomatiskan penetapan [set izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) 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
<a name="govern-permission-sets-aft-prereqs"></a>

**Prasyarat**
+ Akun AWS, dikelola melalui AWS Control Tower. Untuk informasi selengkapnya, lihat [Memulai dengan AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/getting-started-with-control-tower.html).
+ Account Factory untuk Terraform, digunakan di akun khusus di lingkungan Anda. Untuk informasi selengkapnya, lihat [Menerapkan AWS Control Tower Account Factory untuk Terraform](https://docs.aws.amazon.com/controltower/latest/userguide/aft-getting-started.html).
+ Instance IAM Identity Center, disiapkan di lingkungan Anda. Untuk informasi selengkapnya, lihat [Memulai Pusat Identitas IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html).
+ [Grup](https://docs.aws.amazon.com/singlesignon/latest/userguide/users-groups-provisioning.html#groups-concept) Pusat Identitas IAM aktif, dikonfigurasi.  Untuk informasi selengkapnya, lihat [Menambahkan grup ke grup Direktori Pusat Identitas IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html).
+ Python versi 3.9 atau yang lebih baru, diinstal

**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](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html) Pusat Identitas IAM.

## Arsitektur
<a name="govern-permission-sets-aft-architecture"></a>

**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](https://docs.aws.amazon.com/controltower/latest/userguide/aft-architecture.html) 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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html) 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 diakhiri`PermissionSetArn`, dan parameter untuk pengguna dan grup harus diakhiri`PrincipalId`. 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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/14751255-3781-48db-a6b7-1a03e28c1020/images/d1de252d-8ac9-4f7d-a559-4ab3e852f325.png)


Diagram menunjukkan alur kerja berikut saat akun baru dibuat:

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

1. 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_name`Atribut mendefinisikan jenis operasi AFT:
   + Jika nilainya`INSERT`, maka solusi akan menetapkan izin yang disetel ke identitas target saat yang baru Akun AWS dibuat.
   + Jika nilainya`UPDATE`, maka solusi akan menetapkan izin yang disetel ke identitas target setelah dibuat. Akun AWS 

1. Amazon DynamoDB Streams memulai `aft_alternate_sso_extract` fungsi Lambda.

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

1. Fungsi Lambda menetapkan set izin ke pengguna dan grup target dengan membuat panggilan API AWS SDK untuk Python (Boto3) [create\_account\_assignment](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sso-admin/client/create_account_assignment.html) ke IAM Identity Center. Ini mengambil set izin dan penetapan identitas dari tabel Amazon `aft-request-audit` DynamoDB.

1. 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](#govern-permission-sets-aft-additional) dari pola ini.

## Alat
<a name="govern-permission-sets-aft-tools"></a>

**Layanan AWS**
+ [Account Factory for Terraform (AFT)](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) adalah alat utama dalam solusi ini. `aft-account-provisioning-customizations`Repositori berisi kode Terraform untuk membuat penyesuaian, seperti penugasan pengguna atau grup Pusat Akun AWS Identitas IAM khusus.
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan terukur.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)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 Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html)adalah 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](https://www.python.org/) pemrograman komputer tujuan umum.
+ [Terraform](https://www.terraform.io/) 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](https://github.com/aws-ia/terraform-aws-control_tower_account_factory) repositori. Kode untuk pola ini tersedia di [Govern SSO Assignments untuk menggunakan Account Akun AWS Factory for Terraform](https://github.com/aws-samples/aft-custom-sso-assignment) (AFT) repositori.

## Praktik terbaik
<a name="govern-permission-sets-aft-best-practices"></a>
+ Memahami [model tanggung jawab AWS bersama](https://aws.amazon.com/compliance/shared-responsibility-model/).
+ Ikuti rekomendasi keamanan untuk AWS Control Tower. Untuk informasi selengkapnya, lihat [Keamanan di AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/security.html).
+ Ikuti prinsip hak istimewa yang paling sedikit. Untuk informasi selengkapnya, lihat [Menerapkan izin hak istimewa paling sedikit.](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)
+ Membangun set izin khusus dan terfokus dan peran IAM untuk grup dan unit bisnis.

## Epik
<a name="govern-permission-sets-aft-epics"></a>

### Terapkan solusinya
<a name="deploy-the-solution"></a>


| Tugas | Deskripsi | Keterampilan 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:[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | AWS DevOps, arsitek Cloud | 
| Sesuaikan solusi untuk lingkungan Anda. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | AWS DevOps, arsitek Cloud | 
| Menyebarkan solusinya. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-connections.html) dalam AWS CodePipeline dokumentasi. | AWS DevOps, arsitek Cloud | 

### Gunakan solusinya
<a name="use-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Mulai pipeline AFT untuk menerapkan akun baru. | Ikuti petunjuk di [Menyediakan akun baru dengan AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-provision-account.html) 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. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/govern-permission-sets-aft.html) | AWS DevOps, arsitek Cloud | 

## Pemecahan masalah
<a name="govern-permission-sets-aft-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| 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](https://docs.aws.amazon.com/codepipeline/latest/userguide/connections-github.html) dalam AWS CodePipeline dokumentasi. | 

## Informasi tambahan
<a name="govern-permission-sets-aft-additional"></a>

**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](https://support.atlassian.com/jira-cloud-administration/docs/integrate-jira-software-with-github/) dengan. GitHub Untuk ServiceNow konektor, lihat [Mengintegrasikan dengan GitHub](https://www.servicenow.com/docs/bundle/washingtondc-it-asset-management/page/product/software-asset-management2/concept/integrate-with-github.html). Anda bahkan dapat membuat solusi khusus yang mengharuskan pengguna memberikan ID tiket sebagai bagian dari persetujuan permintaan tarik. Jika permintaan untuk membuat 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.](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/14751255-3781-48db-a6b7-1a03e28c1020/images/83763f65-32ea-4de0-932f-14a1b2d1d3ad.png)


Diagram menunjukkan alur kerja berikut:

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

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

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

1. GitHub Tindakan dimulai AWS CodeBuild dengan menggunakan panggilan OpenID Connect (OIDC). CodeBuild [melakukan pemindaian keamanan infrastruktur sebagai kode (IAc) dengan menggunakan alat seperti [tfsec](https://aquasecurity.github.io/tfsec/v1.20.0/) dan checkov.](https://www.checkov.io/) Ini memperingatkan operator dari setiap pelanggaran keamanan.

1. Jika tidak ditemukan pelanggaran, GitHub Actions akan membuat permintaan tarik otomatis dan menetapkan tinjauan kode kepada pemilik kode. Ini juga membuat tag untuk permintaan tarik.

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

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