[OCI]ウォレットを使用せずにSQL*PlusからAutonomous DatabaseにTLS認証で接続してみた


はじめに

以前から、JDBC Thinドライバーを用いたアプリケーションはAutonomous Databaseにウォレットを使用せずにTLS認証で接続できましたが、2022/1からOracle Call Interfaceを用いたアプリケーションも、一定の条件のもとで、Autonomous Databaseにウォレットを使用せずにTLS認証で接続できるようになりました。

今回は、最もポピュラーなOracle Call Interfaceを用いたアプリケーションであるSQL*Plusで検証してみました。

1.Computeインスタンスの作成

OSとしてAutonomous Linux 7.9を選択し、Computeインスタンスを作成しました。

作成したComputeインスタンスのパブリックIPをコピーし、メモしておきます。

2.Autonomous Databaseの作成

Autonomous Databaseを作成します。
OCIコンソールのAutonomous Databaseの画面に移動し、「Autonomous Databaseの作成」をクリックします。

Autonomous Databaseの作成画面が表示されます。

基本情報を入力します。

ワークロード・タイプを選択します。
今回はトランザクション処理(Autonomous Transaction Processing)を選択しました

デプロイメント・タイプを選択します。
「共有インフラストラクチャ」を選択します。

データベースの構成を入力します。
今回は検証目的のため、最小構成の1 OCPU、ストレージ1TBとしました。

管理者ユーザadminのパスワードを入力します。

次のネットワーク・アクセスの選択がポイントです。
ウォレットを使わずにTLS認証でAutonomous Databaseに接続するには、Autonomous Databaseのアクセス・タイプが「許可されたIPおよびVCN限定のセキュア・アクセス」または「プライベート・エンドポイント・アクセスのみ」である必要があります。
今回はアクセス・タイプとして「許可されたIPおよびVCN限定のセキュア・アクセス」を選択します。
「IP表記法タイプ」として"IPアドレス"を選択し、「値」に先ほど作成したComputeインスタンスのパブリックIPアドレスを入力します。
「相互TLS(mTLS)認証が必要」のチェックをオフにします。このチェックをオフにすることで、アクセスを許可したIPアドレスからはウォレットを使用せずにTLS認証でAutonomous Databaseに接続できるようになります。

ライセンス・タイプとして「ライセンス込み」を選択します。

通知先のメールアドレスを入力します。

入力が完了したら、「Autonomous Databaseの作成」をクリックします。

数分待つとAutonomous Databaseが使用可能になります。

ネットワークの欄を見ると、通常と異なる設定になっていることがわかります。
なお、アクセス制御リスト、相互TLS(mTLS)認証の設定は、Autonomous Database作成後も変更が可能です。

3.TLS認証で接続するための接続文字列の取得

「DB接続」をクリックします。

データベース接続の画面が表示されます。

接続文字列蘭のTLS認証をTLSに変更します。

接続文字列をコピーし、メモしておきます。

「閉じる」をクリックします。

4.ComputeインスタンスへのOracle Instant Clientのインストール

SSHでopcユーザとしてComputeインスタンスにログインします。

Welcome to Autonomous Linux
Effective kernel version is 5.4.17-2136.302.7.2.1.el7uek.x86_64
[opc@compute1 ~]$

yumコマンドでOracle Instant Clientをインストールします。
ウォレットを使用せずにAutonomous Databaseに接続するためには、Linux x64プラットフォームでOracle Clientのバージョンが19.13以上である必要があります。
ということで、今回はOracle Instant Client 19.14をインストールしました。

