Autonomous AI Databaseをプライベートエンドポイントで閉域にする:DBの選び方から接続まで

※当ページにはAmazonアソシエイト等の広告リンクを含みます。

公式ドキュメントで検証最終検証 2026-11-01編集部出典 13件

DBサービスを選ぶ

OCIでOracle Databaseを使うとき、小さな構成で候補になるのは Autonomous AI Database と Base Database Service です。違いは、誰がどこまで管理するかにあります。

表1:Autonomous AI Database と Base Database の比較(2026-11-01確認)

観点Autonomous AI DatabaseBase Database Service
形サーバーを意識しないサービスVM上のDBシステム。1ノードか、2ノードのRAC
パッチサービス側が行うDBやOSへの適用は利用者の責任
バックアップサービス側が行う自動バックアップを設定できる。データの保全は利用者の責任
最小構成Transaction Processing は 2 ECPU、ストレージ 20 GB選ぶVMシェイプとエディションによる
閉域の作り方プライベートエンドポイントを付けるDBシステムをサブネットに置き、セキュリティ・ルールで絞る
接続ポート1521(TLS)、1522(TLS、mTLS)SQL*Net は 1521

今回は Autonomous AI Database を選び、ワークロードは Transaction Processing にします。経費申請は短い処理が中心だからです。ECPUの自動スケーリングは作成時に既定で有効です。有効のままだと基本のECPU数の3倍まで使う場合があり、その分も課金されます。金額を固定したいなら、作成画面で外します。料金は構成で変わるので、公式の価格表で確かめてください。

公開と閉域の違い

Autonomous AI Databaseのネットワークは、作成時の Choose network access で3つから選びます。

表2:Choose network access の選択肢

選択肢入口接続できる相手今回の判断
Secure access from everywhereパブリックIPを問わず接続を試せる。認証は必要使わない
Secure access from allowed IPs and VCNs onlyパブリックACLで許可したIP、CIDR、VCN検証なら候補
Private endpoint access onlyプライベート指定したVCN(ピアリング先、接続済みのオンプレミスを含む)からこれを使う
Public / Private公開の接続と閉域の接続
公開:パブリックエンドポイント許可したIP許可外のIPACLAutonomousAI Databaseここで拒否閉域:プライベートエンドポイントVCN 10.0.0.0/16private-appCompute公開IPなしprivate-dbプライベートIPnsg-dbAutonomousAI DatabaseインターネットからこのDBへの経路はない123
  1. 公開で許可:インターネットを通ってDBへ届きます。ACLに載せた接続元だけが入れます。
  2. 公開で拒否:ACLにない接続元は拒否されます。ACLを付けない設定では、どのIPからでも接続を試せます。
  3. 閉域:指定したVCNのネットワークからの通信を受けます。通信はインターネットを通りません。
図1:公開はACLで接続元を絞り、閉域はVCNの中に入口を置く

Always Free では閉域にできない

公式は「Always Free Autonomous AI Databases cannot be provisioned as a private endpoint」と書いています。VCNの中にも置けません。Autonomous AI Database for Developers も、プライベートエンドポイントでは作成できません。

Always Free には、ほかにも本番向きではない条件があります。7日間使わないと自動で停止し、停止が累計90日続くと削除される場合があります。ストレージは20 GBで、スケールできません。作成できるのはホームリージョンだけです(2026-11-01確認。最新は公式で確認してください)。

プライベートエンドポイントを付ける

用意するものは、DBと同じリージョンのVCN、既定のDHCPオプションを使うサブネット、NSGです。今回は private-db(10.0.2.0/24)を使い、VCNは network コンパートメント、DBは app コンパートメントに置きます。

作業するグループには、次の権限が最低限必要です。DBを作成する権限は別に要ります。

allow group adb-admins to use vcns in compartment network
allow group adb-admins to use subnets in compartment network
allow group adb-admins to use network-security-groups in compartment network
allow group adb-admins to manage private-ips in compartment network
allow group adb-admins to manage vnics in compartment network
allow group adb-admins to manage vnics in compartment app

作成の手順は次のとおりです。

  1. Autonomous AI Database の作成画面で、Workload type に Transaction Processing を選ぶ。
  2. Always Free と Developer を選ばない。
  3. Choose network access で Private endpoint access only を選ぶ。
  4. Virtual cloud network と Subnet に、VCNと private-db を指定する。
  5. Show advanced options を開き、Network security groups (NSGs) に nsg-db を指定する。
  6. Allow public access は有効にしない。
  7. 費用を固定したいなら、Compute auto scaling のチェックを外す。
  8. 作成後、詳細の Mutual TLS (mTLS) authentication が Not Required であることを確かめる。Required なら Edit で Require mutual TLS (mTLS) authentication を外す。

表3:設定するときに気を付ける点

項目内容
Private IP addressサブネットのCIDR内で指定できる。空欄なら自動で割り当てる。作成後は変更できない
Hostname prefix接続先のホスト名の先頭を指定できる
NSGDB 1つに5つまで。作成後も、停止なしで変更できる
Allow public access閉域に加えて公開の入口を増やす。ECPUモデルだけで使える。今回は使わない

アプリから接続する

接続方式は mTLS と TLS の2つです。どちらも TCPS で通信を暗号化します。違いは、証明書を確かめる範囲と、ウォレットの有無です。

表4:mTLS と TLS の比較

