■やりたいこと

Microsoft Windows 普通ユーザがリモートからOS認証を使って、DBにログインできること。

■関連パラメータ

・SQLNET.AUTHENTICATION_SERVICES

Oracle Net Servicesで使用可能な認証方式の設定です。
Microsoft Windows OS認証を有効にしたい場合、(NTS)に設定する。

・OS_AUTHENT_PREFIX

管理者ではなく、普通ユーザでもOS認証を使用したい場合、追加でDBユーザ作成する必要があります。このパラメータの値をユーザーのOSアカウントの先頭に連結します。デフォルトの値は「opt$」です。

イメージは以下です。
file


接続要求が発行されると、Oracle Databaseでは接頭辞の付いたユーザー名をデータベース内のOracleユーザー名と比較します。
なお、簡素化のために接頭辞をなしに設定することが可能です。
spfile変更対象のみのため、値の反映までDBの再起動は必要です。

SQL>alter system set os_authent_prefix=” scope=spfile;

ローカルユーザのOS認証に関わるパラメータは以上2つです。
リモートユーザのOS認証を定義したい場合、追加で以下のパラメータを設定する。

・REMOTE_OS_AUTHENT

OS_AUTHENT_PREFIX パラメータ値でリモート・クライアントが認証されるかどうかを指定します。
TRUEに設定することで、リモートOS認証は有効になります。

■設定方法

1.sqlnet.ora追記
$ /network/admin/sqlnet.ora >> SQLNET.AUTHENTICATION_SERVICES=(NTS)

2.パラメータ確認
SQL>show parameter os_authent_prefix
SQL>show parameter remote_os_authent

3.パラメータ変更
SQL>alter system set remote_os_authent=TRUE scope=spfile;

4.DB再起動
シングルの場合:
SQL>shutdown
SQL>startup

RACの場合:
gridの環境変数を読み込む
SQL>srvctl stop database -db DB_NAME
SQL>srvctl start database -d DB_NAME

5.パラメータ確認(変更されたことの確認)
SQL>show parameter remote_os_authent

6.DBユーザ作成
SQL>create user "username" identified externally;
SQL>grant connect to "username";

※create user時、usernameは必ず大文字で作成すること。作成後の大文字小文字を区別しないが、作成時は必ず大文字ではないと作成できない。
※usernameは「os_authent_prefix+domain\username」より構成されます。

たとえos_authent_prefixはopt$、ドメインはdomain、ユーザ名はusernameの場合、
file

7.接続確認
 リモート
$ sqlplus /@(接続識別子)

Last modified: 2021-04-12

Author