Triển khai Terraform tùy chỉnh vào các tài khoản được LZA quản lý bằng AFT

Tác giả: Eric Waxler and Christopher Pfaltzgraff
Ngày phát hành: 06 FEB 2026
Chuyên mục: Customer Solutions, Enterprise governance and control, Management & Governance, Management Tools, Technical How-to

Khi các tổ chức mở rộng môi trường AWS của mình, việc quản lý cơ sở hạ tầng một cách nhất quán đồng thời cho phép các nhóm tự chủ ngày càng trở nên thách thức. Landing Zone Accelerator on AWS (LZA) và AWS Account Factory for Terraform (AFT) đều mở rộng AWS Control Tower để giúp khách hàng quản lý môi trường AWS ở quy mô lớn, mang lại những thế mạnh bổ sung.

Nhiều khách hàng AWS gặp khó khăn trong việc cân bằng quản trị bảo mật tập trung với nhu cầu tự chủ của nhóm khi triển khai cơ sở hạ tầng ở quy mô lớn. Các nhóm muốn sử dụng Terraform cho cơ sở hạ tầng dưới dạng mã, nhưng việc duy trì các đường cơ sở bảo mật nhất quán trên hàng trăm tài khoản đồng thời cho phép tùy chỉnh ngày càng trở nên phức tạp.

Bài viết này xây dựng dựa trên bài đăng trước đó của chúng tôi Sử dụng Terraform với Landing Zone Accelerator trên AWS và mở rộng hơn nữa để cung cấp giải pháp triển khai Terraform theo cách có thể quản lý và lặp lại. Trong bài viết này, chúng tôi sẽ chỉ cho bạn cách tích hợp LZA với AFT trong môi trường Control Tower của bạn, tạo ra một giải pháp mạnh mẽ giúp tăng cường tư thế bảo mật của bạn đồng thời đẩy nhanh việc triển khai cơ sở hạ tầng thông qua các quy trình làm việc Terraform tự động. Sự tích hợp này cho phép các tổ chức triển khai các đường cơ sở bảo mật và kiểm soát quản trị đã được chứng minh thông qua LZA trong khi tận dụng công cụ triển khai Terraform sẵn sàng cho doanh nghiệp của AFT, cung cấp cho các nhóm một phương pháp quản lý cơ sở hạ tầng mạnh mẽ, tự động.

Tổng quan về giải pháp

Giải pháp này tích hợp Landing Zone Accelerator on AWS với Account Factory for Terraform bằng cách triển khai AFT trong môi trường được LZA quản lý của bạn. Khi bạn tạo các tài khoản mới thông qua LZA, chúng có thể được đăng ký với AFT, cho phép triển khai các module Terraform tùy chỉnh trong khi vẫn duy trì các kiểm soát quản trị của LZA. Sự tích hợp này tận dụng cấu trúc tài khoản hiện có của LZA, với AFT được triển khai trong một tài khoản chuyên dụng để điều phối các triển khai Terraform trên toàn môi trường của bạn. Các lợi ích chính bao gồm quản trị tập trung, cấp phát tài khoản tự động và hỗ trợ các module Terraform hiện có.

Hướng dẫn chi tiết

Bài viết này sẽ chỉ cho bạn cách triển khai Account Factory for Terraform vào môi trường Landing Zone Accelerator hiện có của bạn. Sau khi triển khai, chúng tôi sẽ chỉ cho bạn cách sử dụng các giải pháp này cùng nhau để tạo các tài khoản AWS mới và triển khai các template Terraform của bạn vào chúng.

Quá trình này sẽ diễn ra qua 4 bước:

  1. Cung cấp tài khoản quản lý AFT
  2. Triển khai AFT vào môi trường được LZA quản lý
  3. Tạo và đăng ký tài khoản
  4. Triển khai Terraform tùy chỉnh

Điều kiện tiên quyết

