機械翻訳について

10 共有ネットワークの構成

ネットワーク設定について

Compute Classicインスタンスへのネットワーク・アクセスを介して、他のインスタンスからも外部ホストからも、きめ細かな制御を実装できます。 インスタンスを作成する際、デフォルトでは他のインスタンスや外部ホストからのアクセスが許可されません。 ネットワーク設定によってインスタンスへのアクセスを構成できます。

共有ネットワークと独自のIPネットワーク設定を使用して、インスタンスへのネットワーク・アクセスを構成できます。 インスタンスに複数のvNICがある場合は、そのインスタンスを共有ネットワークIPネットワークの両方に関連付けられます。 共有ネットワークでは、セキュリティ・リストセキュリティ・ルールによってインスタンスへのアクセスが決定されますが、IPネットワークでは、セキュリティ・ルールとアクセス制御リスト(ACL)を作成してインスタンスへのアクセスを有効化します。

パブリック・インターネットを介してインスタンスに直接アクセスする場合は、インスタンスにパブリックIPアドレスを割り当てる必要があります。 パブリックIPアドレスは、共有ネットワークのインスタンスのインタフェースに割り当てることも、そのインタフェースのIPネットワークがある場合はそれに割り当てることもできます。

注意:

この項では、共有ネットワークでのネットワーク構成について説明します。 IPネットワークの設定の詳細は、「IPネットワークの構成」を参照してください。

共有ネットワークでは、一部のインスタンス間で無制限の通信を有効にする(たとえば、開発環境をホストしているすべてのインスタンスが相互に通信できるようにする)には、セキュリティ・リストを作成し、すべてのインスタンスをそのセキュリティ・リストに追加します。 インスタンスを「セキュリティ・リスト」に追加すると、インスタンスはそれらのプライベートIPアドレスを使用して同じ「セキュリティ・リスト」内の他のすべてのインスタンスと通信できます。

デフォルトで、セキュリティ・リスト内のインスタンスはセキュリティ・リスト外のホストから隔離されます。 セキュリティ・ルールを作成することで、このデフォルト設定をオーバーライドできます。 セキュリティ・ルールでは特定のソース、宛先、および通信を許可するプロトコルとポートの組合せが定義されます。 たとえば、一連の外部ホスト(セキュリティIPリストで指定)から、セキュリティ・リストのすべてのインスタンスへ、ポート22でSSHアクセスを許可するセキュリティ・ルールを設定できます。

セキュリティ・リストは、最大10個のセキュリティ・ルールでソースまたは宛先として使用できます。

次の図に、セキュリティ・リストセキュリティ・ルールを使用して、インスタンス間のトラフィックを制限、およびそれらへのアクセスを制御する方法を示します。

セキュリティ・ルールを使用したセキュリティ・リストとセキュリティIPリスト間の通信パス
この図は次の通信パスを示します。
  • Security-list-aのインスタンスは、Security-rule-aで定義されているように、Security-list-bのインスタンスに任意のプロトコルでトラフィックを送信できます。

  • Security-list-aのインスタンスは、Security-rule-bで定義されているように、公共のインターネットで任意のホストからのHTTPSトラフィックを受信できます。

  • Security-list-bのインスタンスは、Security-rule-cで定義されているように、Security-IP-list-aで指定されているIPアドレスからのトラフィックをSSHで受信できます。

セキュリティ・リストセキュリティ・ルールが定義されていない場合、デフォルトで、そのセキュリティ・リスト内のインスタンスはセキュリティ・リスト外のホストからのトラフィックを受信できません。 ただし、セキュリティ・リスト内のインスタンスは、同じセキュリティ・リスト内の他のインスタンスに引き続きアクセスできます。

セキュリティ・リストからインスタンスを削除すると、インスタンスはそのセキュリティ・リストの他のインスタンスとは通信できなくなり、そのインスタンスを出入りするトラフィックは、そのセキュリティ・リストに定義されているセキュリティ・ルールによって制御されなくなります。

セキュリティIPリストでは、セキュリティ・ルールでソースまたは宛先として使用できる一連のIPアドレスを指定します。 「セキュリティIPリストの管理」を参照してください。

