初めに
ISV(SaaS提供者)とエンドユーザーのOCI環境は、コンパートメント単位ではなくテナンシ単位で分けられるケースが多くあります。そのような場合、ISV側の管理者がインターネットを経由せずに、エンドユーザーのインスタンスに対し、プライベート接続によるアクセスを実現したい、という要望はよく聞かれる要件です。
実現方法はいくつかあり、今回から全4回にわたって、さまざまな接続方式と差異比較をご紹介していきます:
- Part 1: LPG(ローカル・ピアリング・ゲートウェイ)の利用
- Part 2 (本文): DRG(動的ルーティング・ゲートウェイ)アタッチメントの利用
- Part 3: DRG RPC(リモート・ピアリング接続)でリージョン間の接続
- OCI テナンシ間プライベート接続 (Part 4 - 差異比較編)
構成図
検証環境
Computeインスタンス (Linux 8 VM)
制限事項
- 接続元と接続先のVCNのCIDRブログは、重複しないこと。
- DRGアタッチメントを利用する場合、接続元と接続先のVCNは、同一のリージョン内にあること。
- リージョンごと、最大5個のDRGが作れるというサービス制限がある(ソフトリミット)。
- 1個のDRGを複数のVCNにアタッチするのに、レガシーDRGではなく、DRGv2(アップグレードされたDRG)は必要である。
※、テナンシ間、リージョン間で接続したい場合、DRGリモート・ピアリングの方法で実現できます。
1. 事前準備
1-1. IAMリソースの作成
| テナンシ | リソース・タイプ | 名前 | コメント |
|---|---|---|---|
| ISV | コンパートメント | Compt-ISV | 接続元(Requestor) |
| ISV | ユーザー | ISV-Admin | ISV様の管理者 |
| ISV | グループ | ISV-Admin-Grp | ISV様の管理者を入れる |
| User-A | コンパートメント | Compt-User-A | 接続先(Acceptor) |
| User-A | ユーザー | User-A-Admin | エンドユーザ様の管理者 |
| User-A | グループ | User-A-Admin-Grp | エンドユーザ様の管理者を入れる |
1-2. ポリシーの作成
| テナンシ | ポリシー名 | コメント |
|---|---|---|
| ISV | Policy-DRG-ISV | rootコンパートメントの下に作成 |
| User-A | Policy-DRG-User-A | rootコンパートメントの下に作成 |
ポリシーの詳細
ポリシー名:Policy-DRG-ISV
設定箇所:接続元(Requestor)のテナンシ (ISV様より作成)
ステートメント:
Define tenancy User-A as <OCID_of_Tenancy_User-A>
Define group User-A-Admin-Grp as <OCID_of_User-A-Admin-Grp>
Endorse group ISV-Admin-Grp to manage drg-attachment in tenancy User-A
Admit group User-A-Admin-Grp of tenancy User-A to manage drg in tenancyポリシー名:Policy-DRG-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 drg-attachment in tenancy
Endorse group User-A-Admin-Grp to manage drg in tenancy ISV1-3. ネットワーキング・リソースの作成
| テナンシ | リージョン | リソース・タイプ | 名前 | コメント |
|---|---|---|---|---|
| ISV | Tokyo | VCN | VCN-ISV | 10.0.0.0/16 |
| Private Subnet | Private Subnet ISV | 10.0.0.0/24 | ||
| User-A | Tokyo (同リージョン) | VCN | VCN-User-A | 192.168.0.0/16 |
| Private Subnet | Private Subnet User-A | 192.168.0.0/24 |
2. テナンシ間、リージョン内のプライベート接続
2-1. DRGの作成 (ISV側のみ)
ISV様のテナンシに、1個のDRGを作成します。エンドユーザ側には作成不要です。
作成後、DRGのOCIDをコピーします。
2-2. DRGアタッチメントの作成
ISV様とエンドユーザ様のVCNに、それぞれのDRGアタッチメントを作成します。
ISV側
ネットワーキング → 仮想クラウド・ネットワーク → 仮想クラウド・ネットワークの詳細 → 「DRGアタッチメントの作成」をクリック
デフォルトの「現在のテナンシ」を指定します。一覧から作成したDRG-ISVを選択し、アタッチメントを作成します。
作成後の状態:Cross-Tenancyは Noになります。
エンドユーザ側
次のようにDRGアタッチメントを作成します(画面の入口は上記と同じ)。
「別のテナンシ」を指定します。コピーしたDRG-ISVのOCIDを入力し、アタッチメントを作成します。
作成後の状態:Cross-Tenancyは Yesになります。
2-3. ルート表とセキュリティ・リスト(or NSG)の設定
| テナンシ | タイプ | 項目 | 値 | コメント |
|---|---|---|---|---|
| ISV | ルート表 | ルール | ターゲット: DRG-ISV 宛先: 192.168.0.0/24 | ISV側のサブネットに紐づけ |
| SL/NSG | Ingress | ソース側のIP, TCP 22 | ISV側のサブネット或いはVMに紐づけ | |
| Egress | 0.0.0.0/0、或いは192.168.0.0/24 TCP 22 | |||
| ルート表 | ルール | ターゲット: DRG-ISV 宛先: 10.0.0.0/24 | エンドユーザ側のサブネットに紐づけ | |
| SL/NSG | Ingress | 10.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
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Thu May 18 12:54:13 2023 from 10.0.0.230
[opc@linux-user-a ~]$サマリー
ここまで、DRGアタッチメントで、異なるテナンシのVMに接続できましたが、同一リージョン内の接続という制限事項があります。この問題を解決するため、次回は、DRGリモート・ピアリングの方法を紹介したいと思います。
以上
オフィシャル・リンク
DRGピアリングに関連するIAMポリシー
Cross-Tenancy VCN peering using DRG Attachment (英語)
Configure cross-region private connectivity between tenancies (英語)