Khi triển khai giải pháp này, hãy xem xét rằng bạn sẽ cần thêm các tài nguyên AWS để hỗ trợ AFT, bao gồm tài khoản quản lý AFT và cơ sở hạ tầng pipeline liên quan. Các chi phí chính phát sinh từ các tài nguyên quản lý AFT này, thường bao gồm AWS CodePipeline, AWS CodeBuild và bộ nhớ Amazon Simple Storage Service (Amazon S3) cho các tệp trạng thái Terraform. Mặc dù chi phí thực tế sẽ thay đổi tùy thuộc vào tần suất triển khai và quy mô của bạn, hầu hết các tổ chức đều nhận thấy rằng hiệu quả hoạt động tăng lên vượt trội so với chi phí cơ sở hạ tầng bổ sung tối thiểu.

Đối với hướng dẫn này, bạn nên có các điều kiện tiên quyết sau:

Bước 1: Cung cấp tài khoản quản lý AFT

Để phù hợp với các khuyến nghị của AFT, hãy tạo một organizational unit (OU) để lưu trữ tài khoản quản lý AFT. Chúng tôi sẽ sử dụng LZA để tạo một OU và tài khoản AWS mới bằng cách cập nhật các tệp cấu hình LZA được lưu trữ trong AWS CodeCommit, Amazon S3 hoặc AWS CodeConnections. Kiểm tra tham số ConfigurationRepositoryLocation của stack CloudFormation của LZA Installer Stack để tìm các tệp cấu hình LZA của bạn.

  1. Thêm một OU mới vào trường organizationalUnits của tệp organizations-config.yaml của bạn để tạo một OU mới: organizationalUnits: - name: Security - name: Infrastructure - name: $OU_NAME
  2. Thêm một tài khoản mới vào trường workloadAccounts của tệp accounts-config.yaml của bạn để tạo một tài khoản AWS mới: workloadAccounts: - name: AFT description: The management account for AFT email: $AFT_MANAGEMENT_ACCOUNT_EMAIL organizationalUnit: $OU_NAME warm: false
  3. Commit và push các tệp cấu hình LZA đã cập nhật của bạn vào repository AWS CodeCommit của bạn (hoặc hệ thống kiểm soát phiên bản đã cấu hình của bạn).
  4. Trong AWS Management Console, điều hướng đến AWS CodePipeline và chọn pipeline LZA (thường được đặt tên là AWSAccelerator-Pipeline).
  5. Nhấp vào Release change để bắt đầu pipeline theo cách thủ công bằng cách sử dụng các tệp cấu hình đã cập nhật.

Bước 2: Triển khai AFT vào môi trường được LZA quản lý

Bắt đầu quá trình triển khai AFT bằng cách làm theo các hướng dẫn này về cách thiết lập VCS của bạn cho AFT. Tạo một dự án Terraform mới ở vị trí ưa thích của bạn (điều này sẽ tách biệt với cấu hình LZA của bạn). Trong dự án này, tạo một tệp main.tf và thêm cấu hình module sau:

module "aft" {
source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
aft_management_account_id = [AFT_MANAGEMENT_ACCOUNT_ID]
audit_account_id = [AUDIT_ACCOUNT_ID]
log_archive_account_id = [LOG_ACCOUNT_ID]
ct_home_region = [HOME_REGION]
ct_management_account_id = [CONTROL_TOWER_MANAGEMENT_ACCOUNT_ID]
}

Dưới đây là mô tả của từng trường được tham chiếu trong module:

  • AFT_MANAGEMENT_ACCOUNT_ID: AWS Account ID cho tài khoản quản lý AFT được tạo ở Bước 1
  • AUDIT_ACCOUNT_ID: AWS Account ID cho tài khoản audit được tạo bởi triển khai LZA
  • LOG_ACCOUNT_ID: AWS Account ID cho tài khoản logging được tạo bởi triển khai LZA
  • HOME_REGION: AWS Region được sử dụng làm home region cho triển khai LZA
  • CONTROL_TOWER_MANAGEMENT_ACCOUNT_ID: AWS Account ID cho tài khoản quản lý Control Tower

Thay thế các giá trị trong ngoặc bằng các Account ID và Region thực tế của bạn. Đảm bảo thêm bất kỳ tham số nào được yêu cầu bởi VCS đã chọn của bạn.

