1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autonomous Database間でTLS接続(ウォレット不要)を使ったデータベース・リンクを試してみた

Posted at

はじめに

11月の新機能でAutonomous Database間でもTLS接続を使用したデータベース・リンクの作成ができるようになりました。動作確認をしてみます。
便宜上、ローカルのAutonomous DatabaseのユーザーをLOCALUSER、リモートのAutonomous DatabaseのユーザーをREMOTEUSER、パスワードは"Welcome12345#"としています。

リモートのAutonomous DatabaseのTLS接続を有効化する

Autonomous Databaseはインスタンスのデプロイメント時にネットワーク・アクセスの選択ができます。相互TLSが必須である「すべての場所からのセキュリティ・アクセス」以外は、相互TLS(mTLS)認証が必要にデフォルトでチェックがついていないため、意図的にチェックしない限り、デプロイメント時からTLS接続が有効になっています。
image.png

リモートのAutonomous Databaseがプライベート・エンドポイントにある場合は、ローカルのAutonomous DatabaseのVCNからアクセスできる(プライベート・ネットワークでアクセスできる)必要があります。

すべての場所からのセキュリティ・アクセスでTLS接続を有効にしたい場合は、コンソールのネットワークの項目のアクセス制御リストの編集をクリックして、リモートのAutonomous DatabaseのACLを設定します。CIDRブロックで0.0.0.0/0を指定することですべてのアクセスを許可する設定ができます。
image.png
続けて相互TLS(mTLS)認証の編集をクリックしてチェックをはずします。

image.png

保存すると、ステータスが更新中になります。使用可能になれば完了です。コンソール上のネットワークの項目はこちらのような表示になります。
image.png

リモートのAutonomous Databaseの接続情報の確認

データベース・リンクを作成するときにリモート・データベースの接続情報(ホスト、ポート、サービス名)が必要です。コンソールのAutonomous Databaseのホームでデータベース接続をクリックすると、相互TLS/TLS双方の接続情報を参照することができます。今回はMedium接続を利用することにして、リモートのAutonomous Databaseのコンソールで情報を確認しメモしておきます。
image.png

ローカルの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;
/

image.png

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_dndirectory_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;

image.png

正しく結果が表示されました。

おわりに

ウォレットが不要なTLS接続によるAutonomous Database間のデータベース・リンクの作成、動作を確認してみました。これまではmTLS接続のみのサポートだったので、リンク先のAutonomous Databaseのウォレットをリンク元のAutonomous Databaseに読めるようにするという手順が必要でしたが、それが不要になり、簡単にデータベース・リンクが作成できます。

参考資料

ドキュメント:Create Database Links from Autonomous Database to an Autonomous Database on a Private Endpoint

1
0
2

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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?