OCI テナンシ間プライベート接続 (Part 1 - LPG編)

OCI Core Services

初めに

ISV(SaaS提供者)とエンドユーザーのOCI環境は、コンパートメント単位ではなくテナンシ単位で分けられるケースが多くあります。そのような場合、ISV側の管理者がインターネットを経由せずに、エンドユーザーのインスタンスに対し、プライベート接続によるアクセスを実現したい、という要望はよく聞かれる要件です。

実現方法はいくつかあり、今回から全4回にわたって、さまざまな接続方式と差異比較をご紹介していきます:

構成図
Cross tenancy connection (via LPG)

検証環境
Computeインスタンス (Linux 8 VM)

※、VMを例にして紹介しますが、この方法は、プライベート・サブネット内のOracle Base DB或いはADBへの接続にも適用します。

制限事項

  • 接続元と接続先のVCNのCIDRブログは、重複しないこと。
  • LPGを利用する場合、接続元と接続先のVCNは、同一のリージョン内にあること。
  • 一つのVCNに対し、最大10個のLPGが作れるというサービス制限がある(ソフトリミット)。

1. 事前準備

1-1. IAMリソースの作成

テナンシリソース・タイプ名前コメント
ISVコンパートメントCompt-ISV接続元(Requestor)
ISVユーザーISV-AdminSV様の管理者
ISVグループISV-Admin-GrpISV様の管理者を入れる
User-AコンパートメントCompt-User-A接続先(Acceptor)

1-2. ポリシーの作成

テナンシポリシー名コメント
ISVPolicy-LPG-ISVrootコンパートメントの下に作成
User-APolicy-LPG-User-Arootコンパートメントの下に作成

ステートメントの詳細
ポリシー名:Policy-LPG-ISV
設定箇所:接続元(Requestor)のテナンシ (ISV様より作成)
ステートメント:

Define tenancy User-A as <OCID_of_Tenancy_User-A>
Allow group ISV-Admin-Grp to manage local-peering-from in compartment Compt-ISV
Endorse group ISV-Admin-Grp to manage local-peering-to in tenancy User-A
Endorse group ISV-Admin-Grp to associate local-peering-gateways in compartment Compt-ISV with local-peering-gateways in tenancy User-A


ポリシー名:Policy-LPG-User-A
設定箇所:接続元(Acceptor)のテナンシ (エンドユーザ様より作成)
ステートメント:

Define tenancy ISV as <OCID_of_Tenancy_ISV>
Define group ISV-Admin-Grp as <OCID_of_ISV-Admin-Grp>
Admit group ISV-Admin-Grp of tenancy ISV to manage local-peering-to in compartment Compt-User-A
Admit group ISV-Admin-Grp of tenancy ISV to associate local-peering-gateways in tenancy ISV with local-peering-gateways in compartment Compt-User-A

1-3. VCNとサブネットの作成

テナンシリージョンリソース・タイプ名前コメント
ISVTokyoVCNVCN-ISV10.0.0.0/16
Private SubnetPrivate Subnet ISV10.0.0.0/24
User-ATokyo
(同リージョン)
VCNVCN-User-A192.168.0.0/16
Private SubnetPrivate Subnet User-A192.168.0.0/24

2. テナンシ間、リージョン内のプライベート接続

2-1. LPGの作成

ISV側とエンドユーザ側の両方のVCNに、LPGを作成します。

ISV側
ネットワーキング → 仮想クラウド・ネットワーク → 仮想クラウド・ネットワークの詳細 → ローカル・ピアリング・ゲートウェイ
Create LPG

LPGの名前 (LPG-ISV)を入力して作成します。
Enter LPG name and create

エンドユーザ側
画面の入口は、上記と同様です。LPGの名前(LPG-User-A)を入力して作成します。作成後、OCIDをコピーします。
Copy LPG OCID

2-2. LPG間ピアリング接続の確立

ISV側で実施します。作成したLPG-ISVを指定し、メニューから「ピアリング接続の確立」」をクリックします。
Establish peering connection

コピーしたLPG-User-AのOCIDを入力し、接続を立てます。
Enter LPG OCID

接続を立てると、以下の状態となります。(Cross-Tenancy:Yes)
LPG connection is available
※、上記「Route Table」の情報欄は空白のままでよいです。

2-3. ルート表とセキュリティ・リスト(or NSG)の設定

テナンシタイプ項目コメント
ISVルート表ルールターゲット: LPG-ISV
宛先: 192.168.0.0/24
ISV側のサブネットに紐づけ
SL or NSGIngressソース側のIP, TCP 22ISV側のサブネット或いはVMに紐づけ
Egress0.0.0.0/0、或いは
192.168.0.0/24 TCP 22
ルート表ルールターゲット: LPG-User-A
宛先: 10.0.0.0/24
エンドユーザ側のサブネットに紐づけ
SL or NSGIngress10.0.0.0/24 TCP 22エンドユーザ側のサブネット或いはVMに紐づけ

2-4. 相手のVMにSSH接続してみる

コマンド: ssh <VM_Private_IP> (事前に秘密キーを用意しておく)

[opc@linux-isv ~]$ pwd
/home/opc
[opc@linux-isv ~]$ ll .ssh/id_rsa
-r--------. 1 opc opc 1819 May 18 07:25 .ssh/id_rsa
[opc@linux-isv ~]$ ssh 192.168.0.74
The authenticity of host '192.168.0.74 (192.168.0.74)' can't be established.
ECDSA key fingerprint is SHA256:<中略>.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.74' (ECDSA) to the list of known hosts.
Activate the web console with: systemctl enable --now cockpit.socket

[opc@linux-user-a ~]$

サマリー
ここまで、LPG間のピアリングで、異なるテナンシのVMに接続できました。接続方法は簡単ですが、エンドユーザの数が増えてくると、LPGのサービス制限(10個)はボトルネックになります。この課題を解決するため、次回は、引き続き別の方法を紹介したいと思います。

以上

オフィシャル・リンク
ローカル・ピアリング・ゲートウェイを使用したローカルVCNピアリング
Inter-TENANCY VCN peering using LPGs (英語)
Configure cross-region private connectivity between tenancies (英語)

タイトルとURLをコピーしました