導入
アカウント運用の基本は oracle のユーザーごとに適切な プロファイル を割り当て、パスワードポリシーやリソース制限を標準化することです。本稿では既存構成を変えずに、最低限の手順と確認SQLを整理します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
本記事のゴールと前提
- 既存のデータベース標準に合わせたプロファイル作成~割当~確認までを最短で実施できるようにする
- 余計な設定は行わず、参照・確認・最小限のDDLに限定
- 環境:Oracle Linux / Oracle Database 19c(非CDB)
【登場要素】
┌───────────┐ ┌────────────┐
│ PROFILE │←───│ DEFAULT │ … 既定プロファイル
└─────┬──────┘ └────────────┘
│ (自社要件に合わせて新規作成)
▼
┌───────────┐
│ PF_APP │ … 新規(例)
└─────┬──────┘
│ ALTER USER PROFILE PF_APP
▼
┌───────────┐
│ USERS │ … アプリ用ユーザー
└───────────┘
プロファイル(Profile)の基本
プロファイルはユーザーに対するポリシーの束(セット)です。大きく分けて次の2系統があります。
- パスワード系:
FAILED_LOGIN_ATTEMPTS/PASSWORD_LOCK_TIME/PASSWORD_LIFE_TIME/PASSWORD_GRACE_TIME/PASSWORD_REUSE_TIME/PASSWORD_REUSE_MAXなど - リソース系:
SESSIONS_PER_USER/CONNECT_TIME/IDLE_TIMEなど- ※リソース系を有効化するには初期化パラメータ
resource_limitを TRUE にする必要があります(後述)
- ※リソース系を有効化するには初期化パラメータ
【適用の流れ(概念)】
LOGIN
├─ パスワード系チェック(常に有効)
└─ リソース系チェック(resource_limit=TRUE のとき適用)
1. 現状の確認(既存ユーザーとプロファイル)
まずは“いま何が割り当たっているか”を見ます。
-- SYS で接続(例:SQL*Plus)
-- $ sqlplus / as sysdba
-- 対象ユーザーのプロファイル名を確認
SELECT username, profile
FROM dba_users
WHERE username IN ('APP_USER', 'SCOTT'); -- 必要に応じて
補足(SQLの読み方)
FROM dba_usersはDB内ユーザー一覧から読み取る、という意味です。WHERE username IN (...)は対象ユーザーを絞り込む条件です。
2. リソース系の適用有無(resource_limit)
リソース系制限を使う場合のみ、現在値を確認・必要なら有効化します。
-- 現在値
SHOW PARAMETER resource_limit;
-- 必要時のみ、有効化(再起動不要)
ALTER SYSTEM SET resource_limit = TRUE SCOPE=BOTH;
補足
SHOW PARAMETERは初期化パラメータの参照です。ALTER SYSTEMはDB全体設定の変更。変更前に標準運用手順を必ず確認してください。
初期化パラメータについてはこちら。
3. 新規プロファイルの作成(例:PF_APP)
アプリ用の標準を1つ作り、そこに必要最小限の制限だけ入れます。値は例なので自社基準に合わせてください。
-- 新規プロファイル(存在しなければ作成)
CREATE PROFILE PF_APP LIMIT
-- パスワード系(例)
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1 -- 1日(N日指定)
PASSWORD_LIFE_TIME 90 -- 90日で有効期限
PASSWORD_GRACE_TIME 7 -- 猶予7日
PASSWORD_REUSE_TIME 365 -- 365日以内の再利用を禁止(REUSE_MAX とどちらか一方)
-- リソース系(例:必要時のみ設定)
SESSIONS_PER_USER 3
CONNECT_TIME 480 -- 分単位(8時間)
IDLE_TIME 30; -- 分単位(無操作時切断)
補足
CREATE PROFILE ... LIMITで項目と上限を列挙します。不要な項目は指定しないかUNLIMITEDを使います。PASSWORD_REUSE_TIMEとPASSWORD_REUSE_MAXは片方だけ使うのが一般的です。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
4. ユーザー作成とプロファイル割当(最小構成)
アプリ用スキーマを新規に作る場合の最低限の例です。
※依頼によりパスワードに @ は使用しません。
-- 表領域 USERS/TEMP の存在は前提(19cデフォルト構成の例)
CREATE USER app_user IDENTIFIED BY StrongP4ssw0rd1
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
PROFILE PF_APP
QUOTA UNLIMITED ON users;
-- 最低限の権限(業務要件に合わせて最小化)
GRANT CREATE SESSION, CREATE TABLE TO app_user;
-- 動作確認用のテーブル(記事ポリシーにより作成例を掲載)
CONN app_user/StrongP4ssw0rd1
CREATE TABLE t_sample (
id NUMBER PRIMARY KEY,
note VARCHAR2(100)
);
INSERT INTO t_sample VALUES (1, 'profile check');
COMMIT;
補足
CREATE USERはスキーマ作成、PROFILE PF_APPで割当。QUOTAは表領域の使用許可量です。UNLIMITEDは簡便ですが、実運用では上限値の設定を推奨します。- パスワードは例です。実環境ではポリシーに従って設定してください(記号を使う場合はダブルクォートで囲みます)。
ユーザーの作成についてはこちら。
5. 既存ユーザーへのプロファイル割当・確認
既存ユーザーを新プロファイルへ切り替える手順です。
-- SYS など権限ユーザーで
ALTER USER app_user PROFILE PF_APP;
-- 当該プロファイルの値を確認(DBA 視点)
SELECT resource_name, limit
FROM dba_profiles
WHERE profile = 'PF_APP'
ORDER BY resource_name;
-- ログイン後、ユーザー自身が見られる有効値
CONN app_user/StrongP4ssw0rd1
SELECT resource_name, limit
FROM user_resource_limits
ORDER BY resource_name;
補足
DBA_PROFILESは定義値、USER_RESOURCE_LIMITSは「いまこのセッションに効いている値」を見ます。- リソース系が効かない場合は
resource_limitの設定を再確認します(手順2)。
よく使うプロファイル項目(抜粋)
| 区分 | 項目 | 役割(要点) |
|---|---|---|
| パスワード | FAILED_LOGIN_ATTEMPTS | 失敗回数のしきい値。超えるとアカウントロック |
| パスワード | PASSWORD_LOCK_TIME | ロック期間(日) |
| パスワード | PASSWORD_LIFE_TIME | 有効期限(日)。0やUNLIMITEDで実質無期限 |
| パスワード | PASSWORD_GRACE_TIME | 期限切れ直前の猶予(日) |
| パスワード | PASSWORD_REUSE_TIME / REUSE_MAX | 過去パスワード再利用の抑止 |
| リソース | SESSIONS_PER_USER | 同時セッション数の上限 |
| リソース | CONNECT_TIME | セッションの最大接続時間(分) |
| リソース | IDLE_TIME | 無操作切断までの時間(分) |
典型的なトラブルと対処のヒント
- アカウントがロックされた(ORA-28000)
ALTER USER <ユーザー> ACCOUNT UNLOCK;で解除。失敗回数の閾値はプロファイルのFAILED_LOGIN_ATTEMPTS。 - パスワード期限の警告(ORA-28002)
利用者側でパスワード変更、もしくは標準運用に従ってPASSWORD_LIFE_TIME/GRACE_TIMEを見直す。 - 過去と同じパスワードに変更できない(ORA-28007)
PASSWORD_REUSE_TIME/REUSE_MAXの制御。変更はプロファイル方針に従う。
セキュリティTips:複雑性(長さ/文字種など)は パスワード検証関数(
PASSWORD_VERIFY_FUNCTION)で制御します。自社標準の関数を作成し、プロファイルへ設定する運用が一般的です。
運用の作法(小さく始めて安全に広げる)
- 新規プロファイルを作る(DEFAULTは触らない)
- パイロットユーザーで影響検証(ロック/期限/切断)
- 監視・ヘルプデスク向けにFAQ化(ロック解除・期限延長の手順)
- 検証完了後、対象グループへ段階的に割当
【段階展開イメージ】
PF_APP(新) ──> パイロット ──> 小規模本番 ──> 全体展開
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
SQL言語リファレンス – CREATE PROFILE
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント