Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Terapkan dan kelola AWS Control Tower kontrol dengan menggunakan Terraform
Iker Reina Fuente dan Ivan Girardi, Amazon Web Services
Ringkasan
Pola ini menjelaskan cara menggunakan AWS Control Tower kontrol, HashiCorp Terraform, dan infrastruktur sebagai kode (IAc) untuk mengimplementasikan dan mengelola kontrol keamanan preventif, detektif, dan proaktif. Kontrol (juga dikenal sebagai pagar pembatas) adalah aturan tingkat tinggi yang menyediakan tata kelola berkelanjutan untuk lingkungan Anda secara keseluruhan. AWS Control Tower Misalnya, Anda dapat menggunakan kontrol untuk meminta pencatatan untuk Anda Akun AWS dan kemudian mengonfigurasi pemberitahuan otomatis jika peristiwa terkait keamanan tertentu terjadi.
AWS Control Tower membantu Anda menerapkan kontrol preventif, detektif, dan proaktif yang mengatur AWS sumber daya Anda dan memantau kepatuhan di beberapa. Akun AWS Setiap kontrol memberlakukan satu aturan. Dalam pola ini, Anda menggunakan template IAc yang disediakan untuk menentukan kontrol mana yang ingin Anda terapkan di lingkungan Anda.
AWS Control Tower kontrol berlaku untuk seluruh unit organisasi (OU), dan kontrol mempengaruhi setiap Akun AWS dalam OU. Oleh karena itu, ketika pengguna melakukan tindakan apa pun di akun mana pun di landing zone Anda, tindakan tersebut tunduk pada kontrol yang mengatur OU.
Menerapkan AWS Control Tower kontrol membantu membangun fondasi keamanan yang kuat untuk AWS landing zone Anda. Dengan menggunakan pola ini untuk menerapkan kontrol sebagai IAc melalui Terraform, Anda dapat menstandarisasi kontrol di landing zone Anda dan menerapkan dan mengelolanya dengan lebih efisien.
Untuk menerapkan AWS Control Tower kontrol sebagai IAc, Anda juga dapat menggunakan AWS Cloud Development Kit (AWS CDK) alih-alih Terraform. Untuk informasi selengkapnya, lihat Menerapkan dan mengelola AWS Control Tower kontrol dengan menggunakan AWS CDK dan AWS CloudFormation.
Audiens yang dituju
Pola ini direkomendasikan untuk pengguna yang memiliki pengalaman dengan AWS Control Tower, Terraform, dan. AWS Organizations
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS dikelola sebagai organisasi di AWS Organizations dan AWS Control Tower landing zone. Untuk petunjuk, lihat Memulai dalam AWS Control Tower dokumentasi.
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi.
Peran AWS Identity and Access Management (IAM) dalam akun manajemen yang memiliki izin untuk menerapkan pola ini. Untuk informasi selengkapnya tentang izin yang diperlukan dan kebijakan sampel, lihat Izin hak istimewa terkecil untuk peran IAM di bagian Informasi tambahan dari pola ini.
Izin untuk mengambil peran IAM dalam akun manajemen.
Terraform CLI, diinstal (dokumentasi Terraform
). AWS Penyedia Terraform, dikonfigurasi (dokumentasi
Terraform). Backend Terraform, dikonfigurasi
(dokumentasi Terraform).
Batasan
Untuk AWS Control Tower kontrol, pola ini memerlukan penggunaan pengidentifikasi global yang dalam format berikut:
arn:<PARTITION>:controlcatalog:::control/<CONTROL_CATALOG_OPAQUE_ID>Versi sebelumnya dari pola ini menggunakan pengidentifikasi regional yang tidak lagi didukung. Kami menyarankan Anda bermigrasi dari pengenal Regional ke pengidentifikasi global. Pengidentifikasi global membantu Anda mengelola kontrol dan memperluas jumlah kontrol yang dapat Anda gunakan.
catatan
Dalam kebanyakan kasus, nilainya
<PARTITION>adalahaws.
Versi produk
AWS Control Tower versi 3.2 atau yang lebih baru
Terraform versi 1.5 atau yang lebih baru
AWS Penyedia Terraform versi 4.67 atau yang lebih baru
Arsitektur
Bagian ini memberikan gambaran tingkat tinggi dari solusi ini dan arsitektur yang ditetapkan oleh kode sampel. Diagram berikut menunjukkan kontrol yang digunakan di berbagai akun di OU.

