Ngôn ngữ hiển thị:
Khổ nỗi là nhiều team DevOps xây dựng hệ thống AWS từ một account rồi... mở thêm account nữa, rồi thêm nữa. Đến lúc có 30-40 account, mỗi cái cấu hình IAM một kiểu, logging thì account có account không, SCP chưa ai nghĩ tới. Audit xong là toát mồ hôi. Đây chính xác là bài toán AWS Control Tower sinh ra để giải quyết — không phải để "làm cho đẹp", mà để sống sót qua được enterprise compliance.
AWS Control Tower là dịch vụ quản lý đa tài khoản (multi-account governance) của AWS, tự động hóa việc thiết lập và vận hành môi trường AWS an toàn theo chuẩn Well-Architected. Thay vì bạn phải tự tay tạo AWS Organizations, cấu hình CloudTrail, thiết lập Config Rules cho từng account, Control Tower làm tất cả trong một lần setup.
Ba khái niệm cốt lõi cần nắm:
Landing Zone — đây là môi trường nền tảng mà Control Tower xây lên. Gồm Management Account (account gốc), Log Archive Account (tập trung toàn bộ CloudTrail, Config logs), và Audit Account (security tools, cross-account access). Không phải bạn tự tạo — Control Tower tự khởi tạo khi setup lần đầu.
Organizational Units (OUs) — Control Tower chia tổ chức thành các OU có cấu trúc: Security OU (chứa Log Archive + Audit), Sandbox OU (cho dev thử nghiệm), Custom OU (bạn định nghĩa). Mỗi OU có chính sách riêng áp xuống toàn bộ account bên trong.
Guardrails (nay gọi là Controls) — đây là bộ chính sách tự động hóa governance. Có ba loại: Preventive (SCP chặn hành động ngay), Detective (AWS Config Rules phát hiện vi phạm), và Proactive (CloudFormation hooks kiểm tra trước khi deploy). Có khoảng 400+ guardrail sẵn có — bạn bật theo nhu cầu.
Đây là tính năng mình thấy có giá trị nhất. Account Factory cho phép tạo AWS account mới hoàn toàn tự động, đã được preconfigure theo đúng baseline bạn định nghĩa — VPC mặc định, IAM roles, guardrails, thậm chí cả tag policies.
Thay vì quy trình cũ: request ticket → admin tạo account thủ công → cấu hình 15 thứ → bàn giao sau 2-3 ngày, với Account Factory quy trình còn lại là: dev submit form (hoặc call API) → account mới sẵn sàng trong 20-30 phút, đã có đủ baseline.
Account Factory có thể tích hợp với Service Catalog hoặc Account Factory for Terraform (AFT) — cái sau cho phép toàn bộ account lifecycle được quản lý bằng Terraform, phù hợp với team đang dùng GitOps.
Trước khi bắt đầu, cần đảm bảo: bạn đang login vào Management Account (không phải member account), region home của bạn đã chọn (không đổi được sau khi setup), và account chưa có AWS Organizations phức tạp (nếu có thì phải import thủ công).
Bước 1 — Khởi tạo Control Tower:
Vào AWS Console → Control Tower → Set up landing zone. AWS sẽ hỏi bạn chọn home region (chọn ap-southeast-1 nếu workload chính ở Đông Nam Á), sau đó chọn thêm governed regions nếu cần. Quá trình setup mất khoảng 60-90 phút — AWS tự tạo Log Archive Account, Audit Account, thiết lập CloudTrail organization-level, bật AWS Config.
Bước 2 — Cấu hình Account Factory baseline:
# Account Factory configuration (qua AWS Console hoặc API)
AccountEmail: "aws-account-{account_name}@yourcompany.com"
AccountName: "{team}-{environment}"
ManagedOrganizationalUnit: "Custom/Production"
SSOUserEmail: "[email protected]"
SSOUserFirstName: "Team"
SSOUserLastName: "Admin"
VpcConfiguration:
VpcCidr: "10.X.0.0/16"
PublicSubnetCidr: "10.X.1.0/24"
PrivateSubnetCidr: "10.X.2.0/24"Bước 3 — Bật Guardrails theo từng OU:
Vào Controls → lọc theo category. Với Production OU, mình khuyên bật tối thiểu: Disallow Changes to Encryption Configuration for S3 Buckets, Disallow Public Read Access to S3 Buckets, Require IMDSv2 for EC2 Instances, và Detect Whether MFA for the Root Account Is Enabled. Với Sandbox OU thì bật ít hơn để dev không bị chặn khi thử nghiệm.
Bước 4 — Thiết lập Account Factory for Terraform (AFT) nếu dùng Terraform:
module "aft" {
source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
ct_management_account_id = "123456789012"
log_archive_account_id = "234567890123"
audit_account_id = "345678901234"
aft_management_account_id = "456789012345"
ct_home_region = "ap-southeast-1"
tf_backend_secondary_region = "us-east-1"
}AFT dùng CodePipeline để tự động apply Terraform khi bạn push vào repo — mỗi account có repo riêng, toàn bộ lifecycle được version-controlled.
Mẹo xương máu: Đừng bật quá nhiều Detective guardrails ngay lập tức trong Production OU nếu account đang có workload đang chạy. Một số Config Rules sẽ đánh dấu "NON_COMPLIANT" hàng loạt tài nguyên cũ — tạo noise làm team mất tập trung. Nên audit trước, fix compliance debt, rồi mới bật guardrail.
OU nesting có giới hạn: Control Tower chỉ hỗ trợ 2 cấp OU (không phải 5 cấp như Organizations thuần). Nếu cấu trúc tổ chức của bạn phức tạp hơn, phải thiết kế lại hoặc dùng Organizations trực tiếp cho phần ngoài tầm kiểm soát của Control Tower.
Customizations for Control Tower (CfCT): Đây là cách chính thức để deploy thêm resources vào account khi Account Factory tạo mới — dùng CloudFormation StackSets. Nhiều team không biết cơ chế này, cứ cố nhồi mọi thứ vào AFT rồi gặp vấn đề về ordering.
Region deny SCP: Control Tower tự tạo SCP aws-guardrails-* — tuyệt đối không sửa hay xóa thủ công. Nếu SCP bị drift, Control Tower sẽ báo lỗi và phần update về sau sẽ fail. Mọi SCP tùy chỉnh của bạn phải tạo riêng, không chỉnh sửa SCP của Control Tower.
Account enrollment với account cũ: Nếu bạn đang có existing account muốn đưa vào Control Tower quản lý, phải dùng tính năng Enroll account — không phải move vào OU rồi xong. Quá trình enrollment sẽ apply baseline lên account đó, đôi khi conflict với cấu hình cũ cần giải quyết tay.
Cost không phải bằng không: Control Tower miễn phí, nhưng Log Archive Account sẽ tích lũy CloudTrail + Config data từ toàn bộ organization. Với 50+ account active, chi phí S3 + Config có thể lên vài trăm USD/tháng — cần setup S3 Lifecycle policy sớm.
Q: Control Tower có thay thế hoàn toàn AWS Organizations không?A: Không. Control Tower chạy trên nền Organizations — nó tự động hóa việc cấu hình Organizations và thêm lớp governance. Bạn vẫn thấy và dùng được Organizations console, nhưng một số thứ (như SCP của Control Tower) bị khóa không cho sửa thủ công.
Q: Có thể dùng Control Tower với existing multi-account đang có không?A: Được, nhưng phức tạp hơn setup mới. AWS có tài liệu về "Registering existing OUs" và "Enrolling accounts" — phải làm từng bước, thường phải giải quyết conflict về SCP và Config Rules đã có. Nếu existing setup đơn giản, thường mất 1-2 ngày làm việc. Nếu phức tạp với nhiều custom SCP, có thể mất cả sprint.
Q: AFT hay CfCT — nên dùng cái nào?A: Hai cái không loại trừ nhau. AFT quản lý account lifecycle (tạo, update, xóa account và baseline của nó). CfCT deploy thêm resources vào account sau khi tạo. Team dùng Terraform nhiều thì AFT phù hợp hơn; team dùng CloudFormation làm chính thì CfCT đơn giản hơn để setup ban đầu.
AWS Control Tower không phải giải pháp cho mọi scale. Nếu bạn chỉ có 3-5 account và team nhỏ, overhead của việc setup Control Tower có thể không worth it — Organizations thuần với một vài SCP tự tay viết là đủ. Nhưng khi vượt qua ngưỡng 10+ account, đặc biệt khi có nhiều team với các mức độ trust khác nhau, thì Control Tower bắt đầu trả lại giá trị rõ ràng: account mới được tạo nhất quán, guardrails được áp đồng bộ, và audit trail tập trung ở một chỗ. Cái khó nhất không phải là setup — mà là thiết kế OU structure và guardrail strategy trước khi bắt đầu. Dành thời gian cho việc đó, còn lại Control Tower sẽ lo.