インスタンスは複数のセキュリティ・リストに追加できます。 ポリシーで競合が発生する場合は、最も制限の大きいポリシーが優先されます。 たとえば、あるインスタンスが、アウトバウンド・ポリシーpermitセキュリティ・リストに属していて、同じインスタンスが、アウトバウンド・ポリシーdenyの別のセキュリティ・リストに追加される場合、そのインスタンスのアウトバウンド・ポリシーは実際にdenyになります。

共有ネットワークを使用したサンプル・シナリオ用のネットワークの設定

このセクションでは、「セキュリティ・リスト」「セキュリティ・ルール」を使用して、いくつかのCompute Classic Linuxインスタンスが共有ネットワークにアタッチされているサンプル・トポロジにファイアウォールとオープン・ポートを作成する方法を説明します。

シナリオ

このシナリオでは、8つのCompute Classic Linuxインスタンスを含むトポロジを作成: 4つは開発用(dev1dev4)、4つはプロダクション用(prod1prod4)です。

次のファイアウォール要件があると想定します。

要件 ソース 宛先 プロトコルとポート ポリシー

1

任意の開発インスタンス

任意の開発インスタンス

すべて

トラフィックを許可

2

任意の開発インスタンス

任意の本番インスタンス

SSH/22

トラフィックを許可

3

任意の本番インスタンス

任意の本番インスタンス

すべて

トラフィックを許可

4

任意の本番インスタンス

任意の開発インスタンス

すべて

トラフィックを拒否

5

任意の開発インスタンス

インターネット

すべて

トラフィックを拒否

6

インターネット

任意の開発インスタンス

すべて

トラフィックを拒否

7

サブネット203.0.113.1/28および203.0.113.32/28内の任意のホスト

インスタンスdev3dev4

SSH/22

トラフィックを許可

8

インターネット

任意の本番インスタンス

HTTPS/443

トラフィックを許可

次の図は、本番インスタンスと開発インスタンス間の必要な通信ルートと、公共のインターネットによる外部ホストからの必要な通信ルートを示しています。


この図は、本番インスタンスと開発インスタンス間の必要なファイアウォールと通信ルートを示しています。

Webコンソールを使用してこれらのファイアウォール・ルールを実装するには、「Webコンソールを使用した手順」を参照してください。

これらのファイアウォール・ルールをオーケストレーションを使用して実装するには、「手順Orchestrations v1を使用」を参照してください。

ファイアウォール・ルールが実装されたトポロジを示す図については、「必要なファイアウォール・ルールが実装されたネットワーク・トポロジ」を参照してください。

Webコンソールを使用した手順

