OCI関数でDNSプライベート・ゾーン・エントリを自動化

一部の状況では、顧客はVCNのDNS設定をカスタマイズし、oraclevcn.comのかわりにVCN接続ホストに別のドメインを使用します。Oracle Cloud Infrastructure (OCI) DNSサービス内のDNSプライベート・ゾーン機能を使用すると、ユーザーは組込みVCN DNSリゾルバの機能を拡張できるため、VCN内のリソースにカスタム・ドメイン名を使用できます。このアーキテクチャは、OCIイベントおよびファンクションを使用してDNSゾーン・エントリの管理を自動化することで、ブログ投稿ユースケース- OCI VCNカスタムDNS(このリファレンス・アーキテクチャの他の場所にある「詳細の確認」セクションからアクセス可能)で説明されているソリューションを拡張します。

アーキテクチャ

このアーキテクチャでは、OCIファンクションおよびイベントを使用してプライベート・ゾーンにDNSエントリを自動的に移入し、手動更新や潜在的なエラーの必要性を低減する方法について説明します。その後、イベントを使用してコンパートメント・レベルで新規インスタンス作成リクエストを取得し、Add DNS recordファンクションをトリガーしてインスタンス・メタデータを収集し、DNSレコードをプライベートDNSゾーンに追加し、最後にインスタンスのフリーフォーム・タグを更新してレコードの挿入を確認できます。インスタンスが終了すると、イベントによってRemove DNS recordファンクションがトリガーされ、関連付けられたDNSレコードが削除されます。

次の図は、このリファレンス・アーキテクチャを示しています。


dns_private_zones.pngの説明が続きます
図dns_private_zones.pngの説明

dns-private-zones-oracle.zip

このアーキテクチャには次のコンポーネントがあります。
  • リージョン

    Oracle Cloud Infrastructureリージョンは、アベイラビリティ・ドメインと呼ばれる1つ以上のデータ・センターを含むローカライズされた地理的領域です。リージョンは他のリージョンから独立しており、広大な距離で(国間や大陸間でも)リージョンを分離できます。

  • コンパートメント

    コンパートメントは、Oracle Cloud Infrastructureテナンシ内のリージョン間論理パーティションです。コンパートメントを使用して、Oracle Cloudでリソースを編成し、リソースへのアクセスを制御して、使用割当てを設定します。特定のコンパートメント内のリソースへのアクセスを制御するには、誰がリソースにアクセスできるか、どのアクションを実行できるかを指定するポリシーを定義します。

  • 可用性ドメイン

    可用性ドメインは、リージョン内の独立したスタンドアロン・データ・センターです。各可用性ドメイン内の物理リソースは、他の可用性ドメイン内のリソースから分離されているため、フォルト・トレランスが提供されます。可用性ドメインどうしは、電力や冷却、内部可用性ドメイン・ネットワークなどのインフラを共有しません。そのため、ある可用性ドメインでの障害がリージョン内の他の可用性ドメインに影響することはほとんどありません。

  • 仮想クラウド・ネットワーク(VCN)およびサブネット

    VCNは、Oracle Cloud Infrastructureリージョンに設定する、カスタマイズ可能なソフトウェア定義ネットワークです。VCNは、従来のデータ・センター・ネットワークと同様に、ネットワーク環境の完全な制御を可能にします。VCNには重複しない複数のCIDRブロックを含めることができ、VCNの作成後にそれらを変更できます。VCNをサブネットにセグメント化して、そのスコープをリージョンまたは可用性ドメインに設定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックにもプライベートにもできます。セキュリティ・リスト サブネットごとに、サブネット内外で許可する必要があるトラフィックのソース、宛先およびタイプを指定するセキュリティ・ルールを作成できます。

  • NATゲートウェイ

    NATゲートウェイを使用すると、VCN内のプライベート・リソースは、受信インターネット接続にそれらのリソースを公開することなく、インターネット上のホストにアクセスできます。

  • サービス・ゲートウェイ

    サービス・ゲートウェイは、VCNからOracle Cloud Infrastructure Object Storageなどの他のサービスへのアクセスを提供します。The traffic from the VCN to the Oracle service travels over the Oracle network fabric and never traverses the internet.

  • プライベートDNSゾーン

    プライベートDNSでは、独自のプライベートDNSドメイン名を使用し、関連付けられたゾーンおよびレコードを完全管理して、仮想クラウド・ネットワーク(VCN)内および仮想クラウド・ネットワーク(VCN)間、およびオンプレミスまたは他のプライベート・ネットワークで実行されているアプリケーションのホスト名解決を提供できます。

  • Oracle Cloud Infrastructure Events

    OCIイベントを使用すると、テナンシ全体のリソースの状態変化に基づいて自動化を作成できます。生成されたイベントは、ルールのヘルプでフィルタした後、他のOCIサービス(通知、ストリーミング、ファンクション)のアクションの一部として処理できます。

  • Oracle Functions

    Oracle Functionsを使用すると、開発者はフルマネージドのマルチテナントでスケーラビリティに優れたオンデマンドのFunctions-as-a-Serviceプラットフォームを活用して、基盤となるインフラストラクチャを管理することなくクラウドでコードを記述して実行できます。このアーキテクチャでは、関数はAdd DNS recordおよびRemove DNS recordです。

  • VCN DNSリゾルバ

    VCN DNSリゾルバにより、VCNアタッチされたインスタンスは同じVCN内の他のインスタンスのホスト名(割当て可能)を解決できます。プライベート・ゾーンをVCNプライベート・ビューにアタッチすることで、VCN DNSリゾルバのデフォルト機能を拡張できます。

推奨事項

OCI FunctionsでDNSプライベート・ゾーン・エントリを自動化する際は、開始点として次の推奨事項を使用します。実際の要件は、ここで説明するアーキテクチャとは異なる場合があります。
  • VCN

    VCNを作成する際、VCNのサブネットにアタッチする予定のリソース数に基づいて、必要なCIDRブロックの数と各ブロックのサイズを決定します。標準プライベートIPアドレス空間内のCIDRブロックを使用します。

    プライベート接続を設定する他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは別のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。

    VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。

    サブネットを設計するときは、トラフィック・フローおよびセキュリティ要件を考慮してください。特定の層またはロール内のすべてのリソースを同じサブネットに接続し、セキュリティ境界として機能できます。

    リージョナル・サブネットを使用します。

  • セキュリティ

    Oracle Cloud Guardを使用して、Oracle Cloud Infrastructure内のリソースのセキュリティをプロアクティブに監視および保守します。クラウド・ガードでは、ディテクタ・レシピを使用して、リソースでセキュリティの弱点を調べ、オペレータおよびユーザーにリスクのあるアクティビティを監視するために定義できます。構成の誤りやセキュアでないアクティビティが検出されると、クラウド・ガードは修正アクションを推奨し、定義できるレスポンダ・レシピに基づいてそれらのアクションの実行を支援します。

    最大限のセキュリティが必要なリソースの場合、Oracleではセキュリティ・ゾーンを使用することをお薦めします。セキュリティ・ゾーンは、ベスト・プラクティスに基づくセキュリティ・ポリシーのOracle定義レシピに関連付けられたコンパートメントです。たとえば、セキュリティ・ゾーンのリソースにはパブリック・インターネットからアクセスできず、顧客管理キーを使用して暗号化する必要があります。セキュリティ・ゾーンでリソースを作成および更新すると、Oracle Cloud Infrastructureでは、セキュリティ・ゾーン・レシピのポリシーに対して操作が検証され、ポリシーに違反する操作が拒否されます。

  • クラウド・ガード

    Oracleによって提供されるデフォルトのレシピをクローニングおよびカスタマイズして、カスタム・ディテクタおよびレスポンダ・レシピを作成します。これらのレシピを使用すると、警告を生成するセキュリティ違反のタイプと、そのレシピに対して実行できるアクションを指定できます。たとえば、表示がパブリックに設定されているオブジェクト・ストレージ・バケットを検出できます。

    クラウド・ガードをテナンシ・レベルで適用して、範囲を広げ、複数の構成を維持する管理上の負担を軽減します。

    管理対象リスト機能を使用して、特定の構成をディテクタに適用することもできます。

  • セキュリティ・ゾーン

    セキュリティ・ゾーンは、OCIコンパートメントにセキュリティ体制を適用し、顧客のセキュリティ体制を弱める可能性のあるアクションを防止します。セキュリティ・ゾーン・ポリシーを様々なクラウド・インフラストラクチャ・タイプ(ネットワーク、コンピュート、ストレージ、データベースなど)に適用して、クラウド・リソースの安全性を確保し、セキュリティの構成ミスを防止できます。

  • ネットワーク・セキュリティ・グループ(NSG)

    NSGを使用して、特定のVNICに適用されるイングレスおよびエグレス・ルールのセットを定義できます。NSGを使用すると、VCNのサブネット・アーキテクチャをアプリケーションのセキュリティ要件から分離できるため、セキュリティ・リストではなくNSGを使用することをお薦めします。NSGを使用して、特定のVNICに適用されるイングレスおよびエグレス・ルールのセットを定義できます。NSGを使用すると、VCNのサブネット・アーキテクチャをアプリケーションのセキュリティ要件から分離できるため、セキュリティ・リストではなくNSGを使用することをお薦めします。

  • ロード・バランサの帯域幅

    ロード・バランサの作成時に、固定帯域幅を提供する事前定義済のシェイプを選択するか、帯域幅範囲を設定するカスタム(フレキシブル)シェイプを指定して、トラフィック・パターンに基づいてサービスで帯域幅を自動的にスケーリングできます。どちらの方法でも、ロード・バランサの作成後にいつでもシェイプを変更できます。

注意事項

インフラストラクチャをプロビジョニングする場合は、次の点を考慮してください。

  • デプロイメント

    アーキテクチャをデプロイするユーザーは、管理権限を持っている必要があります。

  • DNSゾーン

    構成されたDNSゾーンは、選択したサブネットと同じコンパートメントに存在する必要があります。

デプロイ

このリファレンス・アーキテクチャのTerraformコードは、Oracle Cloud Infrastructure Resource Managerのサンプル・スタックとして入手できます。GitHubからコードをダウンロードし、特定の要件に合せてカスタマイズすることもできます。

  • Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします:
    1. Oracle Cloudへのデプロイをクリックします。

      まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

    2. スタックをデプロイするリージョンを選択します。
    3. 画面上のプロンプトおよび指示に従ってスタックを作成します。
    4. スタックを作成したら、「Terraformアクション」をクリックし、「プラン」を選択します。
    5. ジョブが完了するまで待機し、プランをレビューします。

      変更を加えるには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」処理を再度実行します。

    6. それ以上の変更が不要な場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
  • GitHubのTerraformコードを使用してデプロイします:
    1. GitHubにアクセスします。
    2. リポジトリをクローニングするか、ローカル・コンピュータにダウンロードします。
    3. READMEドキュメントの指示に従います。

詳細の参照

OCIのDNSプライベート・ゾーンの詳細は、次のリソースを参照してください。

次の追加リソースを確認します。

謝辞

作成者: Andrei Ilas