観点mTLSTLS
認証クライアントとサーバーが証明書で確かめ合うクライアントがサーバーの証明書を確かめる
ポート15221521 または 1522
ウォレット必要対応クライアントなら不要
有効にする条件既定で使えるACLかプライベートエンドポイントが必要
運用ウォレットの配布と定期的な更新が要るウォレットの更新はない
TLS / mTLSアプリからDBへの接続方式とポート
VaultパスワードVCN 10.0.0.0/16private-appCompute 2台nsg-appprivate-dbプライベートIPnsg-dbAutonomousAI DatabaseTLS:TCP 1521ウォレット不要mTLS:TCP 1522ウォレットが必要123
  1. パスワード:コードに書かず、Vaultのシークレットから受け取ります。手順はロードマップの次の項目です。
  2. TLS:サーバーの証明書をクライアントが確かめます。ポートは1521か1522です。
  3. mTLS:双方が証明書で確かめ合います。ポートは1522で、ウォレットが必要です。
  4. 省略:Vaultへの経路は図から省いています。2と3は、どちらか一方を選ぶ接続方式です。
図2:閉域の中で、TLSかmTLSのどちらかを選ぶ

TLS で接続する

コンソールの Database connection を開き、Access で Private endpoint を選び、TLS Authentication で TLS を選ぶと接続文字列が出ます。JDBC Thin なら次の形です。service_name の末尾は、用途に合うものを選びます。短い処理が中心のアプリなら tp です。

jdbc:oracle:thin:@(description=(retry_count=20)(retry_delay=3)
  (address=(protocol=tcps)(port=1521)(host=<プライベートのホスト名>))
  (connect_data=(service_name=<データベース名>_tp.adb.oraclecloud.com))
  (security=(ssl_server_dn_match=yes)))

mTLS とウォレット

mTLS を選ぶ場合は、Database connection からウォレットをダウンロードします。ウォレットのファイルとDBのユーザーIDとパスワードがそろうと、データに届きます。扱いには次の点を守ります。

  • 種類は、1つのDBに対応する Instance wallet を選ぶ。Regional wallet は管理作業用です。
  • ファイルの権限は 600 にする。
  • メールなどで送るときは、パスワードを別の安全な経路で渡す。
  • README で有効期限を見て、切れる前に取り直す。

NSGのルールを書く

DBへの接続を許す設定は、DB側とアプリ側の両方に書きます。NSGのルールでは、CIDRの代わりに別のNSGを相手に指定できます。同じVCNの中なら、サブネットのCIDRより狭く、役割で指定できます。

表5:TLSで接続する場合のNSGルール

NSG方向相手プロトコル・ポート理由
nsg-db受信(ステートフル)nsg-appTCP 1521アプリからの接続を受ける
nsg-db受信(ステートフル)BastionのプライベートIP/32TCP 1521管理者のポート転送。作業が少なければ作業中だけ置く
nsg-app送信(ステートフル)nsg-dbTCP 1521DBへの接続だけを出す

mTLS にする場合は、両方のポートを 1522 に変えます。ステートフルなルールなので、戻りの通信のルールは要りません。APEX、Database Actions、ORDS を使うときは 443 も必要ですが、使わないなら開けません。NSGを使う場合も、サブネットのセキュリティ・リストは一緒に適用されます。どちらかで許可された通信は通るので、既定のリストが全送信を許可していると、NSGの送信ルールだけでは絞れません。

アプリ用ユーザーを作り、接続を確かめる

アプリは ADMIN で接続しません。ADMIN でアプリ用のユーザーを作り、必要な権限だけを渡します。パスワードは12〜30文字で、大文字、小文字、数字を各1文字以上含めます。

CREATE USER expense_app IDENTIFIED BY "<password>";
GRANT CREATE SESSION TO expense_app;

つながらないときは、Compute から名前解決とポートを順に確かめます。<PE_Hostname> はDBの詳細で確認します。

nslookup <PE_Hostname>
curl -v telnet://<PE_Hostname>:1521

次に読むページ

ロードマップの次の項目は「パスワードをVaultに置く」です。全体の順番は学習ロードマップで確認できます。DBまでの準備が済んだら、次の段階のLB、HTTPS、WAFの記事へ進みましょう。

よくある質問(FAQ)

Always Free の Autonomous AI Database をプライベートエンドポイントにできますか?
できません。公式は、Always Free の Autonomous AI Database はプライベートエンドポイントとして作成できず、VCN の中にも置けないとしています。開発・検証向けの Autonomous AI Database for Developers も同様です。閉域にするなら有料のインスタンスを使います(2026-11-01確認。最新は公式で確認してください)。
プライベートエンドポイントにしたら、ウォレットは不要になりますか?
接続方式によります。TLS で接続するならウォレットは不要です。mTLS で接続するならウォレットが必要です。プライベートエンドポイントを設定すると TLS の前提条件を満たせるので、対応したクライアントならウォレットなしで接続できます。
手元のPCから閉域のDBに直接つなげますか?
そのままではつなげません。受けるのは指定した VCN と、そこへピアリングした VCN、FastConnect などで接続したオンプレミスからの通信で、インターネットからは届きません。Allow public access を有効にすると公開側の入口も増えますが、閉域にする目的と相反します。今回の構成では、Bastion のポート転送か、Bastion 経由で入った Compute から接続します。
目次