Để triển khai module Terraform của AFT trong môi trường của bạn:

  1. Assume IAM role với chính sách AdministratorAccess cho tài khoản quản lý Control Tower.
  2. Áp dụng dự án terraform bằng lệnh terraform apply để triển khai các tài nguyên cần thiết cho AFT trong tài khoản quản lý Control Tower và tài khoản quản lý AFT.
  3. Chờ các pipeline được tạo trong tài khoản quản lý AFT hoàn thành thành công.

Sau khi các pipeline này hoàn thành thành công, bạn đã hoàn tất việc cài đặt AFT trong tài khoản của mình.

Lưu ý: Nếu bạn đang sử dụng một VCS bên ngoài, bạn cần hoàn tất kết nối với repository của mình như đã lưu ý trong hướng dẫn thiết lập VCS của bạn cho AFT. Nếu các pipeline của bạn thất bại, bạn có thể cần gọi lại các pipeline này theo cách thủ công để hoàn tất quá trình cài đặt.

Bước 3: Tạo tài khoản mới

Việc tạo tài khoản được thực hiện bằng cách cập nhật các tệp cấu hình LZA theo cách tương tự như khi chúng ta không triển khai AFT. Cập nhật tệp account-config.yaml để bao gồm các tài khoản mới bạn cần như chúng ta đã làm trong bước Cung cấp tài khoản quản lý AFT và để pipeline triển khai LZA chạy.

Tạo tài khoản AWS mới bằng LZA và đăng ký với AFT:

  1. Tạo một tài khoản mới thông qua Landing Zone Accelerator (LZA).
  2. Đăng ký tài khoản với Account Factory for Terraform (AFT). Trong repository aft-account-request, tạo một yêu cầu tài khoản mới trong thư mục terraform/. Đảm bảo cập nhật các tham số AccountEmail, AccountNameaccount_customizations_name. Email và tên phải khớp với những gì đã được thêm vào cấu hình LZA. Tên tùy chỉnh được sử dụng để xác định những tùy chỉnh nào sẽ được triển khai cho tài khoản này. Lưu các thay đổi này và push chúng vào nhà cung cấp VCS.
  3. Trong tài khoản quản lý AFT, mở console AWS CodePipeline và điều hướng đến chế độ xem Pipelines.
  4. Giám sát pipeline ct-aft-account-request khi nó thực hiện triển khai tùy chỉnh tài khoản.
  5. Sau khi pipeline hoàn thành thành công, hãy xác minh rằng một pipeline mới dành riêng cho tài khoản xuất hiện trong danh sách pipeline để triển khai các tùy chỉnh.

Bước 4: Triển khai Terraform tùy chỉnh

Có hai cách để thêm tùy chỉnh thông qua AFT:

  • Global customizations được triển khai cho tất cả các tài khoản đã đăng ký với AFT. Global customizations được thêm vào repository aft-global-customizations trong thư mục terraform/.
  • Account customizations được triển khai dựa trên account_customizations_name được chỉ định khi bạn import tài khoản vào AFT. Mọi tài khoản có tên được chỉ định sẽ nhận được các tùy chỉnh tương ứng được triển khai cho chúng. Account customizations được thêm vào repository aft-account-customizations trong thư mục ACCOUNT_CUSTOMIZATION_NAME/terraform/.

Khi một tài khoản mới được đăng ký, một pipeline sẽ tự động được tạo và kích hoạt để triển khai tất cả các tùy chỉnh áp dụng cho tài khoản đó. Đối với các tùy chỉnh được thêm sau quá trình đăng ký tài khoản, các pipeline tùy chỉnh phải được gọi thủ công. Sơ đồ kiến trúc sau đây cho thấy cách AFT triển khai các tài nguyên Terraform vào một tài khoản hiện có:


Sơ đồ kiến trúc LZA-AFT: Quy trình triển khai Terraform