このシナリオに必要なインスタンスを作成して必要なセキュリティ・ルールを設定するには、次のタスクを実行します。

  1. 少なくとも1つのSSHキーペアを生成し、SSH公開キーをCompute Classicにアップロードします。 「SSHキー・ペアの生成」および「SSH公開キーの追加」を参照してください。

  2. SSHでアクセスするインスタンスのパブリックIPアドレスdev3dev4prod1prod2prod3およびprod4を予約します。

    「パブリックIPアドレスの予約」を参照してください。

  3. 「セキュリティ・リストの作成」で説明されているように、次のセキュリティ・リストを作成します。
    セキュリティ・リスト インバウンド・ポリシー アウトバウンド・ポリシー

    dev

    Deny

    Deny

    dev_allow_access

    Deny

    Deny

    prod

    Deny

    Deny

  4. 「ブート可能なストレージ・ボリュームの作成」の説明に従い、インスタンスごとにブート可能なストレージ・ボリュームを作成します。

  5. インスタンスを作成します。 SSH公開キーとパブリックIPアドレスを、SSHでアクセスする各インスタンスdev3dev4prod1prod2prod3およびprod4に関連付けることを忘れないでください。 「インスタンスの作成」を参照してください。

  6. 次のように、必要なセキュリティ・リストにインスタンスを追加します。
    • dev1およびdev2を、セキュリティ・リストdevに追加します。

    • dev3およびdev4を、セキュリティ・リストdevおよびdev_allow_accessに追加します。

    • prod1、prod2、prod3およびprod4を、セキュリティ・リストprodに追加します。

    「インスタンスのセキュリティ・リストへの追加」を参照してください。

    セキュリティ・リストdevに開発インスタンスをすべて追加すると、開発環境のすべてのインスタンスは任意のプロトコルで相互通信できます。 デフォルトでは、このセキュリティ・リスト外のホストは、どの開発インスタンスとも通信できず、どの開発インスタンスもこのセキュリティ・リスト外のホストとは通信できません。 これはファイアウォール要件1、4、5、6を満たします。

    セキュリティ・リストprodに本番インスタンスをすべて追加すると、本番環境のすべてのインスタンスは任意のプロトコルで相互通信できます。 これはファイアウォール要件3を満たします。

  7. サブネット203.0.113.1/28 and 203.0.113.32/28で構成されるip_list1という名前のセキュリティIPリストを作成します。 「セキュリティIPリストの作成」 を参照してください。

  8. 「セキュリティ・ルールの作成」で説明されているように、次のセキュリティ・ルールを作成します。

    セキュリティ・ルール パラメータ 説明

    dev-to-prod

    セキュリティ・アプリケーション: ssh

    ソースのセキュリティ・リスト: dev

    宛先のセキュリティ・リスト: prod

    任意の開発インスタンスが、SSHで任意の本番インスタンスと通信できます。

    これはファイアウォール要件2を満たします。

    iplist-to-dev

    セキュリティ・アプリケーション: ssh

    ソースのセキュリティIPリスト: ip_list1

    宛先のセキュリティ・リスト: dev_allow_access

    SSHを使用して、サブネット203.0.113.1/28と203.0.113.32/28内の任意のホストをインスタンスdev3およびdev4に接続できます。

    これはファイアウォール要件7を満たします。

    internet-to-prod

    セキュリティ・アプリケーション: https

    ソースのセキュリティIPリスト: public-internet

    宛先のセキュリティ・リスト: prod

    インターネット上の任意のホストから任意の本番インスタンスにHTTPSリクエストを送信できます。

    これはファイアウォール要件8を満たします。

