Autonomous Database で Private IP Address(Private Endpoints)がリリースされたので、早速接続してみる。
- 1. Private Endopoints のマニュアル記述
- 2. 検証構成
- 3. VCN, Subnet, Route Table, Security List, NSG(Network Security Group) の作成
- 4. Private Subnet に Autonomous Database を作成
- 5. Walletの配置&解凍 と nslookup、Autonomous Database(Private IP)への接続
- 6. (※追記)ステートフルのNSGセキュリティルールで接続
- 7. まとめ
- 補足. ホスト名の名前解決について
Autonomous Database で Private IP Address(Private Endpoints)がリリースされました。その名の通り Autonomous Database に Private IP Address で接続できます。早速お試ししてみますやで。
彡(゚)(゚)
1. Private Endopoints のマニュアル記述
Autonomous Database の Private Endpoints のマニュアル記述は下記の通り彡(゚)(゚)
Configure Private Endpoints with Autonomous Database
https://docs.oracle.com/en/cloud/paas/atp-cloud/atpug/access-configure-samples.html#GUID-FD03A24D-3EF5-4F62-9B5F-11EA1E1FBDA0
:
To allow incoming and outgoing traffic to the Autonomous Database instance,
you need to define security rules in an NSG that create a virtual firewall for your Autonomous Database.
Private endpoint security rules are stateless, so you create both ingress and egress rules for the Autonomous Database instance.
:
NSG(Network Security Group) の使用が必須です。マニュアルにはサンプルとして stateless rule による接続設定が記載されているので、その条件を満たすように Network を構成してみるやで彡(゚)(゚)
2. 検証構成
下記の構成で検証しました。踏み台経由で Private Compute に接続して、そこから Autonomous Database の Private Endpoint に接続しますやで。
彡(゚)(゚)
3. VCN, Subnet, Route Table, Security List, NSG(Network Security Group) の作成
下記のような記事を参照して、VCN, Subnet, Route Table, Security List, NSG(Network Security Group) を作成します。
初回VCN作成をサクッとできるOracle Cloud Infrastructure Virtual Networking Quickstart & 仮想ファイアウォール設定の理解
https://qiita.com/yamada-hakase/items/7967a7671db50b6c4d6c
ポイントになる Autonomous Database を配置する Subnet, Security List, NSG(Network Security Group) のスクショを貼っておきます。
Subnet は 1.の構成図通り 10.0.2.0/24 の CIDR を指定して作成します。
上記Subnet にアタッチする Security List には、セキュリティルールを何も記述しません。OCIの場合は Security List と NSG のどちらかにセキュリティルールを書けば、そのルールは有効になるからです。OR条件です。
NSG(Network Security Group) のセキュリティルールは下記の通りです。ステートレスにチェックを入れているため、Ingressルール と それに対応するEgressルール を併記します。
Ingress ... Src(10.0.1.x:Any Port) ==> Dst(10.0.2.x:1522), Stateless Rule Egress ... Dst(10.0.1.x:Any Port) <== Src(10.0.2.x:1522), Stateless Rule
4. Private Subnet に Autonomous Database を作成
Private Subnet に Autonomous Database を作成します。下記は作成する VCN, Subnet, NSG を選択するスクショです。
上記以外は別段に特別な事はありません。出来るのを待つ。彡(゚)(゚)
5. Walletの配置&解凍 と nslookup、Autonomous Database(Private IP)への接続
Autonomous Database接続用のWalletをダウンロードして、Private Compute に配置&解凍します。今回は /home/opc/work/tns に配置&解凍してます。
$ pwd /home/opc/work/tns $ cat sqlnet.ora WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/work/tns"))) SSL_SERVER_DN_MATCH=yes $ cat tnsnames.ora aysprv1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_aysprv1_high.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))) aysprv1_low = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_aysprv1_low.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))) aysprv1_medium = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_aysprv1_medium.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))) aysprv1_tp = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_aysprv1_tp.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))) aysprv1_tpurgent = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxxxxxxxxxxx_aysprv1_tpurgent.atp.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com,OU=Oracle ADB TOKYO,O=Oracle Corporation,L=Redwood City,ST=California,C=US"))) $
ホスト名を nslookup で名前解決してみると……彡(゚)(゚)
$ nslookup xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com Server: xxx.xxx.xxx.254 Address: xxx.xxx.xxx.254#53 Non-authoritative answer: Name: xxxxxxxx.adb.ap-tokyo-1.oraclecloud.com Address: 10.0.2.4 $
ちゃんと Private IP Address に解決してるやね。さて準備はできたので、接続してみると……
$ sqlplus /nolog SQL*Plus: Release 18.0.0.0.0 - Production on Mon Mar 2 16:47:59 2020 Version 18.5.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. SQL> CONNECT ADMIN/xxxxxxxxxxxx@aysprv1_tp Connected. SQL>
ちゃんと接続できたやで!彡(^)(^)
6. (※追記)ステートフルのNSGセキュリティルールで接続
ステートフルのNSGセキュリティルール(Ingressのみ)でも接続できました。マニュアルに載ってるのはあくまでサンプルとしてで、NSG の ステートレス/ステートフル はどちらでも良いもよう。
彡(゚)(゚)
Ingress ... Src(10.0.1.x:Any Port) ==> Dst(10.0.2.x:1522), Stateful Rule Egress ... Auto by Stateful Rule
$ sqlplus /nolog SQL*Plus: Release 18.0.0.0.0 - Production on Tue Mar 3 03:44:23 2020 Version 18.5.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. SQL> CONNECT ADMIN/xxxxxxxxxxxx@aysprv1_tp Connected. SQL>
7. まとめ
Autonomous Database の Private IP Address(Private Endpoints) に接続できたやで! NSG(Network Security Group)を使うのと、その NSG に 1522 の Ingressルール(とstatelessの場合は対応するEgressルール)を記載するのがポイントでしょうか。
外部(Internet)から隔離されたネットワークに Autonomous Database を配置できます。これでますます Autonomous Database の 使い途 が拡がりました。皆さん、どんどん活用して下さいね。
彡(^)(^)
補足. ホスト名の名前解決について
OCI VCN外(OnP や 他社クラウド)における ウォレットの tnsnames.ora に記載されたホスト名の名前解決については、下記マニュアルの記載のとおり hosts に記述するか Hybrid DNS構成 を組んで下さい。VCN内で Default DNS を使用している場合は、そちらで名前解決できます。
https://docs.cloud.oracle.com/en-us/iaas/Content/Database/Concepts/adbsprivateaccess.htm#ConnectingtoanAutonomousDatabasewithaPrivateEndpoint
:
To resolve the Autonomous Database private endpoint in your on-premise host's /etc/hosts file
:Hybrid DNS Configuration
https://github.com/terraform-providers/terraform-provider-oci/blob/255817f83956f1f9a3ab903e11465e8b4dde1957/docs/examples/networking/hybrid_dns/Hybrid-DNS-configuration-using-DNS-VM-in-VCN.md