AWS 使用 Terraform 在 上建立階層式多區域 IPAM 架構 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS 使用 Terraform 在 上建立階層式多區域 IPAM 架構

Donny Schreiber,Amazon Web Services

總結

IP 地址管理 (IPAM) 是網路管理的關鍵元件,隨著組織擴展其雲端基礎設施而變得越來越複雜。如果沒有適當的 IPAM,組織會面臨 IP 地址衝突、地址空間浪費,以及可能導致中斷和應用程式停機的複雜故障診斷的風險。此模式示範如何使用 HashiCorp Terraform 為 AWS 企業環境實作全面的 IPAM 解決方案。它可協助組織建立階層式多區域 IPAM 架構,以促進組織中所有 AWS 帳戶 的集中式 IP 地址管理AWS

此模式可協助您使用複雜的四層集區階層實作 Amazon VPC IP Address Manager:頂層集區、區域集區、業務單位集區和環境特定集區。此結構支援適當的 IP 地址控管,同時啟用將 IP 管理委派給組織內適當的團隊。解決方案使用 AWS Resource Access Manager (AWS RAM) 在整個組織中無縫共用 IP Address Manager 集區。 AWS RAM 集中和標準化 IPAM 規格,團隊可以在所有受管帳戶中建置這些規格。

此模式可協助您達成下列目標:

  • 自動化跨 AWS 區域、業務單位和環境的 IP 地址配置。

  • 透過程式設計驗證強制執行組織網路政策。

  • 隨著業務需求的演進,有效率地擴展網路基礎設施。

  • 透過集中管理 IP 地址空間來降低營運開銷。

  • 使用自助式 CIDR 範圍配置加速雲端原生工作負載部署。

  • 透過以政策為基礎的控制和驗證來防止解決衝突。

先決條件和限制