[opc@compute1 ~]$ sudo yum install -y oracle-release-el7
Loaded plugins: langpacks, ulninfo
ol7_UEKR6                                                                                   | 3.0 kB  00:00:00     
ol7_addons                                                                                  | 3.0 kB  00:00:00     
ol7_ksplice                                                                                 | 3.0 kB  00:00:00     
ol7_latest                                                                                  | 3.6 kB  00:00:00     
ol7_oci_included                                                                            | 2.9 kB  00:00:00     
ol7_optional_latest                                                                         | 3.0 kB  00:00:00     
ol7_software_collections                                                                    | 3.0 kB  00:00:00     
ol7_x86_64_userspace_ksplice                                                                | 3.0 kB  00:00:00     
(1/16): ol7_UEKR6/x86_64/updateinfo                                                         | 439 kB  00:00:00     
(2/16): ol7_addons/x86_64/updateinfo                                                        | 137 kB  00:00:00     
(3/16): ol7_latest/x86_64/group_gz                                                          | 136 kB  00:00:00     
(4/16): ol7_ksplice/primary_db                                                              | 2.6 MB  00:00:00     
(5/16): ol7_ksplice/updateinfo                                                              | 7.9 kB  00:00:00     
(6/16): ol7_oci_included/x86_64/primary_db                                                  | 917 kB  00:00:00     
(7/16): ol7_latest/x86_64/updateinfo                                                        | 3.4 MB  00:00:00     
(8/16): ol7_optional_latest/x86_64/updateinfo                                               | 1.4 MB  00:00:00     
(9/16): ol7_addons/x86_64/primary_db                                                        | 218 kB  00:00:00     
(10/16): ol7_software_collections/x86_64/updateinfo                                         | 8.9 kB  00:00:00     
(11/16): ol7_x86_64_userspace_ksplice/updateinfo                                            |  80 kB  00:00:00     
(12/16): ol7_x86_64_userspace_ksplice/primary_db                                            | 265 kB  00:00:00     
(13/16): ol7_optional_latest/x86_64/primary_db                                              | 5.6 MB  00:00:00     
(14/16): ol7_software_collections/x86_64/primary_db                                         | 5.8 MB  00:00:00     
(15/16): ol7_UEKR6/x86_64/primary_db                                                        |  30 MB  00:00:00     
(16/16): ol7_latest/x86_64/primary_db                                                       |  39 MB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package oracle-release-el7.x86_64 0:1.0-4.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================
 Package                           Arch                  Version                   Repository                 Size
===================================================================================================================
Installing:
 oracle-release-el7                x86_64                1.0-4.el7                 ol7_latest                 14 k

Transaction Summary
===================================================================================================================
Install  1 Package

Total download size: 14 k
Installed size: 18 k
Downloading packages:
oracle-release-el7-1.0-4.el7.x86_64.rpm                                                     |  14 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : oracle-release-el7-1.0-4.el7.x86_64                                                             1/1 
  Verifying  : oracle-release-el7-1.0-4.el7.x86_64                                                             1/1 

Installed:
  oracle-release-el7.x86_64 0:1.0-4.el7                                                                            

Complete!
[opc@compute1 ~]$
[opc@compute1 ~]$ sudo yum install -y oracle-instantclient19.14-sqlplus
Loaded plugins: langpacks, ulninfo
ol7_oracle_instantclient                                                                    | 2.9 kB  00:00:00     
(1/2): ol7_oracle_instantclient/x86_64/updateinfo                                           |   71 B  00:00:00     
(2/2): ol7_oracle_instantclient/x86_64/primary_db                                           |  27 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package oracle-instantclient19.14-sqlplus.x86_64 0:19.14.0.0.0-1 will be installed
--> Processing Dependency: oracle-instantclient19.14-basic >= 19.14.0.0.0 for package: oracle-instantclient19.14-sqlplus-19.14.0.0.0-1.x86_64
--> Running transaction check
---> Package oracle-instantclient19.14-basic.x86_64 0:19.14.0.0.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===================================================================================================================
 Package                                  Arch          Version              Repository                       Size
===================================================================================================================
Installing:
 oracle-instantclient19.14-sqlplus        x86_64        19.14.0.0.0-1        ol7_oracle_instantclient        687 k
Installing for dependencies:
 oracle-instantclient19.14-basic          x86_64        19.14.0.0.0-1        ol7_oracle_instantclient         51 M

