はじめに
11月の新機能でAutonomous Database間でもTLS接続を使用したデータベース・リンクの作成ができるようになりました。動作確認をしてみます。
便宜上、ローカルのAutonomous DatabaseのユーザーをLOCALUSER、リモートのAutonomous DatabaseのユーザーをREMOTEUSER、パスワードは"Welcome12345#"としています。
リモートのAutonomous DatabaseのTLS接続を有効化する
Autonomous Databaseはインスタンスのデプロイメント時にネットワーク・アクセスの選択ができます。相互TLSが必須である「すべての場所からのセキュリティ・アクセス」以外は、相互TLS(mTLS)認証が必要にデフォルトでチェックがついていないため、意図的にチェックしない限り、デプロイメント時からTLS接続が有効になっています。
リモートのAutonomous Databaseがプライベート・エンドポイントにある場合は、ローカルのAutonomous DatabaseのVCNからアクセスできる(プライベート・ネットワークでアクセスできる)必要があります。
すべての場所からのセキュリティ・アクセスでTLS接続を有効にしたい場合は、コンソールのネットワークの項目のアクセス制御リストの編集をクリックして、リモートのAutonomous DatabaseのACLを設定します。CIDRブロックで0.0.0.0/0を指定することですべてのアクセスを許可する設定ができます。
続けて相互TLS(mTLS)認証の編集をクリックしてチェックをはずします。
保存すると、ステータスが更新中になります。使用可能になれば完了です。コンソール上のネットワークの項目はこちらのような表示になります。
リモートのAutonomous Databaseの接続情報の確認
データベース・リンクを作成するときにリモート・データベースの接続情報(ホスト、ポート、サービス名)が必要です。コンソールのAutonomous Databaseのホームでデータベース接続をクリックすると、相互TLS/TLS双方の接続情報を参照することができます。今回はMedium接続を利用することにして、リモートのAutonomous Databaseのコンソールで情報を確認しメモしておきます。
ローカルのAutonomous DatabaseにREMOTEUSERのクレデンシャルを作成
ローカルのAutonomous DatabaseのDatabase ActionsにLOCALUSERでログインし、SQLを開きます。DBMS_CLOUD.CREATE_CREDENTIALプロシージャを利用して、REMOTEUSERのクレデンシャルを作成します。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'DB_LINK_CRED',
username => 'REMOTEUSER',
password => 'Welcome12345#'
);
END;
/
ADMINユーザー以外でデータベース・リンクを作成するには権限付与が必要です。事前にADMINユーザで以下を実行済みです。
GRANT EXECUTE on dbms_cloud_admin TO localuser;
GRANT create database link TO localuser;
データべース・リンクを作成
次にDBMS_CLOUD_ADMIN.CREATE_DATABASE_LINKプロシージャを使ってデータベース・リンクを作成します。引き続きDatabase ActionsのSQLでLOCALUSERで以下のSQLを実行します。パラメータssl_server_cert_dnとdirectory_nameにはNULLで指定します。
BEGIN
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK(
db_link_name => 'EMPLINK',
hostname => 'adb.ap-osaka-1.oraclecloud.com',
port => '1521',
service_name => 'xxxxxxxxxxxxxx_remoteadb1_medium.adb.oraclecloud.com',
ssl_server_cert_dn => NULL,
credential_name => 'DB_LINK_CRED',
directory_name => NULL);
END;
/
リモートのAutonomous Databaseがプライベート・エンドポイントにある場合は、追加でパラメータprivate_targetをTRUEに指定する必要があります。またhostnameはDNSで解決できるホスト名を指定します。IPアドレスの指定はできません。
データベース・リンクの確認
データベース・リンクが無事作成できたので、リモートのEMP表が検索できるか確認してみます。
SELECT * FROM EMP@EMPLINK;
正しく結果が表示されました。
おわりに
ウォレットが不要なTLS接続によるAutonomous Database間のデータベース・リンクの作成、動作を確認してみました。これまではmTLS接続のみのサポートだったので、リンク先のAutonomous Databaseのウォレットをリンク元のAutonomous Databaseに読めるようにするという手順が必要でしたが、それが不要になり、簡単にデータベース・リンクが作成できます。
参考資料
ドキュメント:Create Database Links from Autonomous Database to an Autonomous Database on a Private Endpoint