AWS Control Tower kontrol dikategorikan menurut perilaku dan bimbingannya.
Ada tiga jenis utama perilaku kontrol:
Kontrol preventif dirancang untuk mencegah tindakan terjadi. Ini diimplementasikan dengan kebijakan kontrol layanan (SCPs) atau kebijakan kontrol sumber daya (RCPs) di AWS Organizations. Status kontrol preventif ditegakkan atau tidak diaktifkan. Kontrol pencegahan didukung di semua Wilayah AWS.
Kontrol Detektif dirancang untuk mendeteksi peristiwa tertentu ketika terjadi dan mencatat tindakan. AWS CloudTrail Ini diimplementasikan dengan AWS Config aturan. Status kontrol detektif jelas, melanggar, atau tidak diaktifkan. Kontrol Detektif hanya berlaku pada kontrol yang Wilayah AWS didukung oleh. AWS Control Tower
Kontrol proaktif memindai sumber daya yang akan disediakan oleh AWS CloudFormation dan memeriksa apakah mereka sesuai dengan kebijakan dan tujuan perusahaan Anda. Sumber daya yang tidak sesuai tidak akan disediakan. Ini diimplementasikan dengan AWS CloudFormation kait. Status kontrol proaktif adalah LULUS, GAGAL, atau SKIP.
Panduan kontrol adalah praktik yang direkomendasikan untuk bagaimana menerapkan setiap kontrol ke Anda OUs. AWS Control Tower menyediakan tiga kategori panduan: wajib, sangat direkomendasikan, dan elektif. Bimbingan kontrol tidak tergantung pada perilakunya. Untuk informasi selengkapnya, lihat Mengontrol perilaku dan panduan.
Alat
Layanan AWS
AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah.
AWS Configmemberikan tampilan rinci tentang sumber daya di Anda Akun AWS dan bagaimana mereka dikonfigurasi. Ini membantu Anda mengidentifikasi bagaimana sumber daya terkait satu sama lain dan bagaimana konfigurasinya telah berubah dari waktu ke waktu.
AWS Control Towermembantu Anda mengatur dan mengatur lingkungan AWS multi-akun, mengikuti praktik terbaik preskriptif.
AWS Organizationsadalah layanan manajemen akun yang membantu Anda mengkonsolidasikan beberapa Akun AWS ke dalam organisasi yang Anda buat dan kelola secara terpusat.
Alat lainnya
HashiCorp Terraform
adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.
Repositori kode
Kode untuk pola ini tersedia di GitHub Deploy dan kelola AWS Control Tower kontrol dengan menggunakan repositori Terraform
Praktik terbaik
Peran IAM yang digunakan untuk menerapkan solusi ini harus mematuhi prinsip hak istimewa paling sedikit (dokumentasi IAM).
Ikuti Praktik terbaik untuk AWS Control Tower administrator (AWS Control Tower dokumentasi).
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repositori. | Dalam shell bash, masukkan perintah berikut. Ini mengkloning AWS Control Tower kontrol Deploy dan mengelola dengan menggunakan repositori Terraform
| DevOps insinyur |
Edit file konfigurasi backend Terraform. |
| DevOps insinyur, Terraform |
Edit file konfigurasi penyedia Terraform. |
| DevOps insinyur, Terraform |
Edit file konfigurasi. |
| DevOps insinyur, AWS Umum, Terraform |
Asumsikan peran IAM dalam akun manajemen. | Di akun manajemen, asumsikan peran IAM yang memiliki izin untuk menyebarkan file konfigurasi Terraform. Untuk informasi selengkapnya tentang izin yang diperlukan dan kebijakan sampel, lihat Izin hak istimewa terkecil untuk peran IAM di bagian Informasi tambahan. Untuk informasi selengkapnya tentang mengasumsikan peran IAM dalam AWS CLI, lihat Menggunakan peran IAM dalam. AWS CLI | DevOps insinyur, AWS Umum |
Menyebarkan file konfigurasi. |
| DevOps insinyur, AWS Umum, Terraform |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Jalankan perintah | Masukkan perintah berikut untuk menghapus sumber daya yang digunakan oleh pola ini.
| DevOps insinyur, AWS Umum, Terraform |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
| Kontrol yang Anda coba aktifkan sudah diaktifkan di OU target. Kesalahan ini dapat terjadi jika pengguna secara manual mengaktifkan kontrol melalui AWS Management Console, melalui AWS Control Tower atau melalui AWS Organizations. Untuk menerapkan file konfigurasi Terraform, Anda dapat menggunakan salah satu opsi berikut. Opsi 1: Perbarui file status Terraform saat ini Anda dapat mengimpor sumber daya ke file status Terraform saat ini. Saat Anda menjalankan kembali
Opsi 2: Nonaktifkan kontrol Jika Anda bekerja di lingkungan non-produksi, Anda dapat menonaktifkan kontrol di konsol. Aktifkan kembali dengan mengulangi langkah-langkah di Deploy konfigurasi di bagian Epics. Pendekatan ini tidak direkomendasikan untuk lingkungan produksi karena ada periode waktu ketika kontrol akan dinonaktifkan. Jika Anda ingin menggunakan opsi ini di lingkungan produksi, Anda dapat menerapkan kontrol sementara, seperti menerapkan SCP sementara. AWS Organizations |
Sumber daya terkait
AWS dokumentasi
Tentang kontrol (AWS Control Tower dokumentasi)
Pustaka kontrol (AWS Control Tower dokumentasi)
Menyebarkan dan mengelola AWS Control Tower kontrol dengan menggunakan AWS CDK dan AWS CloudFormation (Panduan AWS Preskriptif)
Sumber daya lainnya
Informasi tambahan
Contoh variabel.file tfvars
Berikut ini adalah contoh dari file variabel.tfvars yang diperbarui. Sampel ini mengaktifkan kontrol AWS-GR_ENCRYPTED_VOLUME (global ID:) dan kontrol AWS-GR_SUBNET_AUTO_ASSIGN_PUBLIC_IP_DISABLED (ID global:503uicglhjkokaajywfpt6ros). 50z1ot237wl8u1lv5ufau6qqo Untuk daftar global IDs, lihat Semua pengidentifikasi global dalam AWS Control Tower dokumentasi.
Contoh berikut juga memungkinkan kontrol yang memiliki parameter seperti CT.S3.PV.5 (global ID:7mo7a2h2ebsq71l8k6uzr96ou) dan CT.SECRETSMANAGER.PV.1 (global ID:). dvhe47fxg5o6lryqrq9g6sxg4 Untuk daftar kontrol dengan parameter, lihat Kontrol dengan parameter dalam AWS Control Tower dokumentasi.
controls = [ { control_names = [ "503uicglhjkokaajywfpt6ros", # AWS-GR_ENCRYPTED_VOLUMES ... ], organizational_unit_ids = ["ou-1111-11111111", "ou-2222-22222222"...], }, { control_names = [ "50z1ot237wl8u1lv5ufau6qqo", # AWS-GR_SUBNET_AUTO_ASSIGN_PUBLIC_IP_DISABLED ... ], organizational_unit_ids = ["ou-1111-11111111"...], }, ] controls_with_params = [ { control_names = [ { "7mo7a2h2ebsq71l8k6uzr96ou" = { # CT.S3.PV.5 parameters = { "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"], "ExemptedResourceArns" : [], } } }, { "dvhe47fxg5o6lryqrq9g6sxg4" = { # CT.SECRETSMANAGER.PV.1 parameters = { "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"], } } }, ... ], organizational_unit_ids = ["ou-1111-11111111"...] }, { control_names = [ { "dvuaav61i5cnfazfelmvn9m6k" = { # AWS-GR_DISALLOW_CROSS_REGION_NETWORKING parameters = { "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"], } } }, { "41ngl8m5c4eb1myoz0t707n7h" = { # AWS-GR_DISALLOW_VPC_INTERNET_ACCESS parameters = { "ExemptedPrincipalArns" : ["arn:aws:iam::*:role/RoleName"], } } }, ... ], organizational_unit_ids = ["ou-2222-22222222"...] } ]
Izin hak istimewa paling sedikit untuk peran IAM
Pola ini mengharuskan Anda mengambil peran IAM dalam akun manajemen. Praktik terbaik adalah mengambil peran dengan izin sementara dan membatasi izin sesuai dengan prinsip hak istimewa paling sedikit. Kebijakan contoh berikut memungkinkan tindakan minimum yang diperlukan untuk mengaktifkan atau menonaktifkan AWS Control Tower kontrol.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "controltower:EnableControl", "controltower:DisableControl", "controltower:GetControlOperation", "controltower:ListEnabledControls", "organizations:AttachPolicy", "organizations:CreatePolicy", "organizations:DeletePolicy", "organizations:DescribeOrganization", "organizations:DetachPolicy", "organizations:ListAccounts", "organizations:ListAWSServiceAccessForOrganization", "organizations:ListChildren", "organizations:ListOrganizationalUnitsForParent", "organizations:ListParents", "organizations:ListPoliciesForTarget", "organizations:ListRoots", "organizations:UpdatePolicy" ], "Resource": "*" } ] }