

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
<a name="manage-aws-permission-sets-dynamically-by-using-terraform"></a>

*Vinicius Elias dan Marcos Vinicius Pinto Jordao, Amazon Web Services*

## Ringkasan
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-summary"></a>

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](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) 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](https://docs.aws.amazon.com/controltower/latest/userguide/aft-overview.html) (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
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-prereqs"></a>
+ 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](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html) dalam dokumentasi Pusat Identitas IAM.
+ Sebuah sistem kontrol versi (VCS) repositori untuk menangani kode utama. Untuk sampel, lihat GitHub [repositori](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline/tree/main/samples/basic) 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](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-architecture"></a>

Diagram berikut menunjukkan komponen dan alur kerja untuk pola ini.

![\[Komponen dan alur kerja untuk mengelola set izin AWS menggunakan Terraform.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/69dc79c7-b4cd-4ad0-b0d2-d58cf0c7adaa/images/649e299c-1142-405a-8982-4a6b2e595d53.png)


**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 dibuat
+ `UpdateManagedAccount`— 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.

[Untuk contoh cara mengonfigurasi set izin menggunakan file JSON di repositori, lihat Informasi tambahan.](#manage-aws-permission-sets-dynamically-by-using-terraform-additional)

## Alat
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-tools"></a>

**Layanan AWS**
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)adalah layanan build terkelola penuh yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
+ [AWS CodeConnections](https://docs.aws.amazon.com/dtconsole/latest/userguide/welcome-connections.html)memungkinkan AWS sumber daya dan layanan, seperti CodePipeline, untuk terhubung ke repositori kode eksternal, seperti. GitHub
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)membantu 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)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
+ [AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/what-is-control-tower.html)membantu Anda mengatur dan mengatur lingkungan AWS multi-akun, mengikuti praktik terbaik preskriptif.
+ [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.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)membantu Anda mengelola akses masuk tunggal (SSO) secara terpusat ke semua aplikasi Anda Akun AWS dan cloud.
+ [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 Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)adalah 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](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Alat-alat lainnya**
+ [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**

Kode untuk pola ini tersedia di organisasi AWS Sampel di dalam GitHub repositori [sample-terraform-aws-permission-sets-pipeline](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline).

## Praktik terbaik
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-best-practices"></a>
+ Selalu sematkan versi modul dan penyedia Terraform yang digunakan untuk menjalankan kode dalam produksi.
+ Gunakan alat analisis kode statis, seperti [Checkov](https://www.checkov.io/), 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam dokumentasi IAM.

## Epik
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-epics"></a>

### Buat prasyarat (opsional)
<a name="create-the-prerequisites-optional"></a>


| 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 `s3-tf-backend-{ACCOUNT_ID}` dan tabel DynamoDB (). `ddb-tf-backend`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>aws s3api create-bucket --bucket s3-tf-backend-{ACCOUNT_ID}<br />aws s3api put-bucket-versioning --bucket s3-tf-backend-{ACCOUNT_ID} --versioning-configuration Status=Enabled<br />aws dynamodb create-table --table-name ddb-tf-backend --attribute-definitions AttributeName=LockID,AttributeType=S --key-schema AttributeName=LockID,KeyType=HASH --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1</pre> | Administrator AWS | 
| Buat peran lintas akun. | Anda harus memberikan peran IAM lintas akun dalam konfigurasi penyedia `event-source-account` Terraform AWS . Jika Anda belum membuat peran ini, gunakan langkah-langkah berikut untuk membuatnya:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>aws iam create-role \<br />    --role-name CrossAccountRole \<br />    --assume-role-policy-document '{<br />        "Version": "2012-10-17",		 	 	 <br />        "Statement": [<br />            {<br />                "Effect": "Allow",<br />                "Principal": {<br />                    "AWS": "arn:aws:iam::{ACCOUNT_ID}:root"<br />                },<br />                "Action": "sts:AssumeRole"<br />            }<br />        ]<br />    }'</pre>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>aws iam attach-role-policy \<br />    --role-name CrossAccountRole \<br />    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess</pre>Contoh ini menggunakan kebijakan [AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)IAM AWS terkelola. Jika mau, Anda dapat menggunakan kebijakan yang lebih spesifik. | Administrator AWS | 

### Siapkan repositori set izin
<a name="prepare-the-permission-set-repository"></a>


| 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](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline/tree/main/samples/basic) pada repositori solusi:── utama.tf── keluaran.tf── penyedia.jinja── templatSalin konten, simpan `providers.jinja` nilainya, dan buat penyesuaian yang diperlukan untuk file lain. Misalnya, tambahkan izin set file template ke dalam `templates` atau pin versi `aws-ia/permission-sets/aws` modul dalam `main.tf` file. | DevOps insinyur | 
| Komit perubahan Anda. | Komit dan dorong perubahan ke repositori yang Anda buat sebelumnya. Simpan nama repositori dan GitHub organisasinya, misalnya,. `myorg/aws-ps-pipeline` | DevOps insinyur | 

### Siapkan kode penerapan
<a name="prepare-the-deployment-code"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Unduh kontennya. | Unduh (kloning) konten dari [repositori](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline) solusi. | DevOps insinyur | 
| Memenuhi variabel. | Buat `terraform.tfvars` file dan tambahkan variabel yang diperlukan berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)<pre>repository_name                 = "myorg/aws-ps-pipeline"<br />branch_name                     = "main"<br />vcs_provider                    = "github"<br />account_lifecycle_events_source = "CT"</pre>Untuk informasi tentang opsi variabel tambahan, lihat file [variabel.tf](https://github.com/aws-samples/sample-terraform-aws-permission-sets-pipeline/blob/main/variables.tf) di repositori pola ini. GitHub  | DevOps insinyur | 
| Sesuaikan konfigurasi backend Terraform. | Dalam `backend.tf` file, ganti placeholder dengan nilai Anda sendiri. Gunakan AWS Control Tower home Wilayah AWS, dan berikan nama-nama bucket Amazon S3 dan tabel DynamoDB yang dibuat sebelumnya.<pre>terraform {<br />  required_version = ">=1.6"<br />  backend "s3" {<br />    region         = "{region}"<br />    bucket         = "{bucket_name}"<br />    key            = "terraform.tfstate"<br />    dynamodb_table = "{table_name}"<br />    encrypt        = "true"<br />  }<br />}</pre>Jika mau, Anda dapat menggunakan konfigurasi backend Terraform Anda sendiri. | DevOps insinyur | 
| Sesuaikan konfigurasi penyedia Terraform. | Dalam `providers.tf` file, ganti placeholder dengan informasi Anda sendiri. Gunakan Wilayah AWS Control Tower asal, dan berikan ARN dari peran IAM lintas akun yang dibuat sebelumnya untuk penyedia. `event-source-account`<pre>provider "aws" {<br />  region = "{region}"<br />}<br /><br />provider "aws" {<br />  alias  = "event-source-account"<br />  region = "{region}"<br />  assume_role {<br />    role_arn = "{role_arn}"<br />  }<br />}<br /></pre> | DevOps insinyur | 

### Terapkan solusi secara manual
<a name="deploy-the-solution-manually"></a>


| 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 `event-source-account` penyedia di langkah sebelumnya. Selain itu, peran ini harus memiliki akses ke AWS sumber daya yang digunakan dalam konfigurasi backend Terraform. | Administrator AWS | 
| Jalankan Terraform secara manual. | Untuk menginisialisasi, merencanakan, dan menerapkan konfigurasi, jalankan perintah Terraform berikut dalam urutan yang ditunjukkan:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html) | DevOps insinyur | 
| Periksa hasil penerapan. | Di akun administrator yang didelegasikan IAM Identity Center, periksa apakah `aws-ps-pipeline` pipeline telah dibuat. Periksa juga apakah ada AWS CodeConnections koneksi dengan status **Tertunda**. | AWS DevOps | 
| Selesaikan CodeConnections konfigurasi. | Untuk menyelesaikan CodeConnections konfigurasi, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html)Pipeline sekarang harus memiliki akses ke repositori set izin.Untuk petunjuk mendetail, lihat [Memperbarui sambungan yang tertunda](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html) di dokumentasi konsol Alat Pengembang.  | AWS DevOps | 