Triển khai Terraform tùy chỉnh thông qua AFT vào các tài khoản hiện có:

  1. Cập nhật cấu hình AFT của bạn với các tùy chỉnh mong muốn.
  2. Điều hướng đến Step Function aft-invoke-customizations trong tài khoản quản lý AFT.
  3. Kích hoạt Step Function với input sau:
    json { "include": [ { "type": "all" } ] }

AFT cung cấp các tham số khác nhau mà bạn có thể chỉ định để xác định tài khoản nào được cập nhật dựa trên lời gọi. Để tìm hiểu thêm, hãy tham khảo hướng dẫn của AFT về việc gọi lại các tùy chỉnh.

Dọn dẹp

Để xóa một tài khoản khỏi môi trường này, trước tiên chúng ta sẽ xóa tài khoản khỏi AFT và sau đó khỏi LZA.

Xóa tài khoản khỏi AFT: Để xóa một tài khoản khỏi AFT, hãy làm theo tài liệu chính thức của AFT về việc xóa tài khoản. Quá trình này bao gồm việc xóa yêu cầu tài khoản khỏi repository aft-account-request và cho phép AFT xử lý việc xóa thông qua pipeline tự động của nó.

Xóa tài khoản khỏi LZA: Sau khi tài khoản được xóa thành công khỏi AFT, bạn có thể tiến hành đóng tài khoản trong LZA bằng cách làm theo tài liệu AWS về đóng tài khoản được LZA quản lý. Điều này đảm bảo việc dọn dẹp đúng cách tất cả các tài nguyên và cấu hình được LZA quản lý liên quan đến tài khoản.

Luôn xóa tài khoản khỏi AFT trước khi xóa chúng khỏi LZA để tránh các tài nguyên bị bỏ lại và đảm bảo việc dọn dẹp đúng cách tất cả cơ sở hạ tầng được quản lý bằng Terraform.

Kết luận

Bằng cách tích hợp Landing Zone Accelerator on AWS với Account Factory for Terraform, các tổ chức có thể duy trì quản trị mạnh mẽ đồng thời cho phép các nhóm triển khai các module Terraform tùy chỉnh trên toàn môi trường AWS của họ. Cách tiếp cận này giải quyết một thách thức phổ biến đối với các doanh nghiệp đang mở rộng hoạt động đám mây của họ: cân bằng kiểm soát tập trung với sự linh hoạt của nhóm. Thông qua sự tích hợp này, bạn có thể tận dụng nền tảng quản trị vững chắc của LZA trong khi tận dụng khả năng triển khai Terraform của AFT, mang lại cho các nhóm của bạn sự tự do sử dụng các công cụ cơ sở hạ tầng dưới dạng mã ưa thích của họ. Chúng tôi khuyến khích bạn khám phá giải pháp này sâu hơn bằng cách bắt đầu với một môi trường thử nghiệm, sau đó dần dần mở rộng để hỗ trợ các triển khai Terraform phức tạp hơn khi bạn cảm thấy thoải mái hơn với sự tích hợp. Để biết thêm thông tin, hãy truy cập tài liệu Landing Zone Accelerator on AWSAccount Factory for Terraform, hoặc liên hệ với AWS Support để được hướng dẫn cụ thể về việc triển khai của bạn.

Về tác giả

Eric Waxler

Eric Waxler

Eric Waxler là Kỹ sư Phát triển Hệ thống Cấp cao, tập trung vào việc xây dựng phần mềm giúp khách hàng AWS xây dựng nền tảng bảo mật có thể mở rộng theo quy mô tổ chức của họ. Anh là một cộng tác viên cốt lõi của dự án Landing Zone Accelerator, tập trung vào hiệu suất và khả năng mở rộng.

Christopher Pfaltzgraff

Christopher Pfaltzgraff

Chris Pfaltzgraff là Kiến trúc sư Đám mây Liên kết, chuyên về phát triển và hiện đại hóa ứng dụng trên AWS. Anh xuất sắc trong việc thiết kế các giải pháp mới lạ để giải quyết các yêu cầu kinh doanh phức tạp và vượt qua mong đợi của khách hàng.