Oracleのマルチテナント環境(CDB/PDB)を使用していると、各PDBで使用できる機能を制限したいという場面が出てきます。
「セキュリティ上、UTL_FILEを使わせたくない」「一部のPDBでALTER SYSTEM文を無効化したい」といった要件に応えるのが、ロックダウン・プロファイル(Lockdown Profile)です。
この記事では、その概要から実践的なSQL例、確認方法まで、図解を交えてわかりやすく解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
🔐 1. ロックダウン・プロファイルとは?
ロックダウン・プロファイルとは、PDBごとに使用可能な操作や機能を制限できる仕組みです。
設定されたプロファイルは、PDB単位で割り当てることで、不正操作や意図しないシステム設定変更を防ぐための重要なセキュリティ対策となります。
📊 2. テキスト図:PDBロックダウンのイメージ
+--------------------------+
| CDB$ROOT |
| (共通ユーザーで作成) |
+------------+-------------+
|
+---------+---------+
| |
+--v--+ +---v--+
|PDB1 | |PDB2 |
+-----+ +------+
| lockdown_profile: pdb_secure |
| 許可されない操作: |
| - UTL_FILE |
| - ALTER SYSTEM |
+-----------------------------+
🛠 3. ロックダウン・プロファイルの作成手順
ステップ①:CDB$ROOTでプロファイルを作成
-- CDB$ROOTにてSYSユーザーで実行
CREATE LOCKDOWN PROFILE pdb_secure;
ステップ②:制限したい機能・操作を無効化する
-- 代表的な制限例
ALTER LOCKDOWN PROFILE pdb_secure DISABLE FEATURE = ('UTL_FILE');
ALTER LOCKDOWN PROFILE pdb_secure DISABLE STATEMENT = ('ALTER SYSTEM');
これにより、対象のPDBではUTL_FILEパッケージが利用できなくなり、ALTER SYSTEM文の実行も制限されます。
ステップ③:作成したプロファイルをPDBに適用
-- 対象のPDBに接続
ALTER SESSION SET CONTAINER = PDB1;
-- プロファイル適用
ALTER SYSTEM SET PDB_LOCKDOWN = pdb_secure;
設定はPDB_LOCKDOWN初期化パラメータにより適用され、再起動不要で即反映されます。
🔍 4. ロックダウン・プロファイルの確認方法
Oracleは、設定された制限内容を確認するためのビュー DBA_LOCKDOWN_PROFILESを提供しています。
ここでは実用的な列の絞り込み方法やフィルター条件付きSQLをご紹介します。
✅ 現在のPDBに適用されているプロファイルの確認
SHOW PARAMETER pdb_lockdown;
✅ 全プロファイルの制限内容を一覧表示
SELECT * FROM DBA_LOCKDOWN_PROFILES;
✅ プロファイル名・制限タイプ・内容だけを絞って見る
SELECT PROFILE_NAME, RULE_TYPE, RULE
FROM DBA_LOCKDOWN_PROFILES
WHERE PROFILE_NAME = 'PDB_SECURE';
✅ 特定の機能(例:UTL_FILE)を制限しているプロファイルを確認
SELECT PROFILE_NAME, RULE_TYPE, RULE
FROM DBA_LOCKDOWN_PROFILES
WHERE RULE = 'UTL_FILE';
✅ ALTER SYSTEM文を制限しているプロファイルだけを確認
SELECT PROFILE_NAME
FROM DBA_LOCKDOWN_PROFILES
WHERE RULE_TYPE = 'STATEMENT'
AND RULE = 'ALTER SYSTEM';
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE LOCKDOWN PROFILE pdb_secure;
ロックダウン・プロファイルが作成されました。
SQL> ALTER LOCKDOWN PROFILE pdb_secure DISABLE STATEMENT = ('ALTER SYSTEM');
ロックダウン・プロファイルが変更されました。
SQL> ALTER LOCKDOWN PROFILE pdb_secure DISABLE FEATURE = ('UTL_FILE');
ロックダウン・プロファイルが変更されました。
SQL> ALTER SESSION SET CONTAINER = PDB01;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
PDB01
SQL> ALTER SYSTEM SET PDB_LOCKDOWN = pdb_secure;
システムが変更されました。
SQL> ALTER SYSTEM SET sql_trace = TRUE;
ALTER SYSTEM SET sql_trace = TRUE
*
行1でエラーが発生しました。:
ORA-01031: 権限が不足しています
SQL> set lin 1000 pages 1000
SQL> SHOW PARAMETER pdb_lockdown
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
pdb_lockdown string PDB_SECURE
SQL> ALTER SESSION SET CONTAINER = CDB$ROOT;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> col profile_name for a30
SQL> col rule for a30
SQL> col rule_type for a30
SQL> SELECT PROFILE_NAME, RULE_TYPE, RULE
2 FROM DBA_LOCKDOWN_PROFILES
3 WHERE PROFILE_NAME = 'PDB_SECURE';
PROFILE_NAME RULE_TYPE RULE
------------------------------ ------------------------------ ------------------------------
PDB_SECURE FEATURE UTL_FILE
PDB_SECURE STATEMENT ALTER SYSTEM
SQL>
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
📋 5. 制限可能なカテゴリ一覧
| RULE_TYPE | 説明 | 例 |
|---|---|---|
| STATEMENT | SQL文単位の制限 | ALTER SYSTEM、ALTER SESSION |
| FEATURE | 機能・パッケージの制限 | UTL_FILE、XDB_PROTOCOLS |
| OPTION | Oracleオプションの制限 | JAVA、PARTITIONINGなど |
制限対象によっては、内部的な操作が影響を受ける場合があるため、適用前にテスト環境で十分に検証しましょう。
⚠ 6. 注意点・ベストプラクティス
- プロファイルの作成と変更はCDB$ROOTでのみ実施可能
PDB_LOCKDOWNの設定はSPFILEにも設定可能ですが、動的パラメータとして即時適用も可能- 誤った制限設定はPDBの一部機能に重大な影響を及ぼす可能性があるため、段階的な導入が推奨されます
✅ 7. まとめ
PDBロックダウン・プロファイルは、マルチテナント環境のセキュリティ制御を強化する鍵となる機能です。
特にSaaS型アーキテクチャや、複数の開発チームが共存する環境において、PDB単位での操作制限は極めて有効です。
Oracle Multitenantを活用している方は、ぜひこのプロファイル機能を取り入れて、より強固で柔軟な運用設計を目指してみてください。
[参考]
4 CDBの作成および構成
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント