Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Penyebaran Control Tower (CT)
Panduan Kustomisasi untuk AWS Control Tower (CFCT) adalah untuk administrator, DevOps profesional, vendor perangkat lunak independen, arsitek infrastruktur TI, dan integrator sistem yang ingin menyesuaikan dan memperluas lingkungan AWS Control Tower mereka untuk perusahaan dan pelanggan mereka. Ini memberikan informasi tentang menyesuaikan dan memperluas lingkungan AWS Control Tower dengan paket kustomisasi CFCT.
Waktu untuk menyebarkan: Sekitar 30 menit
Prasyarat
Sebelum menerapkan solusi ini, pastikan solusi ini ditujukan untuk administrator AWS Control Tower.
Saat Anda siap menyiapkan landing zone menggunakan konsol AWS Control Tower atau APIs, ikuti langkah-langkah berikut:
Untuk memulai AWS Control Tower, lihat: Memulai AWS Control Tower
Untuk mempelajari cara menyesuaikan landing zone Anda, lihat: Menyesuaikan Zona Landing Anda
Untuk meluncurkan dan menerapkan landing zone Anda, lihat: Panduan Penyebaran Zona Landing
Ikhtisar penyebaran
Gunakan langkah-langkah berikut untuk menerapkan solusi ini di AWS.
Langkah 1: Bangun dan terapkan bucket S3
catatan
Konfigurasi bucket S3 - hanya untuk ADMIN. Ini adalah langkah pengaturan satu kali dan tidak boleh diulang oleh pengguna akhir. Bucket S3 menyimpan paket penerapan, termasuk template AWS CloudFormation dan kode Lambda yang diperlukan agar ASR dapat dijalankan. Sumber daya ini digunakan menggunakan CfCt atau StackSet.
1. Konfigurasikan Bucket S3
Siapkan bucket S3 yang akan digunakan untuk menyimpan dan melayani paket penerapan Anda.
2. Siapkan Lingkungan
Siapkan variabel lingkungan yang diperlukan, kredensi, dan alat yang diperlukan untuk proses build dan deployment.
3. Konfigurasikan Kebijakan Bucket S3
Tentukan dan terapkan kebijakan bucket yang sesuai untuk mengontrol akses dan izin.
4. Siapkan Build
Kompilasi, paket, atau persiapkan aplikasi atau aset Anda untuk penerapan.
5. Menyebarkan Paket ke S3
Unggah artefak build yang sudah disiapkan ke bucket S3 yang ditentukan.
Langkah 2: Menumpuk penyebaran ke AWS Control Tower
1. Buat Manifes Build untuk Komponen ASR
Tentukan manifes build yang mencantumkan semua komponen ASR, versinya, dependensi, dan instruksi build.
2. Perbarui CodePipeline
Ubah CodePipeline konfigurasi AWS untuk menyertakan langkah, artefak, atau tahapan build baru yang diperlukan untuk menerapkan komponen ASR.
Langkah 1: Bangun dan terapkan ke bucket S3
AWS Solutions menggunakan dua bucket: bucket untuk akses global ke template, yang diakses melalui HTTPS, dan bucket regional untuk akses ke aset di wilayah tersebut, seperti kode Lambda.
1. Konfigurasikan Bucket S3
Pilih nama bucket yang unik, misalnya asr-staging. Tetapkan dua variabel lingkungan di terminal Anda, satu harus menjadi nama bucket dasar dengan -reference sebagai akhiran, yang lain dengan wilayah penerapan yang Anda inginkan sebagai akhiran:
export BASE_BUCKET_NAME=asr-staging-$(date +%s) export TEMPLATE_BUCKET_NAME=$BASE_BUCKET_NAME-reference export REGION=us-east-1 export ASSET_BUCKET_NAME=$BASE_BUCKET_NAME-$REGION
2. Pengaturan Lingkungan
Di akun AWS Anda, buat dua bucket dengan nama-nama ini, misalnya asr-staging-reference dan asr-staging-us-east -1. (Bucket referensi akan menampung CloudFormation template, bucket regional akan menampung semua aset lain seperti bundel kode lambda.) Bucket Anda harus dienkripsi dan melarang akses publik
aws s3 mb s3://$TEMPLATE_BUCKET_NAME/ aws s3 mb s3://$ASSET_BUCKET_NAME/
catatan
Saat membuat ember Anda, pastikan mereka tidak dapat diakses publik. Gunakan nama bucket acak. Nonaktifkan akses publik. Gunakan enkripsi KMS. Dan verifikasi kepemilikan bucket sebelum mengunggah.
3. Pengaturan kebijakan bucket S3
Perbarui kebijakan bucket $TEMPLATE_BUCKET_NAME S3 untuk menyertakan izin untuk mengeksekusi ID akun. PutObject Tetapkan izin ini ke peran IAM dalam akun eksekusi yang diizinkan untuk menulis ke bucket. Pengaturan ini memungkinkan Anda menghindari pembuatan bucket di akun Manajemen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::<template bucket name>/*", "arn:aws:s3:::<template bucket name>" ], "Condition": { "StringEquals": { "aws:PrincipalOrgID": "<org id>" } } }, { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::<template bucket name>/*", "arn:aws:s3:::<template bucket name>" ], "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<execute_account_id>:role/<iam_role_name>" } } } ] }
Ubah kebijakan bucket aset S3 untuk menyertakan izin. Tetapkan izin ini ke peran IAM dalam akun eksekusi yang diizinkan untuk menulis ke bucket. Ulangi pengaturan ini untuk setiap bucket aset regional (misalnya, asr-staging-us-east asr-staging-eu-west -1, -1, dll.), yang memungkinkan penerapan di beberapa wilayah tanpa perlu membuat bucket di akun Manajemen.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": [ "arn:aws:s3:::<asset bucket name>-<region>/*", "arn:aws:s3:::<asset bucket name>-<region>" ], "Condition": { "StringEquals": { "aws:PrincipalOrgID": "<org id>" } } }, { "Effect": "Allow", "Principal": "*", "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::<asset bucket name>-<region>/*", "arn:aws:s3:::<asset bucket name>-<region>" ], "Condition": { "ArnLike": { "aws:PrincipalArn": "arn:aws:iam::<execute_account_id>:role/<iam_role_name>" } } } ] }
4. Membangun Persiapan
-
Prasyarat:
-
AWS CLI v2
-
Python 3.11+ dengan pip
-
AWS CDK 2.171.1+
-
Node.js 20+ dengan npm
-
Puisi v2 dengan plugin untuk diekspor
-
-
Git klon https://github.com/aws-solutions/ automated-security-response-on -aws.git
Pertama pastikan bahwa Anda telah menjalankan npm install di folder sumber.
Selanjutnya dari folder penerapan di repo kloning Anda, jalankan build-s3-dist.sh, berikan nama root bucket Anda (mis. mybucket) dan versi yang Anda buat (mis. v1.0.0). Kami merekomendasikan menggunakan versi semver berdasarkan versi yang diunduh dari GitHub (mis. GitHub: v1.0.0, build Anda: v1.0.0.mybuild)
chmod +x build-s3-dist.sh export SOLUTION_NAME=automated-security-response-on-aws export SOLUTION_VERSION=v1.0.0.mybuild ./build-s3-dist.sh -b $BASE_BUCKET_NAME -v $SOLUTION_VERSION
5. Menyebarkan paket ke S3
cd deployment aws s3 cp global-s3-assets/ s3://$TEMPLATE_BUCKET_NAME/$SOLUTION_NAME/$SOLUTION_VERSION/ --recursive --acl bucket-owner-full-control aws s3 cp regional-s3-assets/ s3://$ASSET_BUCKET_NAME/$SOLUTION_NAME/$SOLUTION_VERSION/ --recursive --acl bucket-owner-full-control
Langkah 2: Menumpuk penyebaran ke AWS Control Tower
1. Membangun manifes untuk komponen ASR
Setelah menerapkan artefak ASR ke bucket S3, perbarui manifes pipeline Control Tower untuk mereferensikan versi baru, lalu memicu proses pipeline, lihat: deployment controltower
penting
Untuk memastikan penerapan solusi ASR yang benar, lihat dokumentasi AWS resmi untuk informasi terperinci tentang ikhtisar CloudFormation templat dan deskripsi parameter. Tautan info di bawah ini: Panduan ikhtisar Parameter CloudFormation Template
Manifes untuk komponen ASR terlihat seperti ini:
region: us-east-1 #<HOME_REGION_NAME> version: 2021-03-15 # Control Tower Custom CloudFormation Resources resources: - name: <ADMIN STACK NAME> resource_file: s3://<ADMIN TEMPLATE BUCKET path> parameters: - parameter_key: UseCloudWatchMetricsAlarms parameter_value: "yes" - parameter_key: TicketGenFunctionName parameter_value: "" - parameter_key: LoadSCAdminStack parameter_value: "yes" - parameter_key: LoadCIS120AdminStack parameter_value: "no" - parameter_key: TargetAccountIDsStrategy parameter_value: "INCLUDE" - parameter_key: LoadCIS300AdminStack parameter_value: "no" - parameter_key: UseCloudWatchMetrics parameter_value: "yes" - parameter_key: LoadNIST80053AdminStack parameter_value: "no" - parameter_key: LoadCIS140AdminStack parameter_value: "no" - parameter_key: ReuseOrchestratorLogGroup parameter_value: "yes" - parameter_key: LoadPCI321AdminStack parameter_value: "no" - parameter_key: RemediationFailureAlarmThreshold parameter_value: "5" - parameter_key: LoadAFSBPAdminStack parameter_value: "no" - parameter_key: TargetAccountIDs parameter_value: "ALL" - parameter_key: EnableEnhancedCloudWatchMetrics parameter_value: "no" deploy_method: stack_set deployment_targets: accounts: # :type: list - <ACCOUNT_NAME> # and/or - <ACCOUNT_NUMBER> regions: - <REGION_NAME> - name: <ROLE MEMBER STACK NAME> resource_file: s3://<ROLE MEMBER TEMPLATE BUCKET path> parameters: - parameter_key: SecHubAdminAccount parameter_value: <ADMIN_ACCOUNT_NAME> - parameter_key: Namespace parameter_value: <NAMESPACE> deploy_method: stack_set deployment_targets: organizational_units: - <ORG UNIT> - name: <MEMBER STACK NAME> resource_file: s3://<MEMBER TEMPLATE BUCKET path> parameters: - parameter_key: SecHubAdminAccount parameter_value: <ADMIN_ACCOUNT_NAME> - parameter_key: LoadCIS120MemberStack parameter_value: "no" - parameter_key: LoadNIST80053MemberStack parameter_value: "no" - parameter_key: Namespace parameter_value: <NAMESPACE> - parameter_key: CreateS3BucketForRedshiftAuditLogging parameter_value: "no" - parameter_key: LoadAFSBPMemberStack parameter_value: "no" - parameter_key: LoadSCMemberStack parameter_value: "yes" - parameter_key: LoadPCI321MemberStack parameter_value: "no" - parameter_key: LoadCIS140MemberStack parameter_value: "no" - parameter_key: EnableCloudTrailForASRActionLog parameter_value: "no" - parameter_key: LogGroupName parameter_value: <LOG_GROUP_NAME> - parameter_key: LoadCIS300MemberStack parameter_value: "no" deploy_method: stack_set deployment_targets: accounts: # :type: list - <ACCOUNT_NAME> # and/or - <ACCOUNT_NUMBER> organizational_units: - <ORG UNIT> regions: # :type: list - <REGION_NAME>
2. Pembaruan pipa kode
Tambahkan file manifes custom-control-tower-configuration ke.zip dan jalankan CodePipeline, lihat: ikhtisar pipa kode