Terraform を使用して AWS で階層型のマルチリージョン IPAM アーキテクチャを作成する - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Terraform を使用して AWS で階層型のマルチリージョン IPAM アーキテクチャを作成する

Amazon Web Services、Donny Schreiber

概要

IP Address Manager (IPAM) はネットワーク管理における重要なコンポーネントであり、組織がクラウドインフラストラクチャをスケールするにつれて、その複雑性は増加します。適切な IPAM が欠けている状態では、組織は IP アドレスの競合やアドレススペースの浪費、複雑なトラブルシューティングのリスクにさらされ、停止やアプリケーションのダウンタイムにつながる可能性があります。このパターンは、HashiCorp Terraform を使用して AWS エンタープライズ環境に包括的な IPAM ソリューションを実装する方法を示しています。これにより、組織は組織内のすべての AWS アカウント で一元化された IP アドレス管理を容易にする階層型のマルチリージョン IPAM アーキテクチャを作成できますAWS

このパターンは、最上位プール、リージョンプール、ビジネスユニットプール、環境固有のプールという高度な 4 層プール階層を持つ Amazon VPC IP Address Manager の実装に活用できます。この構造により、適切な IP アドレスガバナンスをサポートし、組織内の適切なチームに IP 管理を委任できるようになります。このソリューションは AWS Resource Access Manager (AWS RAM) を使用して、IP Address Manager プールを組織全体でシームレスに共有します。 は IPAM 仕様を AWS RAM 一元化および標準化します。この仕様は、チームがすべてのマネージドアカウントで構築できます。

このパターンを活用することで、以下の操作が可能です。

  • 、ビジネスユニット AWS リージョン、環境間の IP アドレスの割り当てを自動化します。

  • プログラム検証により、組織のネットワークポリシーを適用します。

  • 業務ニーズに合わせてネットワークのインフラストラクチャを効率的にスケールします。

  • IP アドレススペースを一元管理することで、運用上のオーバーヘッドを削減します。

  • セルフサービス CIDR 範囲の割り当てにより、クラウドネイティブワークロードのデプロイを高速化します。

  • ポリシーベースの制御と検証を実施することで、アドレスの競合を防ぎます。

前提条件と制限

前提条件

  • 組織として管理される AWS アカウント 1 つ以上の AWS Organizations。

  • IP Address Manager の委任管理者として機能するネットワークハブまたはネットワーク管理アカウント。

  • AWS Command Line Interface (AWS CLI)、インストールおよび設定済み。

  • インストール済みの Terraform、バージョン 1.5.0 以降。

  • AWS Terraform のプロバイダー、設定済み。

  • AWS Identity and Access Management (IAM) で設定された IP Address ManagerAWS RAM、および Virtual Private Cloud (VPC) を管理するためのアクセス許可。 VPCs

制限事項

  • IP Address Manager には Service Quotas が適用されます。プールのデフォルトの Service Quotas は、スコープあたり 50 です。このデプロイを 6 つのリージョン、2 つのビジネスユニット、4 つの環境で実行すると、67 のプールが作成されます。したがって、クォータの引き上げが必要になる場合があります。

  • リソースの割り当て後に IP Address Manager プールを変更または削除すると、依存関係の問題が発生する可能性があります。プールを削除するには、最初に割り当てを解除する必要があります。

  • IP Address Manager では、リソースのモニタリングでリソースの変更が反映されるのにわずかな遅延が発生する可能性があります。この遅延は約 20 分です。

  • IP Address Manager は、異なるスコープにわたって IP アドレスの一意性を自動的に適用することはできません。

  • カスタムタグは 「AWS tagging best practices」に従って作成してください。例えば、各キーは一意である必要があり、aws: で始めることはできません。

  • IP Address Manager を組織外のアカウントと統合する際には、必ず「考慮事項と制限」をご確認ください。

アーキテクチャ

ターゲットアーキテクチャ

IP Address Manager の設定とプール階層

