この記事では、CDBやPDBのユーザー管理など、マルチテナントデータベースにおけるセキュリティ管理について解説します。
CDBのユーザーとロール
CDBにおける権限管理の基本的な枠組みは、非CDBと同様です。
- ユーザーは使用者を識別する「認証の単位」となる
- ユーザーは付与された権限に応じた操作を実行できる
- ユーザーはオブジェクトの所有者となる
- ロールは「権限やロールを論理的にグループ化したもの」
CDBにおけるユーザー
共通ユーザーは、主にCDBとPDB内のすべてのPDBのデータベース管理のために使用する。
ローカルユーザーは、いわゆる従来型の非CDBにおけるアプリケーション用のユーザーに対応する。
共通ユーザーとローカルユーザーの説明をまとめると以下の通り。
| ユーザー | 説明 |
| 共通ユーザー | CDB全体に存在するユーザー CDBルートで作成する SYS、SYSTEMユーザーは事前作成済みの共有ユーザー ユーザー作成の共通ユーザーの名前は[C##]を前置きする必要がある |
| ローカルユーザー | 特定のPDBにのみ存在するユーザー PDBごとに独立 従来型(非CDB)のユーザーに対応 |
CDBにおけるロール
ロールにおいても、CDB全体いに存在する共通のロールと、特定のPDBにのみ存在するローカルロールの2種類があります。
共通ロールとローカルルール:
| ロールの種別 | 説明 |
| 共通ロール | CDB全体 CDBルートで作成する DBAロールは事前作成済みの共通ロール ユーザー作成の共通ロールの名前は[C##]を前置きする必要がある |
| ローカルロール | 特定のPDBにのみ存在するロール PDBごとに独立 従来型のロールに対応 |
CDBおよびPDBのユーザー監査
Oracle の監査機能
Oracleには様々な監査機能があります。以下はOracleに搭載されている主な監査機能とその説明です。
| 監査機能 | 説明 |
| 必須監査 | SYSDBAおよびSYSOPERでの接続、DBの起動停止をOS監査追跡に出力する |
| 管理権限監査 | SYSDBAおよびSYSOPERなどの管理権限を持つユーザーの操作をOS監査証跡に出力する AUDIT_SYS_OPERATIONS初期化パラメータに監査の有効無効を設定できる |
| 標準監査 | AUDIT文で指定された操作を監査証跡に出力する AUDIT_TRAIL初期化パラメータに監査の有無、監査証跡の出力先、出力形式を設定できる |
| ファイングレン監査 | 詳細な監査動作を実現できる DBMS_FGAパッケージを用いて監査設定を行う |
| 統合監査 | Oracle 12cから導入された監査機能 CREATE AUDIT POLICY文で監査条件を構成した監査ポリシーを作成し、AUDIT POLICY文でどのユーザーに対してどの監査ポリシーを適用するかを指定する |
混合モード
インストール直後の状態では、従来の監査機能と統合監査が共に動作した状態です。これを混合モードと呼びます。
トップレベル文のみ監査
Oracle 19cから、トップレベルの文のみを監査可能になっています。これにはONLY TOPLEVEL句を指定して監査ポリシーを作成します。トップレベル文のみを監査すると、多数のSQLを実行するストアドプログラムを実行した時、ストアドプログラムの実行のみが監査ログに出力され、ストアドプログラムが実行するSQLは監査ログに出力されないようになります。