先決條件

  • 一或多個 AWS 帳戶,以組織身分管理 AWS Organizations。

  • 做為 IP Address Manager 委派管理員的網路中樞或網路管理帳戶。

  • AWS Command Line Interface (AWS CLI),已安裝設定

  • 已安裝 Terraform 1.5.0 版或更新版本。

  • AWS Terraform 的提供者,已設定

  • 管理 IP Address ManagerAWS RAM虛擬私有雲端 (VPCs許可,已在 AWS Identity and Access Management (IAM) 中設定。

限制

  • IP Address Manager 受限於服務配額。集區的預設服務配額為每個範圍 50 個。為 6 個區域、2 個業務單位和 4 個環境執行此部署會建立 67 個集區。因此,可能需要增加配額。

  • 在配置資源之後修改或刪除 IP Address Manager 集區可能會導致相依性問題。您必須先釋出配置,才能刪除集區。

  • 在 IP Address Manager 中,資源監控可能會在反映資源變更時發生些微延遲。此延遲可能約為 20 分鐘。

  • IP Address Manager 無法自動強制執行不同範圍的 IP 地址唯一性。

  • 自訂標籤必須遵循AWS 標記最佳實務。例如,每個金鑰都必須是唯一的,且不能以 開頭aws:

  • 將 IP Address Manager 與組織外部的帳戶整合時,有一些考量和限制

Architecture

目標架構

IP Address Manager 組態和集區階層

下圖顯示目標架構的邏輯建構。範圍是 IP Address Manager 中的最高層級容器。每個範圍代表單一網路的 IP 地址空間。集區是範圍內連續 IP 地址範圍 (或 CIDR 範圍) 的集合。集區可協助您根據您的路由和安全需求組織 IP 地址。此圖表顯示四個層級的集區:頂層集區、區域集區、業務單位集區和環境集區。

網路帳戶中單一 AWS 區域中的私有範圍和四個層級的集區。

此解決方案會建立清晰的 IP Address Manager 集區階層:

  1. 最上層集區包含整個組織 IP 地址空間,例如 10.176.0.0/12

  2. 區域集區適用於區域特定的配置,例如 10.176.0.0/15 us-east-1

  3. 業務單位集區是每個集區中的特定網域配置 AWS 區域。例如, us-east-1區域中的財務業務單位可能會有 10.176.0.0/16

  4. 環境集區是不同環境的特定用途配置。例如, us-east-1區域中的財務業務單位可能具有生產環境10.176.0.0/18的 。

此部署拓撲會在地理上分配 IP Address Manager 資源,同時維持集中式控制。以下是其功能:

  • IP Address Manager 部署在單一主要節點中 AWS 區域。

  • 其他區域會註冊為操作區域,其中 IP Address Manager 可以管理資源。

  • 每個操作區域都會從最上層集區接收專用地址集區。

  • 所有操作區域中的資源都會透過主要區域中的 IP Address Manager 集中管理。

  • 每個區域集區都有與其區域繫結的區域設定屬性,協助您正確配置資源。

進階 CIDR 範圍驗證

此解決方案旨在防止部署無效的組態。當您透過 Terraform 部署集區時,會在 Terraform 計劃階段驗證下列項目:

  • 驗證所有環境 CIDR 範圍都包含在其父業務單位 CIDR 範圍內

  • 確認所有業務單位 CIDR 範圍都包含在其父區域 CIDR 範圍內

  • 驗證所有區域 CIDR 範圍是否包含在最上層 CIDR 範圍內

  • 檢查相同階層層級內是否有重疊的 CIDR 範圍

  • 驗證環境與其個別業務單位的適當映射

CIDR 範圍配置

下圖顯示開發人員或管理員如何建立新的 VPCs 並從集區層級配置 IP 地址的範例。

網路帳戶中單一 AWS 區域中的私有範圍和四個層級的集區。

該圖顯示以下工作流程:

  1. 透過 AWS 管理主控台、 或透過基礎設施即程式碼 (IaC) AWS CLI,開發人員或管理員會請求AY3環境集區中下一個可用的 CIDR 範圍。

  2. IP Address Manager 會將該集區中的下一個可用 CIDR 範圍配置給 AY3-4 VPC。無法再使用此 CIDR 範圍。

自動化和擴展

此解決方案專為可擴展性而設計,如下所示:

  • 區域擴展 – 透過使用其他區域集區項目擴展 Terraform 組態來新增區域。

  • 業務單位成長 – 透過將新業務單位新增至 BU 組態映射來支援新業務單位。

  • 環境彈性 – 根據組織需求設定不同的環境類型,例如開發或生產。

  • 多帳戶支援 – 透過 將集區分享到組織中的所有帳戶 AWS RAM。

  • 自動化 VPC 佈建 – 與 VPC 佈建工作流程整合,以自動化 CIDR 範圍配置。

階層結構也允許不同規模的委派和控制,如下所示:

  • 網路管理員可能會管理最上層和區域集區。

  • 業務單位 IT 團隊可能已委派控制各自的集區。

  • 應用程式團隊可能會使用其指定環境集區的 IP 地址。

注意

您也可以將此解決方案與 AWS Control Tower Account Factory for Terraform (AFT) 整合。如需詳細資訊,請參閱此模式額外資訊區段中的與 AFT 整合

工具

AWS 服務

  • Amazon CloudWatch 可協助您 AWS 即時監控 AWS 資源的指標,以及您在 上執行的應用程式。

  • AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可協助您 AWS 服務 透過命令列 shell 中的命令與 互動。

  • AWS Organizations 是一種帳戶管理服務,可協助您將多個 合併 AWS 帳戶 到您建立並集中管理的組織。

  • AWS Resource Access Manager (AWS RAM) 可協助您安全地跨 共用資源 AWS 帳戶 ,以減少營運開銷並提供可見性和可稽核性。

  • Amazon Virtual Private Cloud (Amazon VPC) 可協助您在已定義的虛擬網路中啟動 AWS 資源。此虛擬網路與您在自己的資料中心中操作的傳統網路相似,且具備使用 AWS可擴展基礎設施的優勢。IP Address Manager 是 Amazon VPC 的一項功能。它可協助您規劃、追蹤和監控 AWS 工作負載的 IP 地址。

其他工具

  • HashiCorp Terraform 是一種基礎設施即程式碼 (IaC) 工具,可協助您使用程式碼來佈建和管理雲端基礎設施和資源。

程式碼儲存庫

此模式的程式碼可在 GitHub 上儲存庫的階層式 IPAM 實作範例 AWS 中取得。儲存庫結構包括:

  • 根模組 – 部署協同運作和輸入變數。

  • IPAM 模組 – 此模式中所述架構的核心實作。

  • 標籤模組 – 所有資源的標準化標記。

最佳實務

請考慮下列網路規劃的最佳實務:

  • 先規劃 – 在部署之前徹底規劃 IP 地址空間。如需詳細資訊,請參閱規劃 IP 地址佈建

  • 避免重疊的 CIDR 範圍 – 確保每個層級的 CIDR 範圍不會重疊。

  • 預留緩衝空間 – 一律配置比立即所需更大的 CIDR 範圍,以適應成長。

  • 文件 IP 地址配置 – 維護 IP 地址配置策略的文件。

請考慮下列部署最佳實務:

  • 從非生產開始 – 首先在非生產環境中部署。

  • 使用 Terraform 狀態管理 – 實作遠端狀態儲存和鎖定。如需詳細資訊,請參閱 Terraform 文件中的狀態儲存和鎖定

  • 實作版本控制 – 版本控制所有 Terraform 程式碼。

  • 實作 CI/CD 整合 – 使用持續整合和持續交付 (CI/CD) 管道進行可重複的部署。

請考慮下列操作最佳實務:

請考慮下列安全最佳實務:

史詩

任務Description所需的技能

啟用 AWS Organizations 功能。

確定 AWS Organizations 已啟用所有功能。如需說明,請參閱 AWS Organizations 文件中的為使用 的組織啟用所有功能 AWS Organizations

AWS 管理員

在 中啟用資源共用 AWS RAM。

使用 AWS CLI,輸入下列命令為您的組織啟用 AWS RAM 資源共用:

aws ram enable-sharing-with-aws-organization

如需詳細資訊,請參閱 AWS RAM 文件中的在 中啟用資源共用 AWS Organizations

AWS 管理員

指定 IP Address Manager 的管理員。

從組織的管理帳戶中,使用 AWS CLI輸入下列命令,其中 123456789012是將管理 IP Address Manager 的帳戶 ID:

aws ec2 enable-ipam-organization-admin-account \ --delegated-admin-account-id 123456789012
注意

一般而言,網路或網路中樞帳戶會用作 IP Address Manager 的委派管理員。

如需詳細資訊,請參閱 IP Address Manager 文件中的將 IPAM 與 AWS Organization 中的帳戶整合

AWS 管理員
任務Description所需的技能

定義網路架構。

定義並記錄您的網路架構,包括區域、業務單位和環境的 CIDR 範圍。如需詳細資訊,請參閱 IP Address Manager 文件中的規劃 IP 地址佈建

網路工程師

複製儲存庫。

  1. 輸入下列命令,將儲存庫複製到本機工作站:

    git clone https://github.com/aws-samples/sample-amazon-vpc-ipam-terraform.git
  2. 輸入下列命令以導覽至 terraform目錄。

DevOps 工程師

設定變數。

  1. 開啟 terraform.tfvars 檔案。

  2. 為您的 IP Address Manager 部署設定變數。如需已完成檔案的範例,請參閱程式碼儲存庫中的 terraform.tfvars.example

  3. 儲存並關閉 terraform.tfvars 檔案。

Terraform 網路工程師

部署 IP Address Manager 資源。

  1. 輸入下列命令來初始化 Terraform:

    terraform init
  2. 輸入下列命令來產生執行計畫:

    terraform plan
  3. 檢閱計劃,並驗證要建立的資源和基礎設施元件。

  4. 輸入下列命令來部署基礎設施:

    terraform apply
  5. 出現提示時,請輸入 yes 以確認部署。

  6. 等待部署完成。

Terraform

驗證部署。

  1. 登入您的 AWS 帳戶,然後開啟 IP Address Manager 主控台

  2. 在導覽窗格中選擇 Pools (集區)。

  3. 在集區清單中,確認已建立您設定的集區。

  4. 開啟 AWS RAM 主控台

  5. 確認 IP Address Manager 資源已共用。遵循檢視您在文件中建立的資源共用中的指示。 AWS RAM

General AWS,網路工程師
任務Description所需的技能

建立 VPC。

請遵循 Amazon VPC 文件中建立 VPC 中的步驟。當您達到為 VPC 選擇 CIDR 範圍的步驟時,請從您的區域、業務單位和環境集區配置下一個可用的範圍。

一般 AWS、網路管理員、網路工程師

驗證 CIDR 範圍配置。

  1. 開啟 IP Address Manager 主控台

  2. 在導覽窗格中,選擇 Dashboard (儀表板)

  3. 在儀表板中,確認 CIDR 範圍已配置到您建立的 VPC。

一般 AWS、網路管理員、網路工程師

監控 IP Address Manager。

設定與 IP Address Manager 資源配置相關的監控和警示。如需詳細資訊和指示,請參閱 IP Address Manager 文件中的使用 Amazon CloudWatch 監控 IPAM依資源監控 CIDR 用量

一般 AWS

強制使用 IP Address Manager。

在 中建立服務控制政策 (SCP) AWS Organizations ,要求組織中的成員在建立 VPC 時使用 IP Address Manager。如需說明,請參閱 IP Address Manager 文件中的強制使用 IPAM 搭配 SCPs 建立 VPC

General AWS、AWS 管理員

疑難排解

問題解決方案

找不到 IP Address Manager 資源時 Terraform 失敗

請確定 IP Address Manager 管理員帳戶已正確委派,且您的 AWS 提供者已向該帳戶進行身分驗證。

CIDR 範圍配置失敗

檢查請求的 CIDR 範圍是否在 IP Address Manager 集區的可用範圍內,且未與現有的配置重疊。

AWS RAM 共用問題

確認您的 AWS Organization 已啟用資源共用。確認 AWS RAM 共享中使用了正確的主體,即組織 Amazon Resource Name (ARN)。

集區階層驗證錯誤

請確定子集區 CIDR 範圍已正確包含在其父集區 CIDR 範圍內,且不會與同級集區重疊。

超過 IP Address Manager 配額限制

請求提高 IP Address Manager 集區的配額。如需詳細資訊,請參閱「Service Quotas 使用者指南」中的請求提高配額

相關資源

AWS 服務 文件

AWS 部落格文章

影片和教學課程

其他資訊

與 AFT 整合

您可以將此解決方案與 AWS Control Tower Account Factory for Terraform (AFT) 整合,以確保新佈建的帳戶自動接收適當的網路組態。透過在網路中樞帳戶中部署此 IPAM 解決方案,透過 AFT 建立的新帳戶可以在建立 VPCs 時參考共用 IP Address Manager 集區。

下列程式碼範例示範使用 AWS Systems Manager 參數存放區在帳戶自訂中的 AFT 整合:

# Get the IP Address Manager pool ID from Parameter Store data "aws_ssm_parameter" "dev_ipam_pool_id" { name = "/org/network/ipam/finance/dev/pool-id" } # Create a VPC using the IP Address Manager pool resource "aws_vpc" "this" { ipv4_ipam_pool_id = data.aws_ssm_parameter.dev_ipam_pool_id.value ipv4_netmask_length = 24 tags = { Name = "aft-account-vpc" } }

標記策略

解決方案實作全方位的標記策略,以促進資源管理。下列程式碼範例示範如何使用:

# Example tag configuration module "tags" { source = "./modules/tags" # Required tags product_name = "enterprise-network" feature_name = "ipam" org_id = "finance" business_unit = "network-operations" owner = "network-team" environment = "prod" repo = "https://github.com/myorg/ipam-terraform" branch = "main" cost_center = "123456" dr_tier = "tier1" # Optional tags optional_tags = { "project" = "network-modernization" "stack_role" = "infrastructure" } }

這些標籤會自動套用至所有 IP Address Manager 資源。這有助於一致的控管、成本分配和資源管理。