確認したこと
Oracle Database 23ai でのWallet認証を行った。
SQL*Plus から sqlplus /@p23 のようにして、
ID/PASSWORDなしで、特定のDBユーザでログイン可能になります。
<なぜ確認した>
・パスワードなしで接続可能となるリモートOS認証は、セキュリティ強化のため
Oracle Database 11.1 で非推奨になりました。
21cではサポート終了し、使用不可となりました。
しかし、以前リモートOS認証を使用していたシステムからのリプレイスで
ID/PASSWORDなしでのログインを継続して行いたいという要望があり、代替機能を調査しました。
Wallet認証とはなにか?
sqlplus /@p23 のようなコマンドで別のサーバにあるDBにログインできます。
ID/PASSWORDは不要です。
★19cのデータベースサーバから、23aiのデータベースサーバへWallet認証で接続する例★
[oracle@host01 ~]$ sqlplus /@p23
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jul 21 11:02:54 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Fri Jul 21 2024 10:41:54 +09:00
Connected to:
Oracle Database 23ai Free, Release 23.0.0.0.0 - Developer-Release
Version 23.4.0.24.05
★接続できた
SQL>
設定方法
・23ai(サーバ側) :DBユーザの作成(Wallet認証したいDBユーザがすでに存在すれば、本手順は不要)
・19c(クライアント側):Wallet作成、sqlnet.ora変更、tnsnames.ora変更
23ai:接続用DBユーザ作成
PDB「FREEPDB1」に、DBユーザ「test」を作成します。パスワードは「test」です。
[oracle@host01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - Developer-Release on 木 7月 20 23:34:33 2024
Version 23.4.0.24.05
Copyright (c) 1982, 2024, Oracle. All rights reserved.
Oracle Database 23ai Free, Release 23.0.0.0.0 - Developer-Release
Version 23.4.0.24.05
に接続されました。
SQL> alter session set container=freepdb1;
セッションが変更されました。
SQL> create user test identified by test;
ユーザーが作成されました。
SQL> grant create session to test;
権限付与が成功しました。
SQL> exit
Oracle Database 23ai Free, Release 23.0.0.0.0 - Developer-Release
Version 23.4.0.24.05との接続が切断されました。
[oracle@host01 ~]$
19c(クライアント側)の操作 全3手順
19c:①tnsnames.oraに23aiへの接続を追記
接続文字列「p23」として、23aiのDBサーバへの接続を作成します。
HOST=のIPアドレスや、SERVICE_NAMEは実際の環境にあわせて変更してください。
ファイル場所の例:/u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
p23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 111.222.333.444)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = dedicated)
(SERVICE_NAME =freepdb1)
)
)
19c:②Wallet作成
Wallet(DBユーザのID/PASSと、関連する接続文字列を設定する)
最初にWalletをといういれものを作成します。それを次の手順でsqlnet.oraで読み込むようにします。
また①で作成した接続文字列に対して、WalletにDBユーザ情報を追加します。
★★Wallet作成(初回のみ)
[oracle@host01 admin]$ cd /u01/app/oracle/product/19.3.0/dbhome_1/network/admin
[oracle@host01 admin]$ mkstore -wrl wallet -create
Oracle Secret Store Tool Release 19.0.0.0.0 - Production
19.3.0.0.0: バージョン{1}
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
★8文字以上 英数字のものを指定。これがウォレット・パスワードとなる。
パスワードの入力:
パスワードの再入力:
★Walletが作成されたことを確認
[oracle@host01 admin]$ ls -lt wallet/
合計 8
-rw-------. 1 oracle oinstall 573 7月 21 12:58 cwallet.sso
-rw-------. 1 oracle oinstall 528 7月 21 12:58 ewallet.p12
-rw-------. 1 oracle oinstall 0 7月 21 12:57 cwallet.sso.lck
-rw-------. 1 oracle oinstall 0 7月 21 12:57 ewallet.p12.lck
★Wallet内のDBユーザ表示(最初は何もなし)
[oracle@host01 admin]$ mkstore -wrl wallet -listCredential
Oracle Secret Store Tool Release 19.0.0.0.0 - Production
19.3.0.0.0: バージョン{1}
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
★Wallet作成時に入力した、ウォレットパスワードを入力
ウォレット・パスワードを入力してください:
List credential (index: connect_string username)
★★WalletにDBユーザ認証情報を追加
★接続識別子「p23」、DBユーザ名「test」に関する情報を追加
[oracle@host01 admin]$ mkstore -wrl wallet -createCredential p23 'test'
Oracle Secret Store Tool Release 19.0.0.0.0 - Production
19.3.0.0.0: バージョン{1}
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
コマンド・ラインでシークレット/パスワードが欠落しています
★DBユーザのパスワードを入力
シークレット/パスワード入力:
シークレット/パスワード再入力:
★Wallet作成時に入力した、ウォレットパスワードを入力
ウォレット・パスワードを入力してください:
★★Walletに認証情報が追加されたことを確認
[oracle@host01 admin]$ mkstore -wrl wallet -listCredential
Oracle Secret Store Tool Release 19.0.0.0.0 - Production
19.3.0.0.0: バージョン{1}
Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
★Wallet作成時に入力した、ウォレットパスワードを入力
ウォレット・パスワードを入力してください:
List credential (index: connect_string username)
1: p23 test ★接続文字列 p23 を使ったときに、DBユーザ test で接続しにいくという設定がはいった
[oracle@host01 admin]$
19c:③sqlnet.oraにWallet配置場所を追加
sqlnet.oraファイルにWalletに関する情報を追加します。
手順②で作成したWalletの場所を指定しています。
ファイル場所の例:/u01/app/oracle/product/19.3.0/dbhome_1/network/admin/sqlnet.ora
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/wallet)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
設定後の接続確認
ID/PASSWORDなしで接続できることを確認します。
p23という接続文字列にDBユーザ名とパスワードが紐づいているため
DBユーザごとに、接続文字列が必要になります。
[oracle@host01 admin]$ sqlplus /@p23
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jul 21 13:10:30 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 23ai Free, Release 23.0.0.0.0 - Developer-Release
Version 23.4.0.24.05
SQL>