IP Address Management for AWS Control Tower

Đối với nhiều khách hàng, việc quản lý và kiểm tra việc phân bổ địa chỉ IP cho các mạng quy mô lớn là một công việc phức tạp, tốn thời gian và có khả năng xảy ra lỗi. Điều này là do khối lượng công việc của ứng dụng đang nhanh chóng chuyển sang đám mây. Theo truyền thống, các quản trị viên mạng đã sử dụng kết hợp các bảng tính, các công cụ tự phát triển và tập lệnh để theo dõi các chỉ định địa chỉ trên nhiều tài khoản, Amazon Virtual Private Cloud (Amazon VPC) và AWS Regions. Cần có thời gian và cẩn thận để tránh lỗi khi cập nhật bảng tính trong khi nhóm phát triển ứng dụng yêu cầu gán địa chỉ IP cho VPC và mạng con. Nếu những lỗi này không được chú ý, chúng có thể dẫn đến xung đột địa chỉ và thời gian ngừng hoạt động sau đó, do đó gây ra các vấn đề nghiêm trọng về hoạt động và kinh doanh.

Trong một thiết lập doanh nghiệp lớn, vấn đề này ngoại suy khi bạn có nhiều ngành nghề kinh doanh (LOB). Mỗi LOB có thể thuộc về một AWS Organization riêng biệt bao gồm nhiều tài khoản AWS. Tuy nhiên, việc có một quan điểm thống nhất về phân bổ địa chỉ IP và khả năng quản lý chúng trên nhiều Tổ chức có thể trở nên khó khăn hơn.

Đây là nơi tính năng Amazon VPC IP Address Manager (IPAM) giúp tổ chức, chỉ định, giám sát và kiểm tra địa chỉ IP trên quy mô lớn dễ dàng hơn. Hơn nữa, điều này làm giảm gánh nặng quản lý và giám sát và loại bỏ các quy trình thủ công. Nó cho phép bạn dễ dàng lập kế hoạch, theo dõi và giám sát địa chỉ IP cho khối lượng công việc AWS của mình. Giải pháp của chúng tôi tận dụng IPAM để quản lý địa chỉ IP trên nhiều Tổ chức và tài khoản AWS. Trong bài đăng này, chúng tôi sẽ trình bày cách sử dụng IPAM để đơn giản hóa việc phân bổ và quản lý CIDR cho VPC trong các tài khoản trong môi trường AWS Control Tower đa tổ chức. Chúng tôi tận dụng AWS Control Tower Customizations, hay còn gọi là CfCT, để tự động hóa.

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

Giải pháp  tận dụng quy trình làm việc AWS Control Tower, cấu hình AWS CodePipeline, các dự án AWS CodeBuildAWS Step Functions để sắp xếp việc  phân phối tài khoản tự động và quản lý nó trong tổ chức của bạn. Gói cấu hình tùy chỉnh để triển khai IPAM trên nhiều tổ chức được tải lên kho lưu trữ AWS CodeCommit. Điều này kích hoạt một bản dựng nén các cấu hình IPAM riêng lẻ cần thiết cho một Tổ chức vào  bucket Amazon Simple Storage Service (Amazon S3) tương ứng được CfCT sử dụng (ví dụ: Main-IPAM-CfCT-Customization hoặc LOB-1-IPAM-CfCT-Customization) . Việc tải lên nhóm S3 sẽ tiếp tục kích hoạt quy trình làm việc tùy chỉnh trong Tổ chức cụ thể đó. Giải pháp IPAM tùy chỉnh này cung cấp IPAM trong tài khoản NetworkHub của mọi Organization. Các tài khoản  spoke do AWS Control Tower phân phối đều tự động sử dụng IP được cấp phát từ IPAM trong Organization tương ứng của họ. Điều này được thể hiện trong hình dưới đây.

Hình 1: Quản lý địa chỉ IP linh hoạt cho thiết lập đa tổ chức AWS Control Tower

Hướng dẫn mẫu

Trong phần này, chúng tôi xem xét nhóm cấp cao nhất (ví dụ: 10.0.0.0/8) mà chúng tôi sử dụng làm đầu vào cho giải pháp IPAM của mình. Hai nhóm region được tạo từ các CIDR có nguồn từ nhóm cấp cao nhất. Sau đó, một nhóm Production IPv4 và một nhóm Non-Production IPv4 sẽ được tạo từ nhóm region. Hình dưới đây cho thấy một ví dụ về phân cấp nhóm IPAM cho IPv4 trên nhiều AWS Regions trong nhóm IPAM cấp cao nhất cho Main Organization. IPv6 không được xem xét cho mục đích của bài đăng này, nhưng nó sẽ tuân theo mô hình tương tự như IPv4.

Hình 2: Các IPAM Pools được sử dụng trong Main Organization

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

  1. Các tài khoản mặc định và cấu trúc Organizational Unit (OU) được cung cấp thông qua AWS Control Tower đều có mặt. Nói cách khác, các tài khoản sau hiện có và được đăng ký trong vùng của AWS Control Tower:
    • Management Account
    • Log Archive Account và  Audit Account (trong Security OU)
  2. Tạo Shared Services OU và tạo tài khoản NetworkHub . Liên kết tài khoản NetworkHub  với Shared Services OU .
  3. Triển khai mẫu CloudFormation trong Management Account. Mẫu này tạo các thông số AWS Systems Manager và  AWS Resource Access Manager (AWS RAM) chia sẻ để tương tác với các Organizations.

Chiến lược phân nhánh

  1. Main / master –  theo dõi cho Main Organization: nhận Pull Request (PR) từ nhánh tính năng để triển khai trong Main Organization.
  2. lob-1-ipam-cfct-customization: theo dõi  LOB Organization 1 và nhận hợp nhất PR từ nhánh tính năng để triển khai trong LOB Organization 1

Lưu ý: Bạn nên tạo một chi nhánh cho mỗi Organization để kích hoạt các CodePipelines tương ứng.

Các bước triển khai

Việc triển khai giải pháp IPAM linh hoạt này bao gồm sáu phần:

Phần 1: Tạo kho lưu trữ CodeCommit trong tài khoản Management của Main Organization.

Phần 2: Triển khai CodePipeline trong tài khoản Management của Main Organization.

Phần 3: Thực hiện các thay đổi cần thiết đối với Management Account

Phần 4: Cung cấp một tài khoản spoke và đăng ký vào đơn vị tổ chức được yêu cầu (ví dụ: Đơn vị tổ chức phát triển).

Phần 5: Hợp nhất nhánh được yêu cầu trong kho lưu trữ CodeCommit để kích hoạt Pipeline.

Phần 6: Xác thực việc tạo VPC trong tài khoản spoke .

Phần 1: Tạo kho lưu trữ CodeCommit trong tài khoản Management của Main Organization

  1. Đăng nhập vào Management Account của Main Organization và tạo CodeCommit repository để đẩy các tệp .zip.
  2. Hệ thống lưu trữ này hoạt động như một nguồn cho quá trình continuous integration/continuous development (CI / CD) mà chúng tôi sẽ triển khai trong bước tiếp theo.
  3. Một Makefile được cung cấp trong thư mục chính xác định một tập hợp các nhiệm vụ sẽ được thực thi trong giai đoạn CodeBuild. Sao chép mẫu Makefile.cicd/buildspec.yaml vào thư mục gốc của kho lưu trữ CodeCommit.
  4. Một cấu trúc kho lưu trữ ví dụ trong CodeCommit được hiển thị trong hình sau.

Hình 3: Cấu trúc kho lưu trữ CodeCommit

Phần 2: Triển khai CodePipeline trong Management Account của Main Organization

  1. Đăng nhập vào Management Account của Main Organization tại home region của CfCT. Điều hướng đến  AWS CloudFormation trong bảng điều khiển.
  2. Tạo CloudFormation stack bằng cách sử dụng mẫu cicd-pipe.yaml. Cung cấp tên kho lưu trữ đã tạo ở Bước 1.

