LoginSignup
1
3

OCI Cloud Shell からプライベート・サブネット内のインスタンスに接続する

Last updated at Posted at 2023-01-23

初めに
冒頭ですが、この記事の位置付けは、次のシリーズ記事の1つです。
シリーズ1:プライベート・サブネット内の OCI Compute に接続
シリーズ2:プライベート・サブネット内の Oracle DB/ADB に接続

2022年8月、Cloud Shellのプライベート・アクセスという機能がリリースされました。Cloud Shellから、パブリック・ネットワークを経由せずにプライベート・ネットワークのリソースにアクセスできるになりました。

OCI Compute、Oracel Base DB 及び Autonomous DBを例にして、ターゲット・インスタンスへの接続方法を紹介したいと思います。

メリット:
✅ 踏み台サーバを立てるのは不要(コストを節約)
✅ パブリック・ネットワークを経由せずに、プライベート・アクセスで接続できる。
✅ 設定は簡単で、シリアル・コンソールで手軽く接続したい時に便利。(管理者の一時作業)

目次

1. 事前準備

インスタンス 接続ツール TCP ポート 備考
Compute (VM) SSH 22 秘密キーをアップロード
Oracle Base DB (VM) SQL Plus 1521
Autnomous DB SQL Plus 1522 Walletファイルをアップロード

※、SQL Plusは、既にCloud Shellに実装済です。

1-1. IAM ポリシーの設定

管理者権限付きのユーザは、このステップを飛ばしてもよいです。
他ユーザに対し、次のポリシーを指定する必要があります。

allow group <group> to use subnets in compartment <compartment>
allow group <group> to use vnics in compartment <compartment>
allow group <group> to use network-security-groups in compartment <compartment>
allow group <group> to inspect vcns in compartment <compartment>

1-2. 秘密キーのアップロード

Cloud Shellを起動し、Computeインスタンスへの接続用の秘密キーをアップロードします。(以下のどちらでもOK)

  • 歯車アイコン → アップロード (次の画面)
  • キーファイルをCloud Shellに "Drag & Drop"

image.png
アップロード先は、ホームディレクトリとなります。アップロード後、ファイルモードを400に修正し、秘密キーを/home/<username>/.sshの下に移動します。
image.png

1-3. ADB Walletのアップロード

OCIコンソールからADB Wallet (Zipファイル) をダウンロードしてください。ダウンロード方法について、こちらのドキュメントをご参照ください。

注意点
ダウンロードする時、ADBインスタンスと同じのVCNの端末から実施してください(ADB起動中の状態)。そうでない場合、次のメッセージが表示されます。

ダウンロードした後、ローカルのWalletをCloud Shellの画面に"Drag & Drop"だけでOKです。

格納用のディレクトリを作成し、Walletファイルを移動します。
$HOME/network/admin

liu_wei@cloudshell:~ (ap-tokyo-1)$ pwd
/home/liu_wei
liu_wei@cloudshell:~ (ap-tokyo-1)$ mkdir -p network/admin
liu_wei@cloudshell:~ (ap-tokyo-1)$ mv wallet.zip network/admin
liu_wei@cloudshell:~ (ap-tokyo-1)$ 

2. プライベート・ネットワークの設定

ネットワークのタイプは「プライベート」と選択します。(デフォルトは、パブリックとなる)
image.png
プライベート・ネットワークを設定した時、注意事項があります。VCNのピアリングを使用しない限り、ホーム・リージョン内部のみのVCN、サブネット及びNSGは選択可能です。

接続先のVCNがリストされない場合、他リージョン内になる可能性がありますので、必要によりVCN間のピアリングを作ってください。

正しくリストされた場合、接続先のVCNとサブネット内を指定し、接続ボタンをクリックします。(NSGの指定はオプションです)
image.png

3. ターゲット・インスタンスに接続する

3-1. Compute インスタンスに接続

プライベートIPでComputeインスタンスに接続します。
コマンド例:ssh -i <private_key> opc@<private_ip>
image.png

3-2. Oracle Base DB に接続

接続コマンド:sqlplus <User>/<Password>@<Hostname_or_IP>:<Port>/<Service_Name>

systemユーザでPDBに接続する例:
sqlplus system/<password>@10.0.0.164:1521/db19c_pdb1.pirvatesubnet1.vcn1.oraclevcn.com
image.png