ターゲットアーキテクチャの理論コンストラクトを以下の図に示します。スコープは、IP Address Manager の最上位コンテナです。それぞれのスコープは、単一ネットワークの IP アドレススペースを表します。プールとは、スコープ内の連続した IP アドレス範囲 (または CIDR 範囲) のコレクションです。プールを使用すると、ルーティングとセキュリティのニーズに応じて IP アドレスを整理できます。この図は、最上位プール、リージョンプール、ビジネスユニットプール、環境プールの 4 つの階層レベルのプールを示しています。

ネットワークアカウントの単一の AWS リージョン内のプライベートスコープと 4 レベルのプール。

このソリューションは、IP Address Manager プールの明確な階層を確立します。

  1. 最上位プールには、10.176.0.0/12 などの組織の IP アドレススペース全体が含まれます。

  2. リージョンプールは、us-east-1 に対しての 10.176.0.0/15 といった、リージョン固有の割り当てを行う際に機能します。

  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 は 1 つのプライマリにデプロイされます AWS リージョン。

  • 追加のリージョンは、IP Address Manager がリソースを管理できる運用リージョンとして登録されます。

  • 各運用リージョンは、最上位プールから専用アドレスプールを受け取ります。

  • すべての運用リージョンのリソースは、プライマリリージョンの IP Address Manager を通じて一元管理されます。

  • 各リージョンプールには、リソースの適切な割り当てに役立つロケールプロパティがリージョンに関連付けられています。

高度な CIDR 範囲の検証

このソリューションは、無効な設定のデプロイを防ぐように設計されています。Terraform を介してプールをデプロイすると、Terraform 計画フェーズ中に以下が検証されます。

  • すべての環境 CIDR 範囲が親ビジネスユニットの CIDR 範囲に含まれていることを検証します

  • すべてのビジネスユニット CIDR 範囲が親リージョンの CIDR 範囲内に含まれていることを確認します

  • すべてのリージョンの CIDR 範囲が最上位 CIDR 範囲に含まれていることを確認します

  • 同じ階層レベル内で重複する CIDR 範囲をチェックします

  • 環境とそれぞれのビジネスユニットの適切なマッピングを検証します

CIDR 範囲の割り当て

次の図は、開発者または管理者が新規 VPC を作成し、プールレベルから IP アドレスを割り当てる手法のサンプルを示しています。

ネットワークアカウントの単一の AWS リージョン内のプライベートスコープと 4 レベルのプール。

この図表は、次のワークフローを示しています:

  1. 開発者または管理者は AWS マネジメントコンソール、、 AWS CLI、またはInfrastructure as Code (IaC) を通じて、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 のサービス を使用して を操作するのに役立つオープンソースツールです。

  • 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 は、コードを使用してクラウドインフラストラクチャとリソースをプロビジョニングして管理するのを支援する Infrastructure as Code (IaC) ツールです。

コードリポジトリ

このパターンのコードは、GitHub の「Sample Terraform Implementation for Hierarchical IPAM on AWS repository」から入手できます。リポジトリ構造には以下が含まれます。

  • ルートモジュール – デプロイオーケストレーション変数と入力変数。

  • IPAM モジュール – このパターンで説明されているアーキテクチャのコア実装。

  • タグモジュール – すべてのリソースに標準化されたタグ。

ベストプラクティス

ネットワークの計画時は、以下のベストプラクティスを参照してください。

  • 最初に計画する – デプロイ前に IP アドレススペースを慎重に計画します。詳しくは「IP アドレスのプロビジョニング計画」をご確認ください。

  • CIDR 範囲の重複を避ける – 各レベルの CIDR 範囲が重複しないようにしてください。

  • バッファスペースを確保する – 増加に対応できるよう、CIDR 範囲は常に広めに割り当てるようにしましょう。

  • IP アドレス割り当てのドキュメント – IP アドレス割り当て戦略のドキュメントを管理します。

デプロイにおけるベストプラクティスを以下からご確認ください。

  • 非本番環境から始める – まず非本番環境にデプロイします。

  • Terraform 状態管理を活用する – リモート状態ストレージとロックを実装します。詳しくは Terraform ドキュメントの「State storage and locking」をご確認ください。

  • バージョン管理の実装 – Terraform コードのバージョンをすべて管理します。

  • CI/CD 統合の実装 – 反復可能なデプロイには、継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインを使用します。

オペレーションにおいては以下のベストプラクティスを参考にしてください。

セキュリティ面では以下のベストプラクティスを参考にしてください。

エピック

タスク説明必要なスキル

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 ドキュメント」の「Integrate IPAM with accounts in an AWS Organization」を参照してください。

AWS 管理者
タスク説明必要なスキル

ネットワークアーキテクチャを定義します。

リージョン、ビジネスユニット、環境の 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. ナビゲーションペインで、[プール] を選択します。

  3. プールのリストで、設定したプールが作成されていることを確認します。

  4. AWS RAM コンソールを開きます。

  5. IP Address Manager リソースが共有されていることを確認します。 AWS RAM ドキュメントで作成したリソース共有の表示の手順に従います。

AWS 全般、ネットワークエンジニア
タスク説明必要なスキル

VPC を作成します。

Amazon VPC ドキュメントの「VPC を作成する」の手順に従ってください。VPC の CIDR 範囲を選択するステップに到達したら、リージョン、ビジネスユニット、環境プールのいずれかから利用可能な範囲を割り当てます。

AWS 全般、ネットワーク管理者、ネットワークエンジニア

CIDR 範囲の割り当てを検証します。

  1. IP Address Manager コンソールを開きます。

  2. ナビゲーションペインで、ダッシュボードを選択してください。

  3. ダッシュボードで、作成した VPC に CIDR 範囲が割り当てられていることを確認します。

AWS 全般、ネットワーク管理者、ネットワークエンジニア

IP Address Manager をモニタリングします。

IP Address Manager リソースの割り当てに関連するモニタリングとアラームを設定します。手順について、詳しくは IP Address Manager ドキュメントの「Amazon CloudWatch で IPAM をモニタリングする」および「リソースごとに CIDR の使用状況をモニタリングする」をご確認ください。

AWS 全般

IP Address Manager の使用を強制します。

組織内のメンバーが VPC を作成するときに IP Address Manager を使用すること AWS Organizations を要求するサービスコントロールポリシー (SCP) を に作成します。手順については IP Address Manager ドキュメントの「SCP を使用して VPC 作成に IPAM の使用を強制する」を参照してください。

一般的な AWS、AWS 管理者

トラブルシューティング

問題ソリューション

Terraform が失敗し、「IP Address Manager リソースが見つかりません」という表示が出る

IP Address Manager 管理者アカウントが適切に委任され、 AWS プロバイダーがそのアカウントに認証されていることを確認します。

CIDR 範囲の割り当てが失敗する

リクエストされた CIDR 範囲が IP Address Manager プールの使用可能な範囲内に収まり、既存の割り当てと重複していないことを確認します。

AWS RAM 問題の共有

Organization でリソース共有が有効になっていることを確認します AWS 。正しいプリンシパルである組織の Amazon リソースネーム (ARN) が AWS RAM 共有で使用されていることを確認します。

プール階層の検証エラー

子プール CIDR 範囲が親プール CIDR 範囲内に適切に含まれており、兄弟プールと重複していないことを確認します。

IP Address Manager のクォータ制限を超過した

IP Address Manager プールのクォータ引き上げをリクエストしてください。詳細については、「Service Quotas ユーザーガイド」の「クォータの引き上げのリクエスト」を参照してください。

関連リソース

AWS のサービス ドキュメント

AWS ブログ投稿

動画とチュートリアル

追加情報

AFT との統合

このソリューションを AWS Control Tower Account Factory for Terraform (AFT) と統合して、新しくプロビジョニングされたアカウントが適切なネットワーク設定を自動的に受信するようにできます。この IPAM ソリューションをネットワークハブアカウントにデプロイすることで、AFT を介して作成された新アカウントが、共有の IP Address Manager プールを VPC 作成時に参照できるようになります。

次のコードサンプルは、Parameter Store を使用したアカウントカスタマイズでの AFT AWS Systems Manager 統合を示しています。

# 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 リソースに自動的に適用されます。これにより、安定したガバナンスとコスト配分、リソース管理を実現します。