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 USERDROP USERシステム権限およびPROFILE管理システム権限に適用されます。

3.1 名前付きデータベース・アカウントの作成

汎用のSYSアカウントおよびSYSTEMアカウントを置き換える名前付きデータベース・アカウントを作成する方法を学習します。

前提条件

「コンテナ・データベースでのDatabase Vaultの構成」中に作成したC##DVACCTMGRユーザーなど、DV_ACCTMGRロールが付与されているアカウントがあること。このユーザーには、アカウントを作成し、DV_ACCTMGRロールを他のユーザーに付与する権限が必要です。

  1. DV_ACCTMGRロールを付与されているユーザーとして接続します:
    connect c##dvacctmgr
  2. 名前付きユーザー・アカウントC##JSMITHを作成し、DV_ACCTMGRロールを付与します:
    CREATE USER C##JSMITH IDENTIFIED BY <password> CONTAINER=ALL;
    GRANT DV_ACCTMGR TO C##JSMITH WITH ADMIN OPTION CONTAINER=ALL;
  3. DV_OWNERロールを付与されたユーザーとして接続します:
    connect c##dvowner
  4. ロールを他のユーザーに渡すことができる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##DVOWNERC##DVOWNER_BACKUPC##DVACCTMGRC##DVACCTMGR_BACKUP)を安全に格納でき、緊急時にのみ使用できるようになります。日常的な操作は、自分の名前付き資格証明を使用しているデータベース・ユーザーが完了する必要があります。

  5. SYSDBAユーザーとして接続します:
    connect / as sysdba
  6. ユーザーが他のデータベース・ユーザーに権限を転送して付与できるように、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ロールを使用するのではなく、カスタム・ロールにシステム権限およびオブジェクト権限のサブセットを作成することをお薦めします。