Phần 3: Thực hiện các thay đổi cần thiết đối với Management Account 

  • Triển khai customizations for AWS Control Tower trong Management Account.  Framework có thể được triển khai bằng cách sử dụng nút ‘Launch in the AWS Management Console’ trong liên kết được cung cấp. Sử dụng các tham số mặc định khi triển khai khuôn khổ.
  • Điều hướng đến CloudFormation trong bảng điều khiển. Trong pane bên trái, chọn stacks. Xác thực rằng nó đang ở trạng thái CREATE_COMPLETE.
  • Sửa đổi chính sách KMS Key cho CustomControlTowerKMSKey trong Management Account để bao gồm quy trình và vai trò xây dựng được tạo trong phần trên. Ví dụ về chính sách KMS Key được hiển thị trong hình sau.

Hình 4: KMS Key Policy với quyền vai trò CodeBuild và CodePipeline

  • Cập nhật chính sách của nhóm S3 custom-control-tower-configuration-<accountId>-<cfct-region>  trong tất cả các Organizations để có quyền truy cập nhiều tài khoản.

Hình 5: Ví dụ về chính sách nhóm S3

  • Tải xuống thư mục custom-control-tower-configuration.
  • Cập nhật tệp manifest.org1.yaml với các giá trị đáp ứng yêu cầu của bạn. Sửa đổi đơn vị tổ chức trong phần “deployment targets” của tài nguyên “vpc-automation-in-spoke-dev”. Sau đó, cập nhật phần “Regions” với Region thích hợp.
  • Sửa đổi các giá trị tham số trong vpc-automation-in-spoke.json  để cung cấp VPC và mạng con với các kích thước khác nhau (nhỏ, vừa hoặc lớn) theo yêu cầu của bạn. Ngoài ra, hãy cập nhật thông số  pEnvironment với một trong các giá trị được phép: prod, nonprod, or dev.
  • Cập nhật các thông số trong vpc-automation-in-networking-hub.json với các giá trị thích hợp theo yêu cầu.

Lưu ý: Bạn nên tạo một thư mục “custom-control-tower-configuration” cho mỗi Organization và lặp lại các Bước từ 4 đến 6 cho nhiều Organization. Đổi tên tệp kê khai. <orgnumber> .yaml cho phù hợp để đảm bảo rằng các tệp kê khai chính xác được sử dụng cho mỗi Tổ chức.

Phần 4: Cung cấp Spoke Account và đăng ký vào đơn vị tổ chức được yêu cầu (ví dụ: Development)

  • Cung cấp tài khoản thành viên mới trong vùng AWS Control Tower Landing của bạn với Account Factory.
  • Điều hướng đến trang Account Factory trong AWS Control Tower.
  • Chọn mục Enroll account ở gần đầu trang và đăng ký tài khoản vào đơn vị tổ chức được yêu cầu.
  • Điều hướng trở lại Management Account và cập nhật “deployment targets” của phần “vpc-automation-in-spoke-dev” trong tệp manifest.org1.yaml với tên đơn vị tổ chức thích hợp (ví dụ: Development). Sau đó, cập nhật phần “Regions” với Region thích hợp. Điều này được thể hiện trong hình dưới đây.

Hình 6: Tệp kê khai hiển thị các mục tiêu triển khai của tự động hóa vpc trong spokes

Phần 5: Hợp nhất nhánh được yêu cầu trong kho lưu trữ CodeCommit để kích hoạt Pipeline.

  • Thực hiện tất cả các phát triển của bạn trong một nhánh tính năng.
  • Hợp nhất nhánh tính năng thành một nhánh chính để kích hoạt CfCT pipeline trong Main Organization. Sau khi hợp nhất thành công, CI/CD pipeline sẽ tạo một tệp .zip (custom-control-tower-configuration.zip), sau đó đặt nó vào Main Organization’s CfCT S3 bucket (the custom-control-tower-configuration-<accountId>-<cfct-region> bucket).