Transaction Summary
===================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 52 M
Installed size: 230 M
Downloading packages:
(1/2): oracle-instantclient19.14-sqlplus-19.14.0.0.0-1.x86_64.rpm                           | 687 kB  00:00:00     
(2/2): oracle-instantclient19.14-basic-19.14.0.0.0-1.x86_64.rpm                             |  51 MB  00:00:00     
-------------------------------------------------------------------------------------------------------------------
Total                                                                               57 MB/s |  52 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : oracle-instantclient19.14-basic-19.14.0.0.0-1.x86_64                                            1/2 
  Installing : oracle-instantclient19.14-sqlplus-19.14.0.0.0-1.x86_64                                          2/2 
  Verifying  : oracle-instantclient19.14-sqlplus-19.14.0.0.0-1.x86_64                                          1/2 
  Verifying  : oracle-instantclient19.14-basic-19.14.0.0.0-1.x86_64                                            2/2 

Installed:
  oracle-instantclient19.14-sqlplus.x86_64 0:19.14.0.0.0-1                                                         

Dependency Installed:
  oracle-instantclient19.14-basic.x86_64 0:19.14.0.0.0-1                                                           

Complete!
[opc@compute1 ~]$ 

環境変数を設定します。

/etc/profileを編集します。

[opc@compute1 ~]$ sudo vi /etc/profile

ファイルの末尾に以下の内容を追加します。

export ORACLE_HOME=/usr/lib/oracle/19.14/client64/lib
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export NLS_LANG=Japanese_Japan.AL32UTF8
export PATH=/usr/lib/oracle/19.14/client64/bin:$PATH

環境変数を適用します。

[opc@comp1 ~]$ source /etc/profile
Welcome to Autonomous Linux
Effective kernel version is 5.4.17-2136.302.7.2.1.el7uek.x86_64
[opc@compute1 ~]$

5.tnsnames.oraファイルの作成

Autonomous Databaseに接続するためのtnsnames.oraファイルを作成します。

[opc@comp1 ~]$ sudo vi $ORACLE_HOME/network/admin/tnsnames.ora

以下のようなエントリーを追加します。
 接続文字列のエイリアス=先ほどコピーしたAutonomous DatabaseのTLS接続文字列
tnsnames.oraの内容は、こちらのファイルのようになります。

$ORACLE_HOME/network/admin/tnsnames.ora
testatp1_high = (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=xxxxxx_demoatp1_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)(ssl_server_cert_dn="CN=adb.ap-tokyo-1.oraclecloud.com, OU=Oracle ADB TOKYO, O=Oracle Corporation, L=Redwood City, ST=California, C=US")))

6.SQL*PlusからAutonomous Databaseに接続

SQL*PlusからAutonomous Databaseに接続してみます。

[opc@compute1 ~]$ sqlplus admin/Demo#1Demo#1@testatp1_high

SQL*Plus: Release 19.0.0.0.0 - Production on 水 2月 23 09:43:19 2022
Version 19.14.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

最終正常ログイン時間: 水 2月  23 2022 09:04:58 +00:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.14.0.1.0
に接続されました。
SQL>

ウォレットを使用せずに、SQL*PlusからAutonomous DatabaseにTLS認証で接続できました。

おまけ:Oracle Instant Client 19.12からの接続

同様に、SQL*Plus 19.12(Oracle Instant Client 19.2)からAutonomous Databaseに接続してみました。

[opc@compute1 ~]$ sqlplus admin/Demo#1Demo#1@demoatp1_high

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Feb 23 02:59:56 2022
Version 19.12.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

ERROR:
ORA-28759: failure to open file


Enter user-name: 

SQL*Plus 19.12(Oracle Instant Client 19.2)は、ウォレットを使用せずにAutonomous DatabaseにTLS認証で接続できないため、エラーになりました。

参考情報

Autonomous DatabaseでTLSまたは相互TLS (mTLS)認証のみを許可するためのネットワーク・オプションの更新
Prepare for Oracle Call Interface, ODBC, and JDBC OCI Connections Using TLS Authentication