ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

検証によく使う Oracle Cloud Infrastructure(OCI) の 環境構成(VCN, Seculity List, 各種Gateway, Route Table, Subnet, Compute)まとめ

ワイが検証によく使う Oracle Cloud Infrastructure(OCI) の環境構成を整理してみますやで。
彡(゚)(゚)

1. 構成図

構成図です。まずはお絵かきから、お絵かき重要彡(゚)(゚)
01_NetworkingDesign.jpg

VCN Wizard で出てくる下記図を精緻化したものですやね。
b_VCN_Wizard.jpg

2. コンパートメント

リソース作成の初手はコンパートメントから。名前は何でもエエです。原則としてrootコンパートメントに各種リソースは作らないこと。
c_compartment.jpg

3. VCN

VCN は CIDR(IPアドレス範囲) を決めるだけ。10.0.0.0/16 で広めに作成。名前は何でもヨシ!
d_VCN.jpg

4. Security List

Security List は OCI VCN の 仮想ファイアウォール に相当するものです。Public用とPrivate用をそれぞれ作成

4-1. Public Subnet用 の Security List

基本は Ingress で絞る前提で Egress は全開、Ingressssh(22) だけを開けます。
e1_pub_seclst.jpg e2_pub_ingress.jpg e3_pub_egress.jpg

4-2. Private Subnet用 の Security List

Public用とほぼ同じですが、Ingressssh(22) は Source CIDR を Public Subnet の CIDR(10.0.0.0/24) に限定します。
f1_prv_seclst.jpg f2_prv_ingress.jpg f3_prv_egress.jpg

4-3. NSG(Network Security Group)について

Security List の 代わりに NSG(Network Security Group) でも OK です。NSG はリソース単位に適用可能なので、Subnet単位の Security List よりも細かく制御できます。
注意点は、OCI の場合は Security List と NSG のルールは OR条件、どちらかに記述しておけば有効 になるということ。

NSG を使う場合は、Seculity List のルールは全部削除しておきましょう。

5. 各種Gateway

5-1. Internet Gateway

外部(Internet)からの接続用に Internet Gateway を作成。これが無くちゃ始まらない。
g1_IGW.jpg

5-2. NAT Gateway

Private Compute から 外部(Internet) の接続用に NAT Gateway を作成。yum/wget/curl/Windows Update等の使用を想定。
g2_NATGW.jpg

5-3. Service Gateway

Private Compute から Object Storage や Autonomous Database、REST API(OCI CLI)等への接続用に Service Gateway を作成。
g3_SGW.jpg

6. Route Table

今回の構成の場合は Route Table は 各種Gateway と Subnet をリンクさせる役割を持ちます。やはり Public用とPrivate用をそれぞれ作成

6-1. Public Subnet用 の Route Table

Internet Gateway を Subnet にアタッチして、外(Internet)から接続できるようにします。
h1_pub_rttbl.jpg h2_pub_rtrule.jpg

6-2. Private Subnet用 の Route Table

NAT Gateway と Service Gateway を Subnet にアタッチして、外(Internet) や Oracle Service(Object Storage等)にアクセスできるようにします。
h3_prv_rttbl.jpg h4_prv_rtrule.jpg

7. Subnet

原則として AD(Availability Domain)跨り の Regional Subnet を採用します。
AD(Availability Domain)毎 に Subnet を作成する必要が無く、とても便利彡(^)(^)

7-1. Public Subnet

CIDR(IPアドレス範囲) は 構成図通りの 10.0.0.0/24、前もって作った Security List と Route Table をアタッチします。
i1_public_subnet.jpg

7-2. Private Subnet

CIDR(IPアドレス範囲) は 構成図通りの 10.0.1.0/24、やはり前もって作った Security List と Route Table をアタッチします。
i2_private_subnet.jpg

8. Compute

前もってSSHのキーペア、公開鍵(*.pub) と pem形式の秘密鍵(*.pem) を2セット(Public用, Private用)作成しておきます。併せて putty形式の秘密鍵(*.ppk) も作成しておきます。

OS Image は Oracle Linux の最新版、Shape は 1コア(1oCPU) の Intel(VM.Standard.2.1) か AMD(VM.Standard.E2.1) を選択します。AMD の方がちょっとお安い。なおつい最近AMDの新型(VM.Standard.E3)が出ました。
j1_compute1.jpg j2_compute2.jpg j3_compute3.jpg

9. ssh接続

クラックされた場合のリスクを考慮して、踏み台サーバーに鍵は置きません。下記記事のように、クライアント端末(PC)の秘密鍵を動的に転送して、Private Compute にアクセスします。

Pageantを使用した踏み台サーバー経由のssh
https://qiita.com/untitle_23/items/7af5e6b1d29f95c13f36

下記では Pageant + Tera Term を使用して、踏み台(Bastion)経由で Private Compute に ssh接続しています。

k1_pageant.jpg k2_tera1.jpg k3_tera2.jpg k4_tera3.jpg

踏み台(Bastion)経由で Private Compute に接続できたで!彡(^)(^)

10. まとめ

この記事では手でペチペチと環境を構築していますが、もちろん Terraform や OCI Resource Manager(※Terraform互換の Managed な Service) でも環境構築は可能です。そのうち紹介するかも。

この記事やその他記事も参照して、OCI をどんどん活用して下さいね。
彡(^)(^)

11. 追記

Object Storage を作るの忘れてた……。まあ作るのも使うのも簡単なので、下記記事あたりをご参考にしつつ使ってみて下さい。

【総まとめ】Oracle Cloud Infrastructure オブジェクト・ストレージ・サービスの機能概要
https://qiita.com/ksonoda/items/dc12792c99a962f932f9

12. 参考マニュアル/リンク集

コンパートメントの管理
https://docs.oracle.com/cd/E97706_01/Content/Identity/Tasks/managingcompartments.htm
 
VCNとサブネット
https://docs.oracle.com/cd/E97706_01/Content/Network/Tasks/managingVCNs.htm
 
セキュリティ・ルール
https://docs.oracle.com/cd/E97706_01/Content/Network/Concepts/securityrules.htm
 
セキュリティ・リスト
https://docs.oracle.com/cd/E97706_01/Content/Network/Concepts/securitylists.htm
 
ルート表
https://docs.oracle.com/cd/E97706_01/Content/Network/Tasks/managingroutetables.htm
 
Linuxインスタンスでのキー・ペアの管理
https://docs.oracle.com/cd/E97706_01/Content/Compute/Tasks/managingkeypairs.htm
 
インスタンスの作成 - Linuxインスタンスを作成するには
https://docs.oracle.com/cd/E97706_01/Content/Compute/Tasks/launchinginstance.htm
 
Oracle Cloud Infrastructure 活用資料集
https://community.oracle.com/docs/DOC-1035494