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_status
やlast_login
フィールドでアカウントの状態と最終ログイン時刻を確認できるため、異常な動きを監視する際に役立ちます。
SELECT username, account_status, last_login FROM dba_users WHERE username = '<ユーザー名>';
10. セキュリティのベストプラクティス
- 強固なパスワードポリシー:複雑なパスワードを設定し、定期的に変更を促します。
- クオータの設定:各ユーザーに適切なクオータを設定し、表領域の使用量を管理します。
- 最小権限の原則:
CONNECT
と必要最小限の権限を付与し、不必要な権限は与えないようにします。 - 監査の有効化:重要な操作を監査し、不正アクセスを検知します。
- アカウントロックポリシー:アカウントを長期間使用しない場合はロックし、利用が再開される際にアンロックする手順を定めます。
実務での活用ポイント
Oracleデータベースでのユーザー管理は、安全性を確保しつつ効率的なアクセス管理を行うことが重要です。セキュリティポリシーを策定し、ユーザーごとに必要な設定を細かく行うことで、データの保護と業務効率の両立が可能となります。
[参考]
SQL言語リファレンス – CREATE USER
コメント