このセクションでは、「セキュリティ・リスト」と「セキュリティ・ルール」を使用して、いくつかのCompute Classic Linuxインスタンスが共有ネットワークにアタッチされているサンプル・トポロジにファイアウォールとオープン・ポートを作成する方法を説明します。
シナリオ
このシナリオでは、8つのCompute Classic Linuxインスタンスを含むトポロジを作成: 4つは開発用(dev1〜dev4)、4つはプロダクション用(prod1〜prod4)です。
次のファイアウォール要件があると想定します。
次の図は、本番インスタンスと開発インスタンス間の必要な通信ルートと、公共のインターネットによる外部ホストからの必要な通信ルートを示しています。

Webコンソールを使用してこれらのファイアウォール・ルールを実装するには、「Webコンソールを使用した手順」を参照してください。
これらのファイアウォール・ルールをオーケストレーションを使用して実装するには、「手順Orchestrations v1を使用」を参照してください。
ファイアウォール・ルールが実装されたトポロジを示す図については、「必要なファイアウォール・ルールが実装されたネットワーク・トポロジ」を参照してください。
このシナリオに必要なインスタンスを作成して必要なセキュリティ・ルールを設定するには、次のタスクを実行します。
-
少なくとも1つのSSHキーペアを生成し、SSH公開キーをCompute Classicにアップロードします。 「SSHキー・ペアの生成」および「SSH公開キーの追加」を参照してください。
-
SSHでアクセスするインスタンスのパブリックIPアドレスdev3、dev4、prod1、prod2、prod3およびprod4を予約します。
「パブリックIPアドレスの予約」を参照してください。
- 「セキュリティ・リストの作成」で説明されているように、次のセキュリティ・リストを作成します。
-
「ブート可能なストレージ・ボリュームの作成」の説明に従い、インスタンスごとにブート可能なストレージ・ボリュームを作成します。
-
インスタンスを作成します。 SSH公開キーとパブリックIPアドレスを、SSHでアクセスする各インスタンスdev3、dev4、prod1、prod2、prod3およびprod4に関連付けることを忘れないでください。 「インスタンスの作成」を参照してください。
-
次のように、必要なセキュリティ・リストにインスタンスを追加します。
-
dev1およびdev2を、セキュリティ・リストdevに追加します。
-
dev3およびdev4を、セキュリティ・リストdevおよびdev_allow_accessに追加します。
-
prod1、prod2、prod3およびprod4を、セキュリティ・リストprodに追加します。
「インスタンスのセキュリティ・リストへの追加」を参照してください。
セキュリティ・リストdevに開発インスタンスをすべて追加すると、開発環境のすべてのインスタンスは任意のプロトコルで相互通信できます。 デフォルトでは、このセキュリティ・リスト外のホストは、どの開発インスタンスとも通信できず、どの開発インスタンスもこのセキュリティ・リスト外のホストとは通信できません。 これはファイアウォール要件1、4、5、6を満たします。
セキュリティ・リストprodに本番インスタンスをすべて追加すると、本番環境のすべてのインスタンスは任意のプロトコルで相互通信できます。 これはファイアウォール要件3を満たします。
-
サブネット203.0.113.1/28 and 203.0.113.32/28で構成されるip_list1という名前のセキュリティIPリストを作成します。 「セキュリティIPリストの作成」 を参照してください。
-
「セキュリティ・ルールの作成」で説明されているように、次のセキュリティ・ルールを作成します。
-
少なくとも1つのSSHキーペアを生成し、SSH公開キーをCompute Classicにアップロードします。 「SSHキー・ペアの生成」および「SSH公開キーの追加」を参照してください。
-
SSHでアクセスするインスタンスのパブリックIPアドレスdev3、dev4、prod1、prod2、prod3および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.>
]
}
]
}
- 次のセキュリティ・リストを作成します。
次のサンプル・オーケストレーションを使用して、セキュリティ・リストを作成できます。 このサンプルは、セキュリティ・リスト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.>
]
}
]
}
-
インスタンスごとに、ブート可能なストレージ・ボリュームを作成します。 次のサンプル・オーケストレーションを使用して、ストレージ・ボリュームを作成できます。 このサンプルは、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.>
]
}
]
}
注意:
ストレージ・ボリュームとインスタンスを同じオーケストレーション内で定義しないでください。 ストレージ・ボリュームとインスタンスを別々のオーケストレーションに保つことによって、必要に応じてインスタンスをシャットダウンして開始できますが、アタッチされたストレージ・ボリュームは保持されます。 ここでは、ストレージ・ボリュームをインスタンスのオーケストレーションの外部で定義することを推奨します。 インスタンスが再作成された後でもストレージ・ボリュームがアタッチされたままになるようにするには、ストレージ・アタッチメントをインスタンスのオーケストレーション内で定義する必要があります。
-
インスタンスを作成します。 SSH公開キーとパブリックIPアドレスを、SSHでアクセスする各インスタンスdev3、dev4、prod1、prod2、prod3および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.>
]
}
]
}
]
}
-
サブネット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"]
}
]
}
]
}
-
次のセキュリティ・ルールを作成します。
次のサンプル・オーケストレーションを使用して、セキュリティ・ルールを作成できます。 このサンプルは、セキュリティ・ルール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リストを作成してから、それらを使用するセキュリティ・ルールを作成するように関係を定義します。 「オブジェクト・プラン間の関係」を参照してください。