[Oracle Cloud] Bastionサービスを使ってOracle DBCSの接続

#はじめに
OCI Bastionサービスを使って、プライベートサブネットにあるDBCSインスタンスへ接続してみた。

## 事前準備

- [OCI チュートリアル](https://oracle-japan.github.io/ocitutorials/)を参考に
    - VCN/Public Subnet,Private Subnet/Service Gateway/ルート表/Security Listの[ネットワークリソースを作成](https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/)
        - Service Gatewayのサービス：「All <region> Services in Oracle Services Network」
        - ルート表：作成したService Gatewayへのルート・ルール
	- Seculity List：ソースPublic Subnet CIDR、宛先 TCP:1521ポートのイグレスルール
	- Seculity List：ソースPublic Subnet CIDR、宛先 TCP:22ポートのイグレスルール

    - Private Subnectに[DBCSインスタンスを作成](https://oracle-japan.github.io/ocitutorials/database/dbcs101-create-db/)

- IAMポリシーの作成
    - Bastionサービスを使用するために必要な権限
	- Bastion、セッション、ネットワークの管理
	- ComputeインスタンスのRead
	- Computeインスタンス エージェント プラグインのRead
	- Work-Requestのinspect

ポリシーの例

```
Allow group SecurityAdmins to manage bastion in tenancy
Allow group SecurityAdmins to manage bastion-session in tenancy
Allow group SecurityAdmins to manage virtual-network-family in tenancy
Allow group SecurityAdmins to read instance-family in tenancy
Allow group SecurityAdmins to read instance-agent-plugins in tenancy
Allow group SecurityAdmins to inspect work-requests in tenancy
```

# Bastionの作成
Identity & Security > Bastion から Bastion(要塞)の作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/77293642-5358-5004-f39b-90c658374709.png)

名前、配置VCN・Public Subnet、CIDRブロック許可リスト（アクセス元）を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/c6bbca81-a350-755f-12a7-47952a101fce.png)


# SSHポート転送セッションの作成
作成したBastionにセッションを作成

- セッション・タイプ：SSHポート転送セッション
- セッション名：名前
- 次を使用してターゲット・ホストに接続します：IPアドレス
- IPアドレス：接続対象インスタンスのPrivate IPアドレス
- ポート：1521
- SSHキーの追加：SSH公開キーの入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/4a80a849-746c-e3cb-4d30-1f66dd6472a4.png)

# SSHポート転送SSHセッションを使用
接続対象のセッションのメニューから「SSHコマンドのコピー」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/49021923-d1c7-b335-14c3-5edf98b151ad.png)

テキスト エディタを使用して、セッションの作成時に指定した SSH キー ペアの秘密キーへのパスで<private key>を置換、<localPort>を置換

更新前例

```
ssh -i <privateKey> -N -L <localPort>:172.168.0.2:1521 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com

```

更新前後

```
ssh -i id_rsa -N -L 1521:172.168.0.2:1521 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com

```

コマンド ラインを使用して、カスタマイズされた SSH コマンドを発行

```
> ssh -i id_rsa -N -L 1521:172.168.0.2:1521 -p 22 ocid1.bastionsession.oc1.ap-tokyo-1.aaaaaa@host.bastion.ap-tokyo-1.oci.oraclecloud.com
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug1: Connecting to host.bastion.uk-london-1.oci.oraclecloud.com [147.154.235.XXX] port 22.
debug1: Connection established.

<略>

debug1: pledge: network
```

ターミナルを閉じないでください。
詳細出力 ( -v)を有効にした場合、接続が成功した後の最終メッセージは次のとおりです。
debug1: pledge: network

# DBCSインスタンスにSQL Developer接続
ホスト名：localhost
ポート：1521
で接続を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108635/dce381f7-f040-22bf-0f4c-8aaa5d794ece.png)


# おわりに
OCI Bastionサービスを使ってプライベートサブネットのDBCSにアクセスできました。

## 参考情報

- [[Oracle Cloud] Bastionサービスを使ってみた (2021/05/31)](https://qiita.com/kenwatan/items/840ec56153aaefcaefe4)
- [OCI データベース・ツールでオラクルDBへの接続方法](https://qiita.com/liu-wei/items/1d4ed7477a28b794a56c)
- [[Oracle Cloud] Cloud ShellによるOracle DBCSの接続 (2021/12/13)](https://qiita.com/kenwatan/items/3dca9ebef2b6530ff5f0)