3 データベース・ユーザーの管理
Oracleでは、汎用SYS
アカウントおよびSYSTEM
アカウントではなく、名前付きアカウントを使用することをお薦めします。この項では、データベース・ユーザーを作成し、ロール、レルム、コマンド・ルールおよび認可によって職務を分離する方法について説明します。
Oracle Database Vaultを有効にすると、ロール、レルム、コマンド・ルールおよび認可によって職務の分離が強制されます。例:
- ユーザーを作成するには、
CREATE USER
システム権限を付与されているDV_ACCTMGR
ロールを持っている必要があります。 SELECT ANY TABLE
システム権限を付与されたデータベース・ユーザーからスキーマを保護するには、認可されたユーザーのみにアクセスを制限するレルムを作成します。DROP TABLE
権限を持つユーザーがこのアクションを実行できないようにするには、DROP TABLE
にコマンド・ルールを作成します。- Database Vaultのレルムまたはコマンド・ルールによって保護されている表のOracle Data Pumpインポートを実行するには、Oracle Data Pumpを使用してインポートでき、Database Vault認可が付与されている必要があります。
これらの制御の詳細は、『Oracle Database Vault管理者ガイド』を参照してください。
Oracle Database Vaultを有効にすると、SYS
が特定のアクションを実行できなくなったことが表示されます。これは意図的なものであり、SYS
を、パッチ適用、アップグレードおよび特別な状況以外に使用されるアカウントにしないためです。SYSTEM
アカウントも、必要でないかぎり使用しないアカウントです。SYSTEM
は、1人のユーザーに割り当てることが困難な、非常に特権の高いアカウントです。Oracleでは、共有アカウント(汎用アカウント)ではなく、名前付きアカウント(jsmith、cmack、gkramerなど)を使用することをお薦めします。
たとえば、次の表のように名前付きアカウントを設定して、職務を確実に分離できます。これらのアカウントの設定方法については、次のトピックで学習します。
表3-1 名前付きアカウントの例
ユーザー名 | 場所 | 職責 |
C##DVOWNER |
CDBおよびPDB | Database Vault所有者 |
C##DVOWNER_BACKUP |
CDBおよびPDB | Database Vault所有者バックアップ・アカウント |
C##DVACCTMGR |
CDBおよびPDB | Database Vaultアカウント管理 |
C##DVACCTMGR_BACKUP |
CDBおよびPDB | Database Vaultアカウント管理バックアップ・アカウント |
C##JSMITH |
CDBおよびPDB | DBA、Database Vault所有者およびアカウント・マネージャ |
C##CMACK |
CDBおよびPDB | 監査管理 |
GKRAMER |
PDB | DBA |
HR |
PDB | アプリケーション所有者 |
Oracle Database Vaultは、特権ユーザーがデータベース・ユーザー・アカウントを誤用または悪用しないように保護を試みます。Oracle Database Vaultを構成および有効化したら、ユーザーを作成するには、Oracle Database VaultロールDV_ACCTMGR
が必要です。これは、ALTER USER
、DROP USER
システム権限およびPROFILE
管理システム権限に適用されます。
3.1 名前付きデータベース・アカウントの作成
汎用のSYS
アカウントおよびSYSTEM
アカウントを置き換える名前付きデータベース・アカウントを作成する方法を学習します。
前提条件
「コンテナ・データベースでのDatabase Vaultの構成」中に作成したC##DVACCTMGR
ユーザーなど、DV_ACCTMGR
ロールが付与されているアカウントがあること。このユーザーには、アカウントを作成し、DV_ACCTMGR
ロールを他のユーザーに付与する権限が必要です。
DV_ACCTMGR
ロールを付与されているユーザーとして接続します:connect c##dvacctmgr
- 名前付きユーザー・アカウント
C##JSMITH
を作成し、DV_ACCTMGR
ロールを付与します:CREATE USER C##JSMITH IDENTIFIED BY <password> CONTAINER=ALL; GRANT DV_ACCTMGR TO C##JSMITH WITH ADMIN OPTION CONTAINER=ALL;
DV_OWNER
ロールを付与されたユーザーとして接続します:connect c##dvowner
- ロールを他のユーザーに渡すことができる
DV_ADMIN
のロールをJSMITH
に付与します:GRANT DV_ADMIN TO C##JSMITH WITH ADMIN OPTION CONTAINER=ALL;
DV_ADMIN WITH ADMIN OPTION
を付与すると、JSMITH
はポリシー、レルム、コマンド・ルールおよびルール・セットを作成、管理および削除できますが、Oracle Database Vaultを無効にすることはできません。これらの権限は、DV_OWNER
に付与される権限のサブセットです。このロールを名前付きアカウントに付与すると、共有アカウント(
C##DVOWNER
、C##DVOWNER_BACKUP
、C##DVACCTMGR
、C##DVACCTMGR_BACKUP
)を安全に格納でき、緊急時にのみ使用できるようになります。日常的な操作は、自分の名前付き資格証明を使用しているデータベース・ユーザーが完了する必要があります。 SYSDBA
ユーザーとして接続します:connect / as sysdba
- ユーザーが他のデータベース・ユーザーに権限を転送して付与できるように、
DBA
ロールをC##JSMITH
に付与し、WITH ADMIN OPTION
を含めます:GRANT DBA TO C##JSMITH WITH ADMIN OPTION CONTAINER=ALL; GRANT RESOURCE TO C##JSMITH WITH ADMIN OPTION CONTAINER=ALL; GRANT AUDIT_ADMIN TO C##JSMITH WITH ADMIN OPTION CONTAINER=ALL;
ノート:
Oracleでは、DBA
ロールを使用するのではなく、カスタム・ロールにシステム権限およびオブジェクト権限のサブセットを作成することをお薦めします。