🍤
【OCI】PrivateのDBにPublicのサーバからsqlplusでアクセスしてみる
はじめに
OCIのこのチュートリアルやってプライベートセグにDBを置いたら(普通そうすると思う)どうアクセスするのかなと思って試してみました。
用意するもの
- VCN…チュートリアルで作ったやつ、Private SubnetとPublic Subnetを一個ずつ持ちます。
- DBCS…最低スペックで作りました。ほぼチュートリアルの通りですが、配置先をPrivateの方にしています。RACじゃないのでSCANいないです。
- バージョン…21c
- DB名…orcl
- PDB名…pdb_orcl
- LOCAL LISTENER PORT…1521
- 作成予定のユーザ…TESTUSER/WelCome123##
- APサーバ…DBに繋ぐためのサーバ。Public Subnetに置いてある。
- OS…OEL7
- シェイプ…VM.Standard.E2.1.Micro
手順
以下はDBとAPサーバ作ったあとやった事です。
1. APサーバのセットアップ
セットアップといってもsqlplus使えるようにするだけです。
wget https://download.oracle.com/otn_software/linux/instantclient/214000/oracle-instantclient-sqlplus-21.4.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/214000/oracle-instantclient-basic-21.4.0.0.0-1.x86_64.rpm
sudo yum install oracle-instantclient-basic-21.4.0.0.0-1.x86_64.rpm oracle-instantclient-sqlplus-21.4.0.0.0-1.x86_64.rpm
sqlplus64 -V
またついでにDBサーバの1521/tcpには疎通できないことも確認しておきます。
sudo traceroute -T <DBサーバのIP> -p 1521
2. Private SubnetにSecurity ListにIngress Rule作る
以下の感じで作りました。(ソースCIDR隠さなくて良かったですね、Public SubnetのIPv4 CIDRブロックです)
これでAPサーバからDBサーバの1521/tcpが通るようになったので確認しておきます。
sudo traceroute -T <DBサーバのIP> -p 1521
3. DBのセットアップ
やることは
- (接続のために)ssh-add使ってエージェント転送していく
- (DBサーバに入れたら)ユーザ作成
です。
まずはDBサーバに入るところから
## まずは手元のマシンで以下の感じでssh-addする
### ないこと確認
ssh-add -l
### 追加
ssh-add -k <path_to_private_key>
### あること確認
ssh-add -l
## APサーバに繋いでみる
ssh -A -l opc <APサーバのIP>
## DBサーバに繋いでみる
ssh -A <DBサーバのIP>
これで入れたので、ユーザを作っていきます
## PDBに作成します
### DBあるか確認(dbとpdbが上がってればOK)
sudo su - grid
crsctl stat res -t -w "NAME coi orcl"
exit
### DBに接続してユーザ作成
sudo su - oracle
ORACLE_PDB_SID=pdb_orcl sqlplus / as sysdba
create user TESTUSER identified by "WelCome123##";
grant CREATE SESSION, CONNECT,RESOURCE,UNLIMITED TABLESPACE to TESTUSER ;
select username from dba_users where username = 'TESTUSER';
exit
ユーザできたので、DBサーバから入っときます
## Service名確認
### 下記の結果の中のpdb_orclで始まるのがそれ
lsnrctl status
### 接続
sqlplus TESTUSER/"WelCome123##"@<DBサーバのホスト名>:1521/<Service名>
4. APサーバからのアクセス
なんて事はないですね、DBサーバと同じようにアクセスすればOKです。
## APサーバにて接続
sqlplus64 TESTUSER/"WelCome123##"@<DBサーバのホスト名>:1521/<Service名>
## 確認
sho con_name
sho user
まとめ
以上簡単にPrivate SubnetにいるDBサーバにアクセスする方法でした。
下記ができれば問題なさそうです。
- Security ListにIngressルール追加
- DBに接続…DBサーバに入るのは、Oracle Bastionとやらを使ったほうが良さそうですね
初Cloud & 初Single構成のOracleなのでセキュリティ的にガバガバだったり、手順的に変だったらコメントくださいmm
気が向いたら$300の枠でSaaSで提供されてるGGとかDGとか使ってみて、手組みとの差を体験してみたいです。
Discussion