Phần 6: Xác thực việc tạo VPC trong spoke account 

  • Sau khi hoàn thành hai bước trên (trong mục 5), hãy đăng nhập vào spoke account để xác thực việc tạo VPC. VPC được tạo dựa trên kích thước mà bạn cung cấp (nhỏ, vừa hoặc lớn) và CIDR trong nhóm IPAM được cấp cho Organization này.

Tích hợp giải pháp IPAM trên nhiều organizations

Để tích hợp giải pháp IPAM trên nhiều organizations, hãy làm theo các bước tiếp theo. Trong kịch bản này, chúng tôi xem xét hai organizations – Main Organization và LOB Organization 1.

  • Đảm bảo rằng các điều kiện tiên quyết được đáp ứng cho môi trường này.
  • Tải xuống thư mục custom-control-tower-configuration. Thực hiện theo các hướng dẫn triển khai tương tự như được thực hiện trong Phần 3, 4 và 5, nhưng thực hiện các hành động trong Phần 3, 4 và 5 cho LOB Organization 1.
  • Hợp nhất nhánh tính năng vào nhánh “lob-1-ipam-cfct-customization” để kích hoạt CfCT pipeline trong LOB Organization 1. Trong trường hợp này, CI/CD pipeline nén và đưa tệp vào  “LOB Organization 1” organization’s CfCT S3 bucket.

Khi quá trình tùy chỉnh hoàn tất, hãy điều hướng đến bảng điều khiển CodePipeline trong tài khoản quản lý LOB 1 để xác thực rằng Custom-Control-Tower-CodePipeline đang ở trạng thái thành công. Điều hướng đến phần StackSets của bảng điều khiển CloudFormation để xác thực thêm và xem StackSets đã triển khai.

Cleanup

Sau khi kiểm tra và xác thực thành công, tất cả các tài nguyên được triển khai thông qua các mẫu CloudFormation sẽ bị xóa để tránh bất kỳ chi phí không mong muốn nào. Chỉ cần truy cập bảng điều khiển CloudFormation, xác định các ngăn xếp phù hợp và xóa chúng.

Nếu bạn đã làm theo cùng với thiết lập ví dụ, thì bạn nên dọn dẹp mọi tài nguyên mà bạn đã tạo để tránh bị tính thêm phí về lâu dài. Để thực hiện dọn dẹp tài nguyên, bạn phải:

  1. Xóa các StackSets đã được tạo trong LOB Organization – 1 and LOB Organization – 2. Để xóa một tập hợp stack, trước tiên bạn phải xóa tất cả các thể hiện ngăn xếp trong tập hợp ngăn xếp.
  2. Xóa các tập hợp StackSets đã được tạo trong Main Organization. Để xóa một tập hợp ngăn xếp, trước tiên bạn phải xóa tất cả các thể hiện ngăn xếp trong tập hợp ngăn xếp.
  3. Xóa các quyền CodePipelineRole và CodeDeployRole được thêm vào CustomControlTowerKMSKey trong tài khoản quản lý của Main Organization
  4. Xóa CodePipeline stack được tạo trong tài khoản quản lý của Main Organization
  5. Xóa CodeCommit repository được tạo trong tài khoản quản lý của Main Organization

Lưu ý: Nếu bạn sử dụng thiết lập nhiều tài khoản, thì bạn phải điều hướng qua ranh giới tài khoản và thực hiện theo các bước trên nếu cần để dọn dẹp.

Kết luận

Giải pháp dành cho IPAM này tận dụng các AWS Control Tower customizations cho thấy việc quản lý tập trung và định kích thước các VPC của bạn theo yêu cầu ứng dụng của bạn dễ dàng như thế nào. Giải pháp được tích hợp end-to-end với CfCT. Điều này cung cấp cách tiếp cận DevOps và tổng quan cập nhật về không gian địa chỉ IP có sẵn trên nhiều Organizations. Hơn nữa, giải pháp này tận dụng IPAM cung cấp sự linh hoạt trong việc phân bổ các kích thước CIDR khác nhau cho các VPC của bạn.


Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.

Leave a comment