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
Andre Cavalcante dan Mariana Pessoa de Queiroz, Amazon Web Services
Ringkasan
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) menentukan izin maksimum yang tersedia untuk peran AWS Identity and Access Management (IAM) dan pengguna di organisasi Anda. Kebijakan kontrol sumber daya (RCPs) 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.jsondanrcp-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.jsonfile), atau sekelompok akun yang berbagi AWS tag.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
Prasyarat
Beberapa Akun AWS yang dikelola sebagai organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat Membuat organisasi.
Fitur SCP dan RCP diaktifkan di. AWS Organizations Untuk informasi selengkapnya, lihat Mengaktifkan jenis kebijakan.
Jika Anda tidak menerapkan solusi ini melalui pipeline Terraform, file status Terraform harus disimpan dalam
bucket Amazon Simple Storage Service (Amazon S3) di Akun AWS tempat Anda menerapkan pipeline manajemen kebijakan.
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 pada pola ini.
Jumlah akun OUs, dan kebijakan di setiap akun tunduk pada kuota dan batas layanan untuk AWS Organizations.
Pola ini tidak dapat digunakan untuk mengonfigurasi kebijakan manajemen AWS Organizations, seperti kebijakan cadangan, kebijakan tag, kebijakan aplikasi obrolan, atau kebijakan deklaratif.
Arsitektur
Diagram berikut menunjukkan alur kerja pipa manajemen kebijakan dan sumber daya yang terkait.