手順Orchestrations v1を使用

  1. 少なくとも1つのSSHキーペアを生成し、SSH公開キーをCompute Classicにアップロードします。 「SSHキー・ペアの生成」および「SSH公開キーの追加」を参照してください。

  2. SSHでアクセスするインスタンスのパブリックIPアドレスdev3dev4prod1prod2prod3およびprod4 を予約します。 次のサンプル・オーケストレーションを使用して、パブリックIPアドレスを予約できます。 このサンプルでは、2つのパブリックIPアドレスの予約方法を示します。 同様のJSONコンストラクトを使用して、さらに4つのIPアドレスを予約します。

    {
      "name": "/Compute-acme/joe/myIPreservations",
      "oplans": [
        {
          "label": "My IP reservations",
          "obj_type": "ip/reservation",
          "objects": [
            {
              "name": "/Compute-acme/joe/ipres1",
              "parentpool": "/oracle/public/ippool",
              "permanent": true
            },
            {
              "name": "/Compute-acme/joe/ipres2",
              "parentpool": "/oracle/public/ippool",
              "permanent": true
            },
            <Add more IP reservations here.>
          ]
        }
      ]
    }
    
  3. 次のセキュリティ・リストを作成します。
    セキュリティ・リスト インバウンド・ポリシー アウトバウンド・ポリシー

    dev

    Deny

    Deny

    dev_allow_access

    Deny

    Deny

    prod

    Deny

    Deny

    次のサンプル・オーケストレーションを使用して、セキュリティ・リストを作成できます。 このサンプルは、セキュリティ・リストdevの作成方法を示しています。 同様のJSONコンストラクトを使用して、さらに2つのセキュリティ・リストを作成します。

    {
      "name": "/Compute-acme/joe/mySecurityLists",
      "oplans": [
        {
          "label": "seclists",
          "obj_type": "seclist",
          "objects": [
            {
              "name": "/Compute-acme/joe/dev",
              "outbound_cidr_policy": "deny"
            },
            <Add more security lists here.>
          ]
        }
      ]
    }
    
  4. インスタンスごとに、ブート可能なストレージ・ボリュームを作成します。 次のサンプル・オーケストレーションを使用して、ストレージ・ボリュームを作成できます。 このサンプルは、1つのストレージ・ボリュームの作成方法を示しています。 同様のJSONコンストラクトを使用して、必要なストレージ・ボリュームをすべて作成します。

    {
      "name": "/Compute-acme/joe/myStorageVolumes",
      "oplans": [
        {
          "label": "My storage volumes",
          "obj_type": "storage/volume",
          "objects": [
            {
              "name": "/Compute-acme/joe/boot",
              "bootable": true,
              "imagelist": "/oracle/public/OL_7.2_UEKR3_x86_64",
              "properties": ["/oracle/public/storage/default"],
              "size": "22548578304"
            },
            <Add more bootable storage volumes here.>
          ]
        }
      ]
    }
    

    注意:

    ストレージ・ボリュームとインスタンスを同じオーケストレーション内で定義しないでください。 ストレージ・ボリュームとインスタンスを別々のオーケストレーションに保つことによって、必要に応じてインスタンスをシャットダウンして開始できますが、アタッチされたストレージ・ボリュームは保持されます。 ここでは、ストレージ・ボリュームをインスタンスのオーケストレーションの外部で定義することを推奨します。 インスタンスが再作成された後でもストレージ・ボリュームがアタッチされたままになるようにするには、ストレージ・アタッチメントをインスタンスのオーケストレーション内で定義する必要があります。

  5. インスタンスを作成します。 SSH公開キーとパブリックIPアドレスを、SSHでアクセスする各インスタンスdev3dev4prod1prod2prod3およびprod4に関連付けることを忘れないでください。 各インスタンスに追加するセキュリティ・リストを指定することもできます。 次のように、必要なセキュリティ・リストにインスタンスを追加します。

    • dev1およびdev2を、セキュリティ・リストdevに追加します。

    • dev3およびdev4を、セキュリティ・リストdevおよびdev_allow_accessに追加します。

    • prod1、prod2、prod3およびprod4を、セキュリティ・リストprodに追加します。

    セキュリティ・リストdevに開発インスタンスをすべて追加すると、開発環境のすべてのインスタンスは任意のプロトコルで相互通信できます。 デフォルトでは、このセキュリティ・リスト外のホストは、どの開発インスタンスとも通信できず、どの開発インスタンスもこのセキュリティ・リスト外のホストとは通信できません。 これはファイアウォール要件1、4、5、6を満たします。

    セキュリティ・リストprodに本番インスタンスをすべて追加すると、本番環境のすべてのインスタンスは任意のプロトコルで相互通信できます。 これはファイアウォール要件3を満たします。

    次のサンプル・オーケストレーションを使用して、インスタンスを作成できます。 このサンプルは、dev3インスタンスの作成方法と、SSH公開キーおよびパブリックIPアドレスをインスタンスに関連付ける方法を示しています。 このサンプル・オーケストレーションは、必要なセキュリティ・リストdevおよびdev_allow_accessへのこのインスタンスの追加方法も示しています。 同様のJSONコンストラクトを使用して、必要な各インスタンスを定義します。

    {
      "name": "/Compute-acme/joe/myInstances",
      "oplans": [
        {
          "label": "My instances",
          "obj_type": "launchplan",
          "objects": [
            {
              "instances": [
                {
                  "name": "/Compute-acme/joe/dev3",
                  "shape": "oc3",
                  "boot_order": [1],
                  "label": "dev3",
                  "networking": {
                    "eth0": {
                      "seclists": ["/Compute-acme/joe/dev", "/Compute-acme/joe/dev_allow_access"],
                      "nat": "ipreservation:/Compute-acme/joe/ipres1"
                    }
                  },
                  "sshkeys": ["/Compute-acme/joe/key1"],
                  "storage_attachments": [
                    {
                      "index": 1,
                      "volume": "/Compute-acme/joe/boot"
                    }
                  ]
                },
                <Add more instances here.>
              ]
            }
          ]
        }
      ]
    }
  6. サブネット203.0.113.1/28 and 203.0.113.32/28で構成されるip_list1という名前のセキュリティIPリストを作成します。 次のサンプル・オーケストレーションを使用して、セキュリティIPリストを作成できます。

    {
      "name": "/Compute-acme/joe/mySecipLists",
      "oplans": [
        {
          "label": "secip-list",
          "obj_type": "seciplist",
          "objects": [
            {
              "name": "/Compute-acme/joe/ip_list1",
              "secipentries": ["203.0.113.1/28", "203.0.113.32/28"]
            }
          ]
        }
      ]
    }
    
  7. 次のセキュリティ・ルールを作成します。

    セキュリティ・ルール パラメータ 説明

    dev-to-prod

    セキュリティ・アプリケーション: ssh

    ソースのセキュリティ・リスト: dev

    宛先のセキュリティ・リスト: prod

    任意の開発インスタンスが、SSHで任意の本番インスタンスと通信できます。

    これはファイアウォール要件2を満たします。

    iplist-to-dev

    セキュリティ・アプリケーション: ssh

    ソースのセキュリティIPリスト: ip_list1

    宛先のセキュリティ・リスト: dev_allow_access

    SSHを使用して、サブネット203.0.113.1/28と203.0.113.32/28内の任意のホストをインスタンスdev3およびdev4に接続できます。

    これはファイアウォール要件7を満たします。

    internet-to-prod

    セキュリティ・アプリケーション: https

    ソースのセキュリティIPリスト: public-internet

    宛先のセキュリティ・リスト: prod

    インターネット上の任意のホストから任意の本番インスタンスにHTTPSリクエストを送信できます。

    これはファイアウォール要件8を満たします。

    次のサンプル・オーケストレーションを使用して、セキュリティ・ルールを作成できます。 このサンプルは、セキュリティ・ルールiplist-to-devの作成方法を示しています。 同様のJSONコンストラクトを使用して、さらに2つのセキュリティ・ルールを作成します。
    {
      "name": "/Compute-acme/joe/mySecRules",
      "oplans": [
        {
          "label": "My security rules",
          "obj_type": "secrule",
          "objects": [
            {
              "name": "/Compute-acme/joe/iplist-to-dev",
              "application": "/oracle/public/ssh",
              "src_list": "seciplist:/Compute-acme/joe/ip_list1",
              "dst_list": "seclist:/Compute-acme/joe/dev_allow_access",
              "action": "PERMIT"
            },
            <Add more security rules here.>
          ]
        }
      ]
    }
    

