Oracle データベースにおけるユーザー作成と管理ガイド

Oracle Master Silver

Oracleデータベースにおいてユーザーを適切に作成・管理することは、データの安全性とアクセス制御の要です。このガイドでは、ユーザー作成の基本構文から詳細な設定方法、ベストプラクティスまでを網羅的に解説します。


1. ユーザーの役割と作成目的

ユーザーはデータベースにおける個別のアカウントであり、データベース内でのアクセス権やリソース管理を担います。ユーザーごとに異なる権限やリソースを設定することで、データの保護や効率的なアクセス制御を実現します。基本的には、開発用、テスト用、または運用用などの用途に応じてユーザーを分け、それぞれに適切な権限を与えます。


2. ユーザー名とパスワードの規則

ユーザー名の規則

  • 英字で始める必要があります。
  • 最大30文字で、英字、数字、アンダースコア(_)、ドル記号($)、ハッシュ(#)が使用可能です。
  • 大文字・小文字は区別されませんが、引用符で囲むことで区別可能です。
CREATE USER "Test_User" IDENTIFIED BY "SecureP@ssw0rd!";

パスワードの規則

  • パスワードは8文字以上、できれば12文字以上の長さを推奨します。
  • 英大文字、英小文字、数字、特殊文字(例:@、#、$)を組み合わせた複雑なパスワードを使用します。
  • SQL*Plusなどから直接設定する際には、特殊文字が含まれる場合にパスワードを引用符で囲む必要があります。
CREATE USER test_user IDENTIFIED BY "SecureP@ssw0rd!";

3. 基本的なユーザー作成構文

ユーザーを作成する際の基本構文です。最もシンプルな構文は以下のようになりますが、実務では表領域やリソース設定も行います。

CREATE USER <ユーザー名> IDENTIFIED BY <パスワード>;

デフォルト表領域と一時表領域

  • デフォルト表領域:データオブジェクト(テーブルやインデックスなど)を格納する標準の表領域を指定。
  • 一時表領域:一時的な操作(ソートや集計)に使用される一時的な表領域を指定。
CREATE USER test_user IDENTIFIED BY "SecureP@ssw0rd!"
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp;

4. クオータ(Quota)の設定

クオータ設定により、ユーザーが特定の表領域で使用できるストレージの上限を管理します。これにより、無制限にデータが増加するリスクを防ぎ、他のユーザーへの影響を抑えることが可能です。

ALTER USER <ユーザー名> QUOTA <サイズ> ON <表領域>;

例:

ALTER USER test_user QUOTA 100M ON users;

無制限クオータ設定

無制限クオータを設定する場合:

ALTER USER test_user QUOTA UNLIMITED ON users;

5. 権限の付与

データベースに接続するためには、CONNECT権限、オブジェクトの作成にはRESOURCE権限が必要です。追加のシステム権限やオブジェクト権限も、ユーザーの用途に応じて適切に付与します。

GRANT CONNECT, RESOURCE TO <ユーザー名>;

より高度な権限の例

  • CREATE SESSION:データベース接続に必要。
  • CREATE TABLE:ユーザーがテーブルを作成するための権限。
  • UNLIMITED TABLESPACE:すべての表領域で無制限の使用を許可。
GRANT CREATE SESSION, CREATE TABLE TO test_user;

6. パスワードの有効期限設定とポリシー

プロファイルを使用してパスワードの期限や失敗回数などのポリシーを定義できます。セキュリティ要件に基づき、定期的なパスワード変更を義務づけましょう。

ALTER PROFILE default LIMIT PASSWORD_LIFE_TIME 90;

パスワード入力失敗時のロック設定

複数回のパスワード入力失敗でロックすることで、パスワード破り攻撃を防ぎます。

ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 3;

パスワードの即時期限切れ設定

新しいユーザーが初回ログイン時にパスワードを変更するよう促す場合に有効です。

ALTER USER test_user PASSWORD EXPIRE;

7. アカウントのロックとアンロック

ユーザーアカウントは、セキュリティ対策の一環としてロックすることが可能です。不正アクセスの可能性がある場合や、長期間利用しない場合にアカウントをロックし、必要に応じてアンロックします。

ALTER USER <ユーザー名> ACCOUNT LOCK;
ALTER USER <ユーザー名> ACCOUNT UNLOCK;

例:

ALTER USER test_user ACCOUNT LOCK;
ALTER USER test_user ACCOUNT UNLOCK;

8. リソース管理プロファイルの設定

Oracleのプロファイルは、ユーザーのリソース消費(CPU時間、セッション時間、同時接続数など)を管理する強力な手段です。プロファイルを使用して、ユーザーがデータベースリソースを過剰に消費することを防ぎます。

CREATE PROFILE limited_profile LIMIT
SESSIONS_PER_USER 2
CPU_PER_SESSION 10000
CONNECT_TIME 60;

プロファイルの適用

作成したプロファイルをユーザーに割り当てます。

ALTER USER test_user PROFILE limited_profile;

9. ユーザー作成後の確認と監視

作成したユーザーが正しく設定されているか、DBA_USERSビューで確認します。account_statuslast_loginフィールドでアカウントの状態と最終ログイン時刻を確認できるため、異常な動きを監視する際に役立ちます。

SELECT username, account_status, last_login FROM dba_users WHERE username = '<ユーザー名>';

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

  • 強固なパスワードポリシー:複雑なパスワードを設定し、定期的に変更を促します。
  • クオータの設定:各ユーザーに適切なクオータを設定し、表領域の使用量を管理します。
  • 最小権限の原則CONNECTと必要最小限の権限を付与し、不必要な権限は与えないようにします。
  • 監査の有効化:重要な操作を監査し、不正アクセスを検知します。
  • アカウントロックポリシー:アカウントを長期間使用しない場合はロックし、利用が再開される際にアンロックする手順を定めます。

実務での活用ポイント

Oracleデータベースでのユーザー管理は、安全性を確保しつつ効率的なアクセス管理を行うことが重要です。セキュリティポリシーを策定し、ユーザーごとに必要な設定を細かく行うことで、データの保護と業務効率の両立が可能となります。

[参考]
SQL言語リファレンス – CREATE USER

コメント

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