### Pilih alur eksekusi pipeline untuk menguji solusinya
<a name="choose-a-pipeline-execution-flow-to-test-the-solution"></a>


| 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 `main` cabang, pipeline dimulai. | AWS DevOps | 
| Jalankan pipa secara manual. | Untuk memulai pipeline secara manual, gunakan fitur [Rilis perubahan](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-rerun-manually.html) di AWS CodePipeline. | AWS DevOps | 

## Pemecahan masalah
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Akses ditolak | Verifikasi bahwa Anda memiliki izin yang diperlukan untuk menerapkan solusi. | 
| CodeConnections masalah | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html) | 
| Masalah eksekusi pipa | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html) | 
| Izin menetapkan masalah penerapan | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/manage-aws-permission-sets-dynamically-by-using-terraform.html) | 

## Sumber daya terkait
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-resources"></a>

**Layanan AWS dokumentasi**
+ [AWS IAM Identity Center Panduan Pengguna](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
+ [Kelola Akun AWS dengan set izin](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) (dokumentasi Pusat Identitas IAM)

**Sumber daya lainnya**
+ [AWS Modul Set Izin](https://registry.terraform.io/modules/aws-ia/permission-sets/aws/latest) (Terraform)

## Informasi tambahan
<a name="manage-aws-permission-sets-dynamically-by-using-terraform-additional"></a>

**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](https://registry.terraform.io/modules/aws-ia/permission-sets/aws/latest#json-file-templates) di situs web Terraform.

**Kiat**
+ Anda dapat menggunakan [blok impor](https://developer.hashicorp.com/terraform/language/import) 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](https://awslabs.github.io/aft-blueprints/index.html).