必要なオーケストレーションをすべて作成したら、オーケストレーションをアップロードして開始し、必要なオブジェクトとインスタンスを作成します。 「Orchestration v1のアップロード」「Orchestration v1の起動」を参照してください。

同じオーケストレーションの別のオブジェクトで参照するオブジェクトの関係を定義する必要があることに注意してください。 たとえば、同じオーケストレーションでIP予約またはセキュリティ・リストおよびインスタンスを作成する場合、必要なIP予約とセキュリティ・リストを作成してから、それらを使用するインスタンスを作成するように関係を定義する必要があります。 同様に、同じオーケストレーションでセキュリティ・リストまたはセキュリティIPリストおよびセキュリティ・ルールを作成する場合、セキュリティ・リストセキュリティIPリストを作成してから、それらを使用するセキュリティ・ルールを作成するように関係を定義します。 「オブジェクト・プラン間の関係」を参照してください。

必要なファイアウォール・ルールが実装されたネットワーク・トポロジ

次の図は、前述のシナリオで必要なネットワーク通信を有効にするために、セキュリティ・ルール、セキュリティ・リストおよびセキュリティIPリストが設定されたトポロジを示しています。


このサンプル・シナリオで説明する通信ルートを有効にするために設定されたセキュリティ・リストとセキュリティ・ルールを示す最終トポロジ