1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[23ai] 廃止されたリモートOS認証に対応する!(Wallet認証)

Posted at

確認したこと

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>
1
3
0

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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?