Diagram menunjukkan alur kerja berikut:
Seorang pengguna melakukan perubahan pada file
scp-management.jsonataurcp-management.jsonmanifes di cabang utama repositori jarak jauh.Perubahan ke
maincabang memulai pipa di AWS CodePipeline.CodePipeline memulai
Validate-PlanCodeBuild proyek. Proyek ini menggunakan skrip Python di repositori jarak jauh untuk memvalidasi kebijakan dan file manifes kebijakan. CodeBuild Proyek ini melakukan hal berikut:Memeriksa bahwa file manifes SCP dan RCP berisi pernyataan unik IDs ()
Sid.Menggunakan skrip
scp-policy-processor/main.pydanrcp-policy-processor/main.pyPython untuk menggabungkan pagar pembatas di folder pagar pembatas menjadi satu kebijakan RCP atau SCP. Ini menggabungkan pagar pembatas yang memiliki hal yang samaResource,Action, dan.ConditionMenggunakan AWS Identity and Access Management Access Analyzer untuk memvalidasi kebijakan akhir yang dioptimalkan. Jika ada temuan, pipa berhenti.
Membuat
scps.jsondanrcps.jsonfile, yang digunakan Terraform untuk membuat sumber daya.Menjalankan
terraform planperintah, yang membuat rencana eksekusi Terraform.
(Opsional)
Validate-PlanCodeBuild Proyek ini menggunakanbedrock-prompt/prompt.pyskrip untuk mengirim prompt ke Amazon Bedrock. Anda menentukan prompt dalambedrock-prompt/prompt.txtfile. Amazon Bedrock menggunakan Anthropic Claude Sonnet 3.5 untuk menghasilkan ringkasan perubahan yang diusulkan dengan menganalisis log Terraform dan Python.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.
Penyetuju kebijakan menyetujui tindakan tersebut. CodePipeline Jika Amazon Bedrock membuat ringkasan perubahan, pemberi persetujuan dapat meninjau ringkasan CodePipeline sebelum menyetujui.
CodePipeline memulai
ApplyCodeBuild 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.pybedrock-prompt/prompt.pyKunci AWS Key Management Service (AWS KMS) yang mengenkripsi sumber daya yang dibuat oleh solusi ini
Alat
Layanan AWS
Amazon Bedrock adalah layanan AI yang dikelola sepenuhnya yang membuat banyak model fondasi berkinerja tinggi tersedia untuk digunakan melalui API terpadu.
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.
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.
Alat lainnya
HashiCorp Terraform
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-pipelinesample-repository folder:
Dalam
environmentsfolder,environments.jsonberisi daftar lingkungan. Lingkungan adalah sekelompok target, dan mereka dapat berisi Akun AWS IDs atau unit organisasi (OUs).Dalam
rcp-managementfolder:guardrailsFolder berisi pagar pembatas individual untuk Anda RCPspoliciesFolder berisi individu RCPsFile
rcp-management.jsonmanifes membantu Anda mengelola pagar pembatas RCP, penuh RCPs, dan target terkaitnya.
Dalam
scp-managementfolder:guardrailsFolder berisi pagar pembatas individual untuk Anda SCPspoliciesFolder berisi individu SCPsFile
scp-management.jsonmanifes membantu Anda mengelola pagar pembatas SCP, penuh SCPs, dan target terkaitnya.
utilsFolder berisi skrip yang dapat membantu Anda memigrasikan saat ini SCPs RCPs sehingga Anda dapat mengelolanya melalui pipeline. Untuk informasi selengkapnya, lihat bagian Informasi tambahan dari pola ini.
Praktik terbaik
Sebelum Anda mengatur pipeline, kami sarankan Anda memverifikasi bahwa Anda belum mencapai batas AWS Organizations kuota 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.
Epik
| 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. | DevOps insinyur |
Delegasikan administrasi kebijakan. | Delegasikan administrasi AWS Organizations kebijakan ke akun anggota tempat Anda menerapkan pipeline. Untuk petunjuknya, lihat Membuat kebijakan delegasi berbasis sumber daya dengan. AWS Organizations Untuk kebijakan sampel, lihat Contoh kebijakan delegasi berbasis sumber daya di bagian Informasi tambahan 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. | AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori. | Masukkan perintah berikut untuk mengkloning organizations-policy-pipeline
| DevOps insinyur |
Tentukan metode penerapan Anda. |
| DevOps insinyur |
Menyebarkan pipa. |
| DevOps insinyur, Terraform |
Hubungkan repositori jarak jauh. | Pada langkah sebelumnya, Terraform membuat CodeConnections koneksi ke repositori pihak ketiga. Di konsol Alat AWS Pengembang | 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. | AWS Umum |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Isi repositori jarak jauh. | Dari repositori kloning, salin isi | DevOps insinyur |
Tentukan lingkungan Anda. |
| DevOps insinyur |
Tentukan pagar pembatas Anda. |
| DevOps insinyur |
Tentukan kebijakan Anda. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Konfigurasikan file manifes. |
| DevOps insinyur |
Mulai pipa. | Komit dan dorong perubahan ke cabang repositori jarak jauh yang Anda tentukan dalam file. | DevOps insinyur |
Menyetujui perubahan. | Ketika
| AWS Umum, Penyetuju kebijakan |
Validasi penerapan. |
| AWS Umum |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Kesalahan file manifes dalam | Pesan “Kesalahan pipa dalam fase Validasi & Rencana untuk file manifes” muncul di output pipeline jika ada kesalahan dalam
|
Temuan IAM Access Analyzer dalam | 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:
|
Sumber daya terkait
Referensi elemen kebijakan JSON (dokumentasi IAM)
Kebijakan kontrol sumber daya (AWS Organizations dokumentasi)
Kebijakan kontrol layanan (AWS Organizations dokumentasi)
Menambah atau menghapus akses ke model fondasi Amazon Bedrock (dokumentasi Amazon Bedrock)
Menyetujui atau menolak tindakan persetujuan dalam CodePipeline (dokumentasi) CodePipeline
Informasi tambahan
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 Anda 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 dalamenvironments.jsonfile. 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>adalahscpataurcp<POLICY_NAME>adalah nama SCP atau RCP<ENV_ID>adalah ID lingkungan yang Anda tentukan dalamenvironments.jsonfile
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>manascpataurcp: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 dalamenvironments.jsonfile. Masukkan perintah berikut untuk menjalankan skrip ini, di<POLICY_TYPE>manascpataurcp:python verify-policies-capacity.py --policy-type <POLICY_TYPE>