

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

# Mengelola AWS Organizations kebijakan sebagai kode dengan menggunakan AWS CodePipeline dan Amazon Bedrock
<a name="manage-organizations-policies-as-code"></a>

*Andre Cavalcante dan Mariana Pessoa de Queiroz, Amazon Web Services*

## Ringkasan
<a name="manage-organizations-policies-as-code-summary"></a>

Anda dapat menggunakan *kebijakan otorisasi* AWS Organizations untuk mengonfigurasi dan mengelola akses untuk prinsipal dan sumber daya secara terpusat di akun anggota Anda. [Kebijakan kontrol layanan (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) menentukan izin maksimum yang tersedia untuk peran AWS Identity and Access Management (IAM) dan pengguna di organisasi Anda. [Kebijakan kontrol sumber daya (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) menentukan izin maksimum yang tersedia untuk sumber daya di organisasi Anda.

Pola ini membantu Anda mengelola SCPs dan RCPs sebagai infrastruktur sebagai kode (IAc) yang Anda terapkan melalui pipeline integrasi berkelanjutan dan penerapan berkelanjutan (CI/CD). Dengan menggunakan AWS CloudFormation atau Hashicorp Terraform untuk mengelola kebijakan ini, Anda dapat mengurangi beban yang terkait dengan membangun dan memelihara beberapa kebijakan otorisasi.

Pola ini mencakup fitur-fitur berikut:
+ Anda membuat, menghapus, dan memperbarui kebijakan otorisasi dengan menggunakan *file manifes* (`scp-management.json`dan`rcp-management.json`).
+ Anda bekerja dengan pagar pembatas alih-alih kebijakan. Anda menentukan pagar pembatas dan targetnya dalam file manifes.
+ Pipeline, yang menggunakan AWS CodeBuild dan AWS CodePipeline, menggabungkan dan mengoptimalkan pagar pembatas dalam file manifes. Untuk setiap pernyataan dalam file manifes, pipeline menggabungkan pagar pembatas menjadi satu SCP atau RCP dan kemudian menerapkannya ke target yang ditentukan.
+ AWS Organizations menerapkan kebijakan untuk target Anda. *Target* dapat berupa Akun AWS, unit organisasi (OU), lingkungan (yang merupakan grup akun atau OUs yang Anda tentukan dalam `environments.json` file), atau sekelompok akun yang berbagi [AWS tag](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html).
+ Amazon Bedrock membaca log pipeline dan merangkum semua perubahan kebijakan.
+ Pipa membutuhkan persetujuan manual. Penyetuju dapat meninjau ringkasan eksekutif yang disiapkan Amazon Bedrock, yang membantu mereka memahami perubahan.

## Prasyarat dan batasan
<a name="manage-organizations-policies-as-code-prereqs"></a>

**Prasyarat**
+ Beberapa Akun AWS yang dikelola sebagai organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat [Membuat organisasi](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_create.html).
+ Fitur SCP dan RCP diaktifkan di. AWS Organizations Untuk informasi selengkapnya, lihat [Mengaktifkan jenis kebijakan](https://docs.aws.amazon.com/organizations/latest/userguide/enable-policy-type.html).
+ [Terraform versi 1.9.8 atau yang lebih baru diinstal.](https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli)
+ Jika Anda tidak menerapkan solusi ini melalui pipeline Terraform, file status Terraform harus disimpan [dalam](https://developer.hashicorp.com/terraform/language/backend/s3) bucket Amazon Simple Storage Service (Amazon S3) di Akun AWS tempat Anda menerapkan pipeline manajemen kebijakan.
+ [Python versi 3.13.3 atau yang lebih baru diinstal.](https://www.python.org/downloads/)

**Batasan**
+ Anda tidak dapat menggunakan pola ini untuk mengelola SCPs atau RCPs yang dibuat di luar CI/CD pipeline ini. Namun, Anda dapat membuat ulang kebijakan yang ada melalui pipeline. Untuk informasi selengkapnya, lihat *Memigrasi kebijakan yang ada ke pipeline* di bagian [Informasi tambahan](#manage-organizations-policies-as-code-additional) pada pola ini.
+ Jumlah akun OUs, dan kebijakan di setiap akun tunduk pada [kuota dan batas layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_reference_limits.html) untuk AWS Organizations.
+ Pola ini tidak dapat digunakan untuk mengonfigurasi [kebijakan manajemen](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_management_policies.html) AWS Organizations, seperti kebijakan cadangan, kebijakan tag, kebijakan aplikasi obrolan, atau kebijakan deklaratif.

## Arsitektur
<a name="manage-organizations-policies-as-code-architecture"></a>

Diagram berikut menunjukkan alur kerja pipa manajemen kebijakan dan sumber daya yang terkait.

![Melepaskan SCPs dan RCPs melalui jalur manajemen kebijakan.](https://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/372a1ace-5b2e-4f93-9f88-b5b0519ded48/images/a2cceb99-2b93-48e0-b072-bc61a572201f.png)


Diagram menunjukkan alur kerja berikut:

1. Seorang pengguna melakukan perubahan pada file `scp-management.json` atau `rcp-management.json` manifes di cabang utama repositori jarak jauh.

1. Perubahan ke `main` cabang memulai pipa di AWS CodePipeline.

1. CodePipeline memulai `Validate-Plan` CodeBuild proyek. Proyek ini menggunakan skrip Python di repositori jarak jauh untuk memvalidasi kebijakan dan file manifes kebijakan. CodeBuild Proyek ini melakukan hal berikut:

   1. Memeriksa bahwa file manifes SCP dan RCP berisi pernyataan unik IDs ()`Sid`.

   1. Menggunakan skrip `scp-policy-processor/main.py` dan `rcp-policy-processor/main.py` Python untuk menggabungkan pagar pembatas di folder pagar pembatas menjadi satu kebijakan RCP atau SCP. Ini menggabungkan pagar pembatas yang memiliki hal yang sama`Resource`,`Action`, dan. `Condition`

   1. Menggunakan AWS Identity and Access Management Access Analyzer untuk memvalidasi kebijakan akhir yang dioptimalkan. Jika ada temuan, pipa berhenti.

   1. Membuat `scps.json` dan `rcps.json` file, yang digunakan Terraform untuk membuat sumber daya.

   1. Menjalankan `terraform plan` perintah, yang membuat rencana eksekusi Terraform.

1. (Opsional) `Validate-Plan` CodeBuild Proyek menggunakan `bedrock-prompt/prompt.py` skrip untuk mengirim prompt ke Amazon Bedrock. Anda menentukan prompt dalam `bedrock-prompt/prompt.txt` file. Amazon Bedrock menggunakan Anthropic Claude Sonnet 3.5 untuk menghasilkan ringkasan perubahan yang diusulkan dengan menganalisis log Terraform dan Python.

1. CodePipeline menggunakan topik Amazon Simple Notification Service (Amazon SNS) untuk memberi tahu pemberi persetujuan bahwa perubahan harus ditinjau. Jika Amazon Bedrock menghasilkan ringkasan perubahan, notifikasi menyertakan ringkasan ini.

1. Penyetuju kebijakan menyetujui tindakan tersebut. CodePipeline Jika Amazon Bedrock membuat ringkasan perubahan, pemberi persetujuan dapat meninjau ringkasan CodePipeline sebelum menyetujui.

1. CodePipeline memulai `Apply` CodeBuild proyek. Proyek ini menggunakan Terraform untuk menerapkan perubahan RCP dan SCP di. AWS Organizations

Template IAc yang terkait dengan arsitektur ini juga menyebarkan sumber daya berikut yang mendukung pipeline manajemen kebijakan:
+ Bucket Amazon S3 untuk menyimpan CodePipeline artefak dan skrip, seperti dan `scp-policy-processor/main.py` `bedrock-prompt/prompt.py`
+ Kunci AWS Key Management Service (AWS KMS) yang mengenkripsi sumber daya yang dibuat oleh solusi ini

## Alat
<a name="manage-organizations-policies-as-code-tools"></a>

**Layanan AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) adalah layanan AI yang dikelola sepenuhnya yang membuat banyak model fondasi berkinerja tinggi tersedia untuk digunakan melalui API terpadu.
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html)adalah layanan build yang dikelola sepenuhnya yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan. 
+ [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 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.
+ [AWS SDK untuk Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)adalah kit pengembangan perangkat lunak yang membantu Anda mengintegrasikan aplikasi, perpustakaan, atau skrip Python Anda. Layanan AWS
+ [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**
+ [HashiCorp Terraform](https://www.terraform.io/docs) adalah alat IAc yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.

**Repositori kode**

Kode untuk pola ini tersedia di [organizations-policy-pipeline](https://github.com/aws-samples/organizations-policy-pipeline) GitHub repositori. Berikut ini adalah file kunci yang terdapat dalam `sample-repository` folder:
+ Dalam `environments` folder, `environments.json` berisi daftar lingkungan. *Lingkungan* adalah sekelompok target, dan mereka dapat berisi Akun AWS IDs atau unit organisasi (OUs).
+ Dalam `rcp-management` folder:
  + `guardrails`Folder berisi pagar pembatas individual untuk Anda RCPs
  + `policies`Folder berisi individu RCPs
  + File `rcp-management.json` manifes membantu Anda mengelola pagar pembatas RCP, penuh RCPs, dan target terkaitnya.
+ Dalam `scp-management` folder:
  + `guardrails`Folder berisi pagar pembatas individual untuk Anda SCPs
  + `policies`Folder berisi individu SCPs
  + File `scp-management.json` manifes membantu Anda mengelola pagar pembatas SCP, penuh SCPs, dan target terkaitnya.
+ `utils`Folder berisi skrip yang dapat membantu Anda memigrasikan saat ini SCPs RCPs sehingga Anda dapat mengelolanya melalui pipeline. Untuk informasi selengkapnya, lihat bagian [Informasi tambahan](#manage-organizations-policies-as-code-additional) dari pola ini.

## Praktik terbaik
<a name="manage-organizations-policies-as-code-best-practices"></a>
+ Sebelum Anda mengatur pipeline, kami sarankan Anda memverifikasi bahwa Anda belum mencapai batas AWS Organizations [kuota](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_reference_limits.html) Anda.
+ Kami menyarankan Anda menggunakan akun AWS Organizations manajemen hanya untuk tugas-tugas yang harus dilakukan di akun itu. Untuk informasi selengkapnya, lihat [Praktik terbaik untuk akun manajemen](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_best-practices_mgmt-acct.html#bp_mgmt-acct_use-mgmt).

## Epik
<a name="manage-organizations-policies-as-code-epics"></a>

### Siapkan akun target
<a name="set-up-the-target-account"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat repositori. | Buat repositori tempat tim operasi keamanan Anda akan mengelola kebijakan. [Gunakan salah satu penyedia repositori pihak ketiga yang AWS CodeConnections mendukung.](https://docs.aws.amazon.com/dtconsole/latest/userguide/supported-versions-connections.html) | DevOps insinyur | 
| Delegasikan administrasi kebijakan. | Delegasikan administrasi AWS Organizations kebijakan ke akun anggota tempat Anda menerapkan pipeline. Untuk petunjuk, lihat [Membuat kebijakan delegasi berbasis sumber daya](https://docs.aws.amazon.com/organizations/latest/userguide/orgs-policy-delegate.html) dengan. AWS Organizations Untuk kebijakan sampel, lihat *Contoh kebijakan delegasi berbasis sumber daya* di bagian [Informasi tambahan](#manage-organizations-policies-as-code-additional) dari pola ini. | Administrator AWS | 
| (Opsional) Aktifkan model pondasi. | Jika Anda ingin membuat ringkasan perubahan kebijakan, aktifkan akses ke model dasar Anthropic Claude 3.5 Sonnet di Amazon Bedrock di Akun AWS tempat Anda menerapkan pipeline. Untuk petunjuknya, lihat [Menambahkan atau menghapus akses ke model foundation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html). | AWS Umum | 

### Menyebarkan sumber daya untuk pipa
<a name="deploy-the-resources-for-the-pipeline"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repositori. | Masukkan perintah berikut untuk mengkloning [organizations-policy-pipeline ](https://github.com/aws-samples/organizations-policy-pipeline)repositori dari: GitHub<br />`git clone https://github.com/aws-samples/organizations-policy-pipeline.git` | DevOps insinyur | 
| Tentukan metode penerapan Anda. | 1. Di repositori kloning, buka file. `variables.tf`<br />2. Untuk`project_name`, masukkan awalan yang ingin Anda terapkan ke nama sumber daya yang digunakan.<br />3. Untuk`provider_type`, masukkan penyedia repositori jarak jauh. Nilai yang valid disediakan dalam file.<br />4. Untuk`full_repository_name`, masukkan nama repositori jarak jauh.<br />5. Untuk`branch_name`, masukkan nama cabang Git yang akan Anda gunakan untuk menyebarkan kebijakan. Dorongan atau penggabungan di cabang ini memulai pipa. Biasanya, ini adalah cabang utama.<br />6. Untuk`terraform_version`, masukkan versi Terraform yang Anda gunakan.<br />7. Untuk`enable_bedrock`, masukkan `true` jika Anda ingin Amazon Bedrock meringkas perubahan. Masukkan `false` jika Anda tidak ingin menghasilkan ringkasan perubahan.<br />8. Untuk`tags`, masukkan pasangan nilai kunci yang ingin Anda tetapkan sebagai tag ke sumber daya yang diterapkan.<br />9. Simpan dan tutup file `variables.tf`. | DevOps insinyur | 
| Menyebarkan pipa. | 1. Masukkan perintah berikut untuk membuat rencana dan meninjau perubahan:<pre>terraform plan</pre><br />2. Masukkan perintah berikut untuk menerapkan rencana dan membuat infrastruktur pipa:<pre>terraform apply</pre> | DevOps insinyur, Terraform | 
| Hubungkan repositori jarak jauh. | Pada langkah sebelumnya, Terraform membuat CodeConnections koneksi ke repositori pihak ketiga. Di [konsol Alat AWS Pengembang](https://console.aws.amazon.com/codesuite/settings/connections), ubah status koneksi dari `PENDING` ke`AVAILABLE`. Untuk petunjuk, lihat [Memperbarui koneksi yang tertunda](https://docs.aws.amazon.com/dtconsole/latest/userguide/connections-update.html). | AWS DevOps | 
| Langganan topik Amazon SNS. | Terraform membuat topik Amazon SNS. Berlangganan titik akhir ke topik dan konfirmasikan langganan sehingga pemberi persetujuan menerima pemberitahuan tentang tindakan persetujuan yang tertunda dalam pipeline. Untuk petunjuknya, lihat [Membuat langganan ke topik Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html). | AWS Umum | 

### Tentukan pagar dan kebijakan Anda
<a name="define-your-guardrails-and-policies"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Isi repositori jarak jauh. | Dari repositori kloning, salin isi `sample-repository` folder ke repositori jarak jauh Anda. Ini termasuk`environments`,`rcp-management`,`scp-management`, dan `utils` folder. | DevOps insinyur | 
| Tentukan lingkungan Anda. | 1. Di `environments` folder, buka `environments.json` file. Ini adalah file di mana Anda menentukan target Akun AWS dan OUs untuk Anda RCPs dan SCPs.<br />2. Hapus contoh lingkungan.<br />3. Tambahkan lingkungan target Anda dalam format berikut:<pre>[<br />    {<br />        "ID": "<environment-name>",<br />        "Target": [<br />            "<ou-name>:<ou-id>",<br />            "<account-name>:<account-id>"<br />        ]<br />    }<br />]</pre><br />Di mana:`<environment-name>`adalah nama yang Anda tetapkan ke grup OUs dan akun AWS. Anda dapat menggunakan nama ini dalam file manifes untuk menentukan di mana Anda ingin menerapkan kebijakan Anda.`<ou-name>`adalah nama target OU.`<ou-id>`adalah ID dari target OU.`<account-name>`adalah nama targetnya Akun AWS.`<account-id>`adalah ID target Akun AWS.<br />Sebagai contoh, lihat [repositori kode sumber](https://github.com/aws-samples/organizations-policy-pipeline/blob/main/sample-repository/environments/environments.json).<br />4. Simpan dan tutup file `environments.json`. | DevOps insinyur | 
| Tentukan pagar pembatas Anda. | 1. Arahkan ke `rcp-management/guardrails` folder di repositori jarak jauh Anda. Ini adalah folder tempat Anda menentukan pagar pembatas untuk file manifes RCP Anda. Setiap pagar pembatas harus dalam file individual. File guardrail dapat berisi satu atau lebih pernyataan.Anda dapat menggunakan pagar pembatas yang sama dalam beberapa pernyataan dalam file manifes untuk SCPs dan. RCPs Jika Anda memodifikasi pagar pembatas, kebijakan apa pun yang mencakup pagar pembatas ini akan terpengaruh.<br />2. Hapus semua contoh pagar pembatas yang disalin dari repositori kode sumber.<br />3. Buat file.json baru dan beri nama deskriptif.<br />4. Buka file.json yang Anda buat.<br />5. Tentukan pagar pembatas dalam format berikut:<pre>[<br />    {<br />        "Sid": "<guardrail-name>",<br />        "Effect": "<effect-value>",<br />        "Action": [<br />            "<action-name>"<br />        ],<br />        "Resource": "<resource-arn>",<br />        "Condition": {<br />            "<condition-operator>": {<br />                "<condition-key>": [<br />                    "<condition-value>"<br />                ]<br />            }<br />        }<br />    }<br />]</pre><br />Di mana:`<guardrail-name>`adalah nama unik untuk pagar pembatas. Nama ini tidak dapat digunakan untuk pagar pembatas lainnya.`<effect-value>`harus `Allow` atau`Deny`. Untuk informasi lebih lanjut, lihat [Efek](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html).`<action-name>`harus merupakan nama yang valid dari tindakan yang didukung layanan. Untuk informasi selengkapnya, lihat [Tindakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html).`<resource-arn>`adalah Nama Sumber Daya Amazon (ARN) dari sumber daya yang diterapkan pagar pembatas. Anda juga dapat menggunakan karakter wildcard, seperti `*` atau`?`. Untuk informasi selengkapnya, lihat [Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html).`<condition-operator>`adalah operator kondisi yang valid. Untuk informasi selengkapnya, lihat [Operator kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html).`<condition-key>`adalah kunci konteks kondisi global yang valid atau kunci konteks khusus layanan. Untuk informasi lebih lanjut, lihat [Kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html).`<condition-value>`adalah nilai spesifik yang digunakan dalam suatu kondisi untuk mengevaluasi apakah pagar pembatas berlaku. Untuk informasi lebih lanjut, lihat [Kondisi](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html).<br />Misalnya pagar pembatas RCP, lihat repositori kode [sumber](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/rcp-management/guardrails).<br />6. Simpan dan tutup file.json.<br />7. Ulangi langkah-langkah ini untuk membuat pagar pembatas RCP sebanyak yang diperlukan.<br />8. Ulangi langkah-langkah ini di `scp-management/guardrails` folder untuk membuat pagar pembatas sebanyak yang Anda butuhkan untuk Anda. SCPs Misalnya pagar pembatas SCP, lihat repositori kode [sumber](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/scp-management/guardrails). | DevOps insinyur | 
| Tentukan kebijakan Anda. | 1. Arahkan ke `rcp-management/policies` folder di repositori jarak jauh Anda. Ini adalah folder tempat Anda menentukan kebijakan lengkap untuk file manifes RCP Anda. Setiap kebijakan harus berupa file individual.Jika Anda mengubah kebijakan di folder ini, perubahan kebijakan memengaruhi akun apa pun atau OUs kebijakan ini diterapkan, sebagaimana didefinisikan dalam file manifes.<br />2. Hapus kebijakan contoh apa pun yang disalin dari repositori kode sumber.<br />3. Buat file.json baru dan beri nama deskriptif.<br />4. Buka file.json yang Anda buat.<br />5. Tentukan RCP. Misalnya RCPs, lihat [repositori kode sumber](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/rcp-management/policies) atau lihat [Contoh kebijakan kontrol sumber daya](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps_examples.html) dalam dokumentasi. AWS Organizations <br />6. Simpan dan tutup file.json.<br />7. Ulangi langkah-langkah ini untuk membuat RCPs sebanyak yang diperlukan.<br />8. Ulangi langkah-langkah ini di `scp-management/policies` folder untuk membuat SCPs sebanyak yang diperlukan. Misalnya SCPs, lihat [repositori kode sumber](https://github.com/aws-samples/organizations-policy-pipeline/tree/main/sample-repository/scp-management/policies) atau lihat [Contoh kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) dalam dokumentasi. AWS Organizations  | DevOps insinyur | 

### Menggunakan file manifes untuk mengelola kebijakan
<a name="use-the-manifest-file-to-manage-the-policies"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan file manifes. | 1. Di `rcp-management` folder, buka `rcp-management.json` file. Ini adalah file tempat Anda menentukan pagar pembatas RCP mana dan sepenuhnya RCPs berlaku untuk lingkungan target Anda. Untuk contoh file ini, lihat [repositori kode sumber](https://github.com/aws-samples/organizations-policy-pipeline/blob/main/sample-repository/rcp-management/rcp-management.json).<br />2. Hapus pernyataan contoh.<br />3. Tambahkan pernyataan baru dalam format berikut:<pre>[<br />    {<br />        "SID": "<statement-name>",<br />        "Target": {<br />            "Type": "<target-type>",<br />            "ID": "<target-name>"<br />        },<br />        "Guardrails": [<br />            "<guardrail-name>"<br />        ],<br />        "Policy": "<policy-name>",<br />        "Comments": "<comment-text>"<br />    }<br />]</pre><br />Di mana:`<statement-name>`adalah nama unik untuk pernyataan itu.`<target-type>`adalah jenis target di mana Anda ingin menerapkan kebijakan. Nilai yang valid adalah `Account`, `OU`, `Environment`, atau `Tag`.`<target-name>`adalah pengenal target di mana Anda ingin menerapkan kebijakan. Masukkan salah satu dari berikut ini:Untuk Akun AWS, masukkan pengenal sebagai`<account-name>:<account-id>`.Untuk OU, masukkan pengenal sebagai`<OU-name>:<ou-id>`.Untuk lingkungan, masukkan nama unik yang Anda tentukan dalam `environments.json` file.Untuk tag, masukkan pasangan kunci-nilai sebagai. `<tag-key>:<tag-value>``<guardrail-name>`adalah nama unik dari pagar pembatas RCP yang Anda tentukan di folder. `rcp-management/guardrails` Anda dapat menambahkan beberapa pagar pembatas dalam elemen ini. Anda dapat membiarkan bidang ini kosong jika Anda tidak ingin menerapkan pagar pembatas.`<policy-name>`adalah nama unik dari RCP yang Anda tentukan di `rcp-management/policies` folder. Anda hanya dapat menambahkan satu kebijakan dalam elemen ini. Anda dapat membiarkan bidang ini kosong jika Anda tidak ingin menerapkan kebijakan.`<comment-text>`adalah deskripsi yang dapat Anda masukkan untuk tujuan dokumentasi. Bidang ini tidak digunakan selama pemrosesan pipa. Anda dapat membiarkan bidang ini kosong jika Anda tidak ingin menambahkan komentar.<br />4. Ulangi langkah-langkah ini untuk menambahkan pernyataan sebanyak yang diperlukan RCPs untuk mengonfigurasi organisasi Anda.<br />5. Simpan dan tutup file `rcp-management.json`.<br />6. Di `scp-management` folder, ulangi langkah-langkah ini dalam `scp-management.json` file. Ini adalah file tempat Anda menentukan pagar pembatas SCP mana dan sepenuhnya SCPs berlaku untuk lingkungan target Anda. Untuk contoh file ini, lihat [repositori kode sumber](https://github.com/aws-samples/organizations-policy-pipeline/blob/main/sample-repository/scp-management/scp-management.json). | DevOps insinyur | 
| Mulai pipa. | Komit dan dorong perubahan ke cabang repositori jarak jauh yang Anda tentukan dalam file. `variables.tf` Biasanya, ini adalah `main` cabang. CI/CD Pipa secara otomatis dimulai. Jika ada kesalahan pipeline, lihat bagian [Pemecahan Masalah](#manage-organizations-policies-as-code-troubleshooting) dari pola ini. | DevOps insinyur | 
| Menyetujui perubahan. | Ketika `Validate-Plan` CodeBuild proyek selesai, pemberi persetujuan kebijakan menerima pemberitahuan melalui topik Amazon SNS yang sebelumnya Anda konfigurasikan. Lakukan hal-hal berikut:1. Buka pesan notifikasi.<br />2. Jika tersedia, tinjau ringkasan perubahan kebijakan.<br />3. Ikuti instruksi di [Menyetujui atau menolak tindakan persetujuan](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-approve-or-reject.html) di. CodePipeline | AWS Umum, Penyetuju kebijakan | 
| Validasi penerapan. | 1. Masuk ke [AWS Organizations konsol](https://console.aws.amazon.com/organizations/v2) di akun yang merupakan administrator yang didelegasikan. AWS Organizations<br />2. Pada halaman **Kebijakan kontrol layanan**, konfirmasikan SCPs bahwa yang Anda buat terdaftar.<br />3. Pilih SCP yang dikelola melalui pipeline dan konfirmasikan bahwa itu berlaku untuk target yang dimaksud.<br />4. Pada halaman **Kebijakan kontrol sumber daya**, konfirmasikan RCPs bahwa yang Anda buat terdaftar.<br />5. Pilih RCP yang dikelola melalui pipeline dan konfirmasikan bahwa itu berlaku untuk target yang dimaksud. | AWS Umum | 

## Pemecahan masalah
<a name="manage-organizations-policies-as-code-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Kesalahan file manifes dalam `Validate-Plan` fase pipa | Pesan “Kesalahan pipa dalam fase Validasi & Rencana untuk file manifes” muncul di output pipeline jika ada kesalahan dalam `rcp-management.json` file `scp-management.json` atau. Kemungkinan kesalahan termasuk nama lingkungan yang salah, kolom atau nilai duplikat SIDs, atau tidak valid. Lakukan hal-hal berikut:1. Ikuti petunjuk di [Lihat detail build di AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/view-build-details.html).<br />2. Di log build, temukan kesalahan validasi. Kesalahan memberikan informasi lebih lanjut tentang apa yang menyebabkan build gagal.<br />3. Perbarui file.json yang sesuai.<br />4. Komit dan dorong file yang diperbarui ke repositori jarak jauh. Pipa dimulai ulang.<br />5. Pantau status untuk mengonfirmasi bahwa kesalahan validasi telah teratasi. | 
| Temuan IAM Access Analyzer dalam `Validate-Plan` fase pipa | Pesan “Temuan di IAM Access Analyzer selama fase Validasi & Rencana” muncul di output pipeline jika ada kesalahan dalam pagar pembatas atau definisi kebijakan. Pola ini menggunakan IAM Access Analyzer untuk memvalidasi kebijakan akhir. Lakukan hal-hal berikut:1. Ikuti petunjuk di [Lihat detail build di AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/view-build-details.html).<br />2. Di log build, temukan error validasi IAM Access Analyzer. Kesalahan memberikan informasi lebih lanjut tentang apa yang menyebabkan build gagal. Untuk informasi selengkapnya tentang jenis temuan, lihat referensi [pemeriksaan validasi kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).<br />3. Perbarui file.json yang sesuai untuk pagar pembatas atau kebijakan.<br />4. Komit dan dorong file yang diperbarui ke repositori jarak jauh. Pipa dimulai ulang.<br />5. Pantau status untuk mengonfirmasi bahwa kesalahan validasi telah teratasi. | 

## Sumber daya terkait
<a name="manage-organizations-policies-as-code-resources"></a>
+ [Referensi elemen kebijakan JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) (dokumentasi IAM)
+ [Kebijakan kontrol sumber daya](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) (AWS Organizations dokumentasi)
+ [Kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) (AWS Organizations dokumentasi)
+ [Menambah atau menghapus akses ke model fondasi Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html) (dokumentasi Amazon Bedrock)
+ [Menyetujui atau menolak tindakan persetujuan dalam CodePipeline (dokumentasi](https://docs.aws.amazon.com/codepipeline/latest/userguide/approvals-approve-or-reject.html)) CodePipeline 

## Informasi tambahan
<a name="manage-organizations-policies-as-code-additional"></a>

**Contoh kebijakan delegasi berbasis sumber daya**

Berikut ini adalah contoh kebijakan delegasi berbasis sumber daya untuk. AWS Organizations Ini memungkinkan akun pengelola yang didelegasikan untuk mengelola SCPs dan RCPs untuk organisasi. Dalam contoh kebijakan berikut, ganti `<MEMBER_ACCOUNT_ID>` dengan ID akun tempat Anda menerapkan pipeline manajemen kebijakan.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DelegationToAudit",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<MEMBER_ACCOUNT_ID>:root"
      },
      "Action": [
        "organizations:ListTargetsForPolicy",
        "organizations:CreatePolicy",
        "organizations:DeletePolicy",
        "organizations:AttachPolicy",
        "organizations:DetachPolicy",
        "organizations:DisablePolicyType",
        "organizations:EnablePolicyType",
        "organizations:UpdatePolicy",
        "organizations:DescribeEffectivePolicy",
        "organizations:DescribePolicy",
        "organizations:DescribeResourcePolicy"
      ],
      "Resource": "*"
    }
  ]
}
```

**Migrasi kebijakan yang ada ke pipeline**

Jika sudah ada SCPs atau RCPs yang ingin Anda migrasi dan kelola melalui pipeline ini, Anda dapat menggunakan skrip Python di folder `sample-repository/utils` repositori kode. Skrip ini meliputi:
+ `check-if-scp-exists-in-env.py`— Skrip ini memeriksa apakah kebijakan tertentu berlaku untuk target apa pun di lingkungan tertentu, yang Anda tentukan dalam `environments.json` file. Masukkan perintah berikut untuk menjalankan skrip ini:

  ```
  python3 check-if-scp-exists-in-env.py \
     --policy-type <POLICY_TYPE> \
     --policy-name <POLICY_NAME> \
     --env-id <ENV_ID>
  ```

  Ganti yang berikut ini dalam perintah ini:
  + `<POLICY_TYPE>`adalah `scp` atau `rcp`
  + `<POLICY_NAME>`adalah nama SCP atau RCP
  + `<ENV_ID>`adalah ID lingkungan yang Anda tentukan dalam `environments.json` file
+ `create-environments.py`— Skrip ini membuat file environments.json berdasarkan saat ini SCPs dan RCPs di lingkungan Anda. Ini tidak termasuk kebijakan yang diterapkan melalui. AWS Control Tower Masukkan perintah berikut untuk menjalankan skrip ini, di `<POLICY_TYPE>` mana `scp` atau`rcp`:

  ```
  python create-environments.py --policy-type <POLICY_TYPE>
  ```
+ `verify-policies-capacity.py`— Skrip ini memeriksa setiap lingkungan yang Anda tentukan untuk menentukan berapa banyak kapasitas yang tersisa untuk setiap kuota AWS Organizations terkait kebijakan. Anda menentukan lingkungan untuk memeriksa dalam `environments.json` file. Masukkan perintah berikut untuk menjalankan skrip ini, di `<POLICY_TYPE>` mana `scp` atau`rcp`:

  ```
  python verify-policies-capacity.py --policy-type <POLICY_TYPE>
  ```