OracleのOS認証設定の手順と実践ポイント

Oracle Master Silver

Oracleデータベースの認証には、データベース内部での認証情報を利用する「データベース認証」と、OSユーザー情報を用いる「OS認証」の2種類があります。それぞれに適した用途や設定手順が異なるため、本記事では、Linux環境でのユーザー作成から、OS認証の詳細な設定方法や、OS_AUTHENT_PREFIXの役割を丁寧に解説します。セキュリティの観点を踏まえたベストプラクティスも紹介しますので、初心者から実務者まで活用できる内容となっています。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


1. データベース認証とは?

データベース認証は、Oracleデータベースに直接、ユーザー名とパスワードを設定し、データベース自体が管理する認証方式です。データベースごとにユーザーを作成し、認証情報を一元管理できるため、特に複数の利用者が存在するシステムにおいて、厳密なアクセス制御を行いたい場合に適しています。

メリット・デメリット

メリットデメリット
ユーザーごとのアクセス制御が柔軟に設定可能パスワード管理の手間がかかる
データベース単独でのセキュリティ設定が可能ユーザー数が多いと管理が複雑になる

設定手順:データベース認証

1.ユーザーの作成
CREATE USER文を用いてデータベースユーザーを作成します。

CREATE USER hr IDENTIFIED BY hr_password;


2.権限の付与
接続に必要な権限を付与します。

GRANT CONNECT, RESOURCE TO hr;



3.接続確認
作成したユーザーでデータベース接続を行い、正常に認証が行われることを確認します。

sqlplus hr/hr_password@orcl

ベストプラクティス

  • プロファイル設定でセキュリティ強化:パスワード有効期限や複雑さを設定します。

    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 90;
  • ログイン監査の有効化:不正アクセスを検知するためにログイン監査を設定します。

    AUDIT SESSION BY ACCESS;

2. OS認証とは?

OS認証は、データベースにアクセスする際に、OS(オペレーティングシステム)のユーザー情報を利用して認証を行う方式です。Oracleデータベース側では、OSで既に認証されているユーザーに対して、パスワードなしでの接続が許可されます。この方法は、スクリプトの自動実行やバッチ処理の利用に便利で、パスワード管理の手間も省けます。

OS_AUTHENT_PREFIXの役割

OS認証を利用する場合、OSユーザーを識別するために、OS_AUTHENT_PREFIXというパラメータが重要になります。デフォルトでは「ops$」が設定されており、Oracleデータベースは、この接頭辞とOSユーザー名を組み合わせた名前で認証を行います。

例えば、Linux上のユーザー名がtest1の場合、データベースではops$test1として認証されます。このプレフィックスは変更も可能で、組織のポリシーに合わせたプレフィックスを設定することで、ユーザー管理が容易になります。


3. 設定手順:LinuxでのOS認証

OS認証をLinux上で設定するためのステップを、順を追って説明します。ここでは、OSユーザーとしてtest1を作成し、データベースにアクセスできるように設定します。

1.Linuxでtest1ユーザーを作成
Linux上でOracleデータベースの認証に利用するtest1ユーザーを作成します。

# useradd -G dba,oper,backupdba,dgdba,kmdba test1
# passwd test1



2.データベースでOS認証ユーザーを作成
デフォルトのOS_AUTHENT_PREFIX(通常はops$)を利用して、test1に対応するデータベースユーザーを作成します。

CREATE USER "ops$test1" IDENTIFIED EXTERNALLY;



3.権限の付与
OS認証ユーザーに接続に必要な権限を付与します。

GRANT CONNECT, RESOURCE TO "ops$test1";



4.接続の確認
作成したtest1ユーザーでLinuxにログインし、OS認証を利用してOracleデータベースに接続できることを確認します。

su - test1
sqlplus / as sysdba #このコマンドで接続が成功すれば、OS認証が正常に機能しています。
コマンド実行例

[root@orcl19c ~]# useradd -G dba,oper,backupdba,dgdba,kmdba test1 ★ユーザー作成
[root@orcl19c ~]# passwd test1
Changing password for user test1.
New password:
BAD PASSWORD: The password is shorter than 7 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@orcl19c ~]# su - oracle
Last login: Fri Aug 29 20:42:08 EDT 2025 from 192.168.56.1 on pts/0
[oracle@orcl19c ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 29 22:27:41 2025
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> CREATE USER "ops$test1" IDENTIFIED EXTERNALLY;

User created.

SQL> GRANT CONNECT, RESOURCE TO "ops$test1";

Grant succeeded.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
[oracle@orcl19c ~]$ su - test1
Password:
[test1@orcl19c ~]$ export ORACLE_SID=v19
[test1@orcl19c ~]$ export ORACLE_BASE=/u01/app/oracle
[test1@orcl19c ~]$ export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
[test1@orcl19c ~]$ export PATH=$PATH:$ORACLE_HOME/bin
[test1@orcl19c ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Aug 29 22:29:15 2025
Version 19.3.0.0.0

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

Connected to an idle instance.

SQL> show user
USER is "SYS" ★接続できた

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


OS_AUTHENT_PREFIXのカスタマイズ

OS_AUTHENT_PREFIXは、必要に応じて変更が可能です。たとえば、組織やプロジェクトごとに接頭辞を分けたい場合、以下のように設定をカスタマイズします。この設定は、データベースの再起動が必要です。

ALTER SYSTEM SET OS_AUTHENT_PREFIX = 'custom$' SCOPE=SPFILE;

例えばOS_AUTHENT_PREFIXcustom$に設定すると、データベース側ではcustom$test1というユーザー名で認証が行われます。

コマンド実行例

SQL> show parameter os_authent_prefix

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string ops$
SQL> alter system set os_authent_prefix='custom$' scope=spfile;

System altered.

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1543500144 bytes
Fixed Size 8896880 bytes
Variable Size 905969664 bytes
Database Buffers 620756992 bytes
Redo Buffers 7876608 bytes
Database mounted.
Database opened.
SQL> show parameter os_authent_prefix

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
os_authent_prefix string custom$ ★変わった

4. データベース認証とOS認証の選択ポイント

項目データベース認証OS認証
パスワード管理必要不要
使用シーン個別管理、セキュリティ強化自動処理、スクリプト利用時
OS_AUTHENT_PREFIXの利用不要必須
管理の利便性中程度高い(OSユーザーと連携する場合)
セキュリティ設定の柔軟性プロファイルやパスワードポリシー設定可能OSユーザーの管理に依存
  • データベース認証が推奨される場面:個別のユーザー管理が必要な環境や、厳格なセキュリティが求められるシステム
  • OS認証が推奨される場面:スクリプトやバッチ処理の自動化が求められる環境

5. トラブルシューティングとセキュリティのベストプラクティス

よくあるエラーと対策

  • ORA-01017: 無効なユーザー名/パスワード
    • 問題点:OS認証が有効でない、またはOS_AUTHENT_PREFIXが不一致である可能性があります。
    • 対策sqlnet.oraSQLNET.AUTHENTICATION_SERVICES = (NTS)が設定されているか確認。また、OS_AUTHENT_PREFIXの設定とデータベースのユーザー名が一致しているか確認します。
  • ORA-28000: アカウントがロックされています
    • 問題点:認証に失敗するとアカウントがロックされる場合があります。
    • 対策:以下のコマンドでアカウントをアンロックします。sqlコードをコピーするALTER USER "ops$test1" ACCOUNT UNLOCK;
  • 接続時の権限不足
    • 問題点:OS認証ユーザーに十分な権限が付与されていないと、接続に失敗します。
    • 対策:必要な権限を再付与します。sqlコードをコピーするGRANT CONNECT, RESOURCE TO "ops$test1";

セキュリティのベストプラクティス

  • OSユーザーグループによる制限:OS認証を利用するユーザーは、特定のグループに所属させ、アクセス制御を行います。
  • 監査の有効化:不正な接続やアクセスを記録するため、Oracle監査ログを有効化します。
  • OS_AUTHENT_PREFIXの命名規則:組織のポリシーに基づき、わかりやすく適切なプレフィックスを設定することで、ユーザーの混乱を避けます。

6. まとめ:最適な認証方法の選択と管理のポイント

Oracleデータベースの認証方式は、それぞれに異なる強みがあります。OS認証を利用する際のOS_AUTHENT_PREFIXの活用法や、セキュリティのベストプラクティスを踏まえ、業務要件に応じた最適な認証方法を選択しましょう。

[参考]
Oracle Databaseセキュリティ・ガイド 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました