Oracleデータベース プロファイル設定ガイド

Oracle Master Silver

導入

アカウント運用の基本は 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_limitTRUE にする必要があります(後述)
【適用の流れ(概念)】
 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_TIMEPASSWORD_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)で制御します。自社標準の関数を作成し、プロファイルへ設定する運用が一般的です。


運用の作法(小さく始めて安全に広げる)

  1. 新規プロファイルを作る(DEFAULTは触らない)
  2. パイロットユーザーで影響検証(ロック/期限/切断)
  3. 監視・ヘルプデスク向けにFAQ化(ロック解除・期限延長の手順)
  4. 検証完了後、対象グループへ段階的に割当
【段階展開イメージ】
PF_APP(新) ──> パイロット ──> 小規模本番 ──> 全体展開

本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。

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

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

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

コメント

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