Oracle Base DBインスタンスにもSSHログインできます。ログイン方法は、上記のComputeと同じです。事前に秘密キーのアップロードは必要です。

3-3. Autonomous DB に接続

1) 圧縮のWalletファイルを解凍

liu_wei@cloudshell:admin (ap-tokyo-1)$ pwd
/home/liu_wei/network/admin
liu_wei@cloudshell:admin (ap-tokyo-1)$ unzip wallet.zip 
Archive:  wallet.zip
  inflating: ewallet.pem             
  inflating: README                  
  inflating: cwallet.sso             
  inflating: tnsnames.ora            
  inflating: truststore.jks          
  inflating: ojdbc.properties        
  inflating: sqlnet.ora              
  inflating: ewallet.p12             
  inflating: keystore.jks            
liu_wei@cloudshell:admin (ap-tokyo-1)$ ll
total 76
-rw-r--r--. 1 liu_wei oci  6701 Jan 22 12:25 cwallet.sso
-rw-r--r--. 1 liu_wei oci  6656 Jan 22 12:25 ewallet.p12
-rw-r--r--. 1 liu_wei oci  7475 Jan 22 12:25 ewallet.pem
-rw-r--r--. 1 liu_wei oci  3193 Jan 22 12:25 keystore.jks
-rw-r--r--. 1 liu_wei oci   691 Jan 22 12:25 ojdbc.properties
-rw-r--r--. 1 liu_wei oci  2973 Jan 22 12:25 README
-rw-r--r--. 1 liu_wei oci   114 Jan 22 12:25 sqlnet.ora
-rw-r--r--. 1 liu_wei oci   819 Jan 22 12:25 tnsnames.ora
-rw-r--r--. 1 liu_wei oci  3378 Jan 22 12:25 truststore.jks
-rw-r--r--. 1 liu_wei oci 26470 Jan 22 13:09 wallet.zip
liu_wei@cloudshell:admin (ap-tokyo-1)$ 

2) 環境変数"ORACLE_HOME"を設定

liu_wei@cloudshell:admin (ap-tokyo-1)$ export ORACLE_HOME=/home/liu_wei
liu_wei@cloudshell:admin (ap-tokyo-1)$ echo $ORACLE_HOME
/home/liu_wei
liu_wei@cloudshell:admin (ap-tokyo-1)$ 

ORACLE_HOMEを設定せず接続する時、以下のエラーが出ますので、ご注意ください。
ORA-12154: TNS:could not resolve the connect identifier specified

ヒント: $HOME/.bashrcに、export ORACLE_HOME=<path_name>を追加すれば、Cloud Shellに再接続した後、環境変数を再定義しなくてよいです。

3) sqlnet.oraを編集
以下の行を編集し、Walletの保存先を置き換えます。
編集前

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))

編集後

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="$ORACLE_HOME/network/admin")))

4) tnsnames.oraの情報を確認
tnsnames.oraから、接続用のサービス情報を確認します。通常以下のように、3つのサービスが表示されます。
<Database_Name>_high, <Database_Name>_medium, <Database_Name>_low

5) ADBに接続する
コマンド:sqlplus <User>/<Password>@<Service_Name>
image.png

Cloud Shell からパブリックの Autonomous DB にアクセスしたい場合、上記の手順も適用できます。詳細は以前書いた記事をご参考ください。この記事には、OCI Bastionを経由し、プライベートのADBに接続する方法も書いています。その時、まだCloud Shellのプライベート・アクセス機能がリリースされませんでした。プライベート・アクセスのおかげで、OCI Bastionの設定もう要らなくて、接続はより簡単になりました。

以上


関連記事
オラクル・クラウドの個人シリーズ・ブログ
OCI Cloud Shellの概要
OCI Cloud Shell上のSQL PlusからAutonomous DBに接続する
プライベート・サブネット内のOCI Computeインスタンスに接続する方法のまとめ


ドキュメント
クラウド・シェルのプライベート・アクセス
OCI Cloud Shell - FAQ on Using Private Subnets (Doc ID 2883399.1) (英語)
よく聞かれる質問をカバーしています。内容を見るには、オラクル・アカウントは必要です。
image.png

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3