Oracle Database Vaultは、Oracle Enterprise User Securityと統合できます。エンタープライズ・ユーザー・セキュリティは、データベースのユーザーおよび認可を1箇所で集中的に管理することを可能にします。エンタープライズ・ユーザー・セキュリティはOracle Identity Managementと組み合されており、Oracle Database Enterprise Editionで使用できます。
通常、Oracle Database VaultをOracle Enterprise User Securityと統合するには、適切なレルムを構成して、保護の対象となるデータベース内のデータを保護します。
必要に応じてOracle Database Vaultロールを定義した後に、エンタープライズ・ユーザーに対してアクセスを許可または禁止するルール・セットを作成できます。
エンタープライズ・ユーザーの認可を構成するには、次のようにします。
ユーザー・アクセスを許可または禁止するルールを作成します。
「ルール・セットに追加するルールの作成」の説明に従って新しいルールを作成します。「ルールの作成」ページで、次のPL/SQLを「ルール式」フィールドに入力します。
SYS_CONTEXT('USERENV','EXTERNAL_NAME') = 'user_domain_name'
user_domain_nameをドメインに置き換えます。たとえば、次のようになります。
SYS_CONTEXT('USERENV','EXTERNAL_NAME') = 'myserver.us.example.com'
このルールを新しいルール・セットに追加します。
新しいルール・セットの作成方法は、既存のルールの追加方法も含め、「ルール・セットの作成」で説明されています。
このルール・セットを保護対象のデータベースのレルム認可に追加します。
レルム認可の作成方法は、「レルム認可の定義」で説明されています。「認可ルール・セット」リストで、手順2で作成したルール・セットを選択します。後で、レルム認可がすべてのユーザーに適用されます。
エンタープライズ・ユーザー・セキュリティの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。
Oracle Database Vaultは、透過的データ暗号化(TDE)と連携して機能します。透過的データ暗号化により、アプリケーション管理者は1行のコマンドを使用して表の変更および列の暗号化ができます。その表の列に対する後続の挿入は、SQLに対して透過的に暗号化されてディスクに書き込まれます。つまり、SQLの変更、データベース・トリガー、ビューはまったく必要ありません。
ユーザーが認証チェックと認可チェックを通ると、透過的データ暗号化によりユーザーの情報は自動的に暗号化および復号化されます。このように、アプリケーションを変更しなくても暗号化を実装できます。
したがって、透過的データ暗号化を有効にすると、Oracle Database Vaultは透過的データ暗号化とシームレスに連携して機能し、追加構成は必要ありません。また、透過的データ暗号化は、Oracle Database Vault環境で追加構成して有効にすることもできます。
図9-1に、Oracle Database Vaultレルムで暗号化されたデータがどのように処理されるかを示します。
Oracle Virtual Private Databaseにはファクタを追加できます。これを実行するには、PL/SQLファンクションまたはPL/SQL式であるポリシー述語を定義します。その結果、各ファンクションまたは式に対して、ファクタごとに作成されるPL/SQLファンクションDVF.F$を使用できます。
この項の内容は次のとおりです。
Oracle Database VaultとOracle Label Securityを統合するということは、Oracle Label SecurityラベルをOracle Database Vaultファクタ・アイデンティティに割り当てることができるということです。
Oracle Label Securityでは、データベース表またはPL/SQLプログラムのレコードへのアクセスを制限できます。たとえば、アクセスを特定の管理者に限定する必要があるレコードを含むEMPLOYEE表の、HIGHLY SENSITIVEラベル(Oracle Label Securityラベル)で保護されたデータをMaryは参照できます。もう1つのラベルを、このデータへのよりオープンなアクセスを許可するPUBLICとすることができます。
Oracle Database Vaultでは、データベース・セッションが発生するネットワーク用に、次のアイデンティティを指定してNetworkというファクタを作成できます。
Intranet: 従業員が会社のイントラネット内の場所で作業している場合に使用します。
Remote: 従業員がVPN接続から在宅で作業している場合に使用します。
次に、両方のアイデンティティに最大のセッション・ラベルを割り当てます。たとえば、次のようになります。
IntranetアイデンティティをOracle Label SecurityラベルのHIGHLY SENSITIVEに割り当てます。
RemoteアイデンティティをPUBLICラベルに割り当てます。
つまり、MaryがVPN接続を使用して在宅で作業している場合は、PUBLICアイデンティティのもとに保護される、限定された表データにのみアクセスできます。しかし、職場にいる場合は、Intranetアイデンティティを使用しているため、HIGHLY SENSITIVEデータにアクセスできます。「チュートリアル: Oracle Database VaultとOracle Label Securityの統合」に、このような統合を実現する方法の例を示します。
Oracle Label Securityとの統合は、「Label Security統合の監査」レポートを使用して監査できます。詳細は、「「Label Security統合の監査」レポート」を参照してください。
Oracle Database VaultのAPIを使用してOracle Database VaultとOracle Label Securityを統合できます。詳細は、第11章「DVSYS.DBMS_MACADMパッケージの使用方法」を参照してください。
Oracle Label Securityのラベル、レベルおよびポリシーの詳細は、『Oracle Label Security管理者ガイド』を参照してください。
レポートは、Oracle Database Vault-Oracle Label Security統合で実行できます。詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。
Oracle Database VaultをOracle Label Securityとともに使用するには、次の要件を満たす必要があります。
Oracle Label Securityは別個にライセンス許可されます。Oracle Label Securityを使用するためのライセンスを購入済であることを確認してください。
Oracle Database Vaultをインストールする前に、Oracle Label Securityのインストールを済ませておく必要があります。
適切なOracle Label Securityポリシーが定義されていることを確認してください。詳細は、『Oracle Label Security管理者ガイド』を参照してください。
Oracle Database Vaultでは、Oracle Label Securityポリシーに関連付けられているOracle Database Vaultファクタのラベルをマージすることによって、データベース・セッションにおける各ラベルの最大許容データをマージして、データベース・セッションの最大セキュリティ・チェックを制御します。つまり、ラベルは、データベース表の行のアクセス権限に対する識別子として機能します。ポリシーは、表の行へのアクセスを管理するラベル、ルールおよび認可と関連付けられた名前です。行ラベルおよびポリシーの詳細は、『Oracle Label Security管理者ガイド』を参照してください。
次の手順に従って、Oracle Label Securityポリシーの最大許容データ・ラベルに含めるファクタを定義します。
Database Vault所有者(DV_OWNER)ロールが付与されているデータベース・アカウントを使用して、Oracle Database Vault Administratorにログインします。
少なくとも、DV_ADMINロールを持っている必要があります。ログイン方法は、「Oracle Database Vault Administratorの起動」で説明されています。
ユーザー・アカウントLBACSYSを、Label Securityポリシーが適用されているスキーマを含むレルムの所有者にします。
これにより、レルム内で保護されているすべてのデータへのアクセス権がLBACSYSアカウントに付与され、データを適切に分類できるようになります。
LBACSYSアカウントは、Oracle Universal Installerのカスタム・インストール・オプションを使用してOracle Label Security内に作成されます。Oracle Database Vaultとともに使用するOracle Label Securityポリシーを作成するには、LBACSYSを使用予定のレルムの所有者にする必要があります。詳細は、「レルム認可の定義」を参照してください。
「管理」ページの「Database Vault機能管理」で、「Label Security統合」をクリックします。
「Label Securityポリシー」ページで次のようにします。
新しいLabel Securityポリシーを登録するには、「作成」をクリックします。
既存のLabel Securityポリシーを編集するには、リストからLabel Securityポリシーを選択して「編集」をクリックします。
次の設定を入力した後、「OK」をクリックします。
一般
「一般」で次の設定を入力します。
Label Securityポリシー: リストから使用するOracle Label Securityポリシーを選択します。
アルゴリズム: Oracle Label Securityで2つのラベルをマージしている場合、ラベルマージ・アルゴリズムを必要に応じて変更します。ほとんどの場合、「LII - 最小レベル/論理積/論理積」を選択します。この設定は、Oracle Label Security管理者が2つのラベルをマージする際に最も一般的に使用する方法です。この設定により、ラベルが異なる2つのデータ・セットを組み合せる際に必要な結果のラベルをアプリケーションで特定する必要がある場合に、最適な柔軟性が提供されます。これは、データ・ラベルが異なる行で結合を使用して問合せを実行する必要がある場合にも必要です。
これらのラベルマージ・アルゴリズムの詳細は、『Oracle Label Security管理者ガイド』を参照してください。マージ・アルゴリズムの指定にDVSYS.DBMS_MACADMパッケージを使用する場合、使用可能なマージ・アルゴリズムの完全なリストについては、表11-62「Oracle Label Securityマージ・アルゴリズム・コード」を参照してください。
初期化エラーのラベル: 必要に応じて、初期化エラーのラベルを入力します。初期化エラーに指定されたラベルは、セッションを初期化する際に構成エラーまたはランタイム・エラーが発生すると設定されます。この設定を使用してセッションにデータ・ラベルを割り当て、ポリシーによって保護されるデータに対するアクセスまたは更新を、問題が解決するまで抑制することができます。
Label Securityポリシー・ファクタ
Oracle Label Securityポリシーと関連付けるファクタを選択するには、次のようにします。
「Label Securityポリシー・ファクタ」の「使用可能なファクタ」リストから、Oracle Label Securityポリシーと関連付けるファクタを選択します。
「移動」をクリックして、ファクタを「選択したファクタ」リストに移動します。
|
注意: [Ctrl]キーを押しながら必要な各ファクタをクリックすると、複数のファクタを選択できます。 |
ファクタをOracle Label Securityポリシーと関連付けると、ポリシーのラベルを使用してファクタ・アイデンティティにラベルを付けることができます。詳細は、「ファクタへのアイデンティティの追加」を参照してください。
|
注意: Oracle Label Securityポリシーをファクタと関連付けない場合、Oracle Database Vaultではポリシーに対するOracle Label Securityのデフォルト動作が維持されます。 |
Oracle Database VaultファクタをOracle Label SecurityおよびOracle Virtual Private Database(VPD)テクノロジとともに使用すると、機密データへのアクセスを制限できます。このようなデータを制限して、セキュリティ管理者が任意のデータ・セッションに対して定義するファクタの適切な組合せが存在する場合にのみデータベース・セッションに公開されるようにすることができます。
このチュートリアルでは、通常同じ権限を持つ2人の管理ユーザーに異なるレベルのアクセス権限を付与するために、どのようにOracle Database VaultをOracle Label Securityと統合できるかを示します。
このチュートリアルの内容は次のとおりです。
Oracle Database Vaultアカウント・マネージャとしてSQL*Plusにログインします。
たとえば、次のようになります。
sqlplus dbvacctmgr
Enter password: password
次のユーザーを作成します。
CREATE USER mdale IDENTIFIED BY password; CREATE USER jsmith IDENTIFIED BY password;
SYSDBA権限を持つユーザーSYSとして接続し、ユーザーmdaleとユーザーjsmithに管理権限を付与します。
CONNECT SYS/AS SYSDBA
Enter password: password
GRANT CREATE SESSION, DBA TO mdale, jsmith;
この段階で、ユーザーmdaleとユーザーjsmithは、同じ管理権限を持ちます。
SQL*Plusで、Oracle Label Security管理者LBACSYSとして接続します。
CONNECT LBACSYS
Enter password: password
ユーザーLBACSYSがロックされて無効になっている場合、Database Vaultアカウント・マネージャとして接続し、LBACSYSアカウントのロックを解除して有効にしてから、LBACSYSとして再びログインします。
たとえば、次のようになります。
CONNECT dbvacctmgr Enter password: password ALTER USER LBACSYS ACCOUNT UNLOCK IDENTIFIED BY password; CONNECT LBACSYS Enter password: password
新規のOracle Label Securityポリシーを作成します。
EXEC SA_SYSDBA.CREATE_POLICY('PRIVACY','PRIVACY_COLUMN','NO_CONTROL');
PRIVACYポリシーに次のレベルを作成します。
EXEC SA_COMPONENTS.CREATE_LEVEL('PRIVACY',2000,'S','SENSITIVE');
EXEC SA_COMPONENTS.CREATE_LEVEL('PRIVACY',1000,'C','CONFIDENTIAL');
PII区分を作成します。
EXEC SA_COMPONENTS.CREATE_COMPARTMENT('PRIVACY',100,'PII','PERS_INFO');
ユーザーmdaleとユーザーjsmithに次のラベルを付与します。
EXEC SA_USER_ADMIN.SET_USER_LABELS('PRIVACY','mdale','S:PII');
EXEC SA_USER_ADMIN.SET_USER_LABELS('PRIVACY','jsmith','C');
ユーザーmdaleは、PII区分を含むより機密性の高いラベル、Sensitiveを付与されます。ユーザーjsmithは、機密性の低いConfidentialラベルを取得します。
Database Vault所有者としてSQL*Plusに接続します。
たとえば、次のようになります。
CONNECT dbvowner
Enter password: password
次のルール・セットを作成します。
EXEC DVSYS.DBMS_MACADM.CREATE_RULE_SET('PII Rule Set',
'Protect PII data from privileged users','Y',1,0,2,NULL,NULL,0,NULL);
PII Rule Setにルールを作成します。
EXEC DVSYS.DBMS_MACADM.CREATE_RULE('Check OLS Factor',
'dominates(sa_utl.numeric_label(''PRIVACY''),
char_to_label(''PRIVACY'',''S:PII'')) = ''1''');
この例のように、二重引用符ではなく、必ず一重引用符を使用してください。
Check OLS FactorルールをPII Rule Setに追加します。
EXEC DVSYS.DBMS_MACADM.ADD_RULE_TO_RULE_SET('PII Rule Set',
'Check OLS Factor');
Check OLS Factorルールを同期化します。
EXEC DVSYS.DBMS_MACADM.SYNC_RULES; COMMIT;
Database Vault所有者として、ALTER SYSTEMコマンド・ルールの現行値を確認します。このコマンド・ルールは、Oracle Database Vaultインストール時のデフォルト・コマンド・ルールの1つです。
SELECT * FROM DVSYS.DBA_DV_COMMAND_RULE WHERE COMMAND = 'ALTER SYSTEM';
後で元の値に戻せるように、これらの設定をメモします。
デフォルトのインストールでは、ALTER SYSTEMコマンド・ルールはAllow System Parametersルール・セットを使用し、オブジェクト所有者またはオブジェクト名がなく、有効になっています。
ALTER SYSTEMコマンド・ルールを更新して、PII Rule Setを含めます。
EXEC DVSYS.DBMS_MACADM.UPDATE_COMMAND_RULE('ALTER SYSTEM', 'PII Rule Set', '%', '%', 'Y');
このコマンドでは、PII Rule SetをALTER SYSTEMコマンド・ルールに追加し、すべてのオブジェクト所有者およびオブジェクト名に適用し、コマンド・ルールを有効にします。
ユーザーmdaleとしてSQL*Plusにログインします。
CONNECT mdale
Enter password: password
AUDIT_TRAIL初期化パラメータの現行設定を確認します。
SHOW PARAMETER AUDIT_TRAIL NAME TYPE VALUE ------------------------------------ ----------- ---------------------- audit_trail string DB
後で元の設定に戻せるように、これらの設定をメモします。
ユーザーmdaleとして、ALTER SYSTEM文を使用し、AUDIT_TRAILパラメータを変更します。
ALTER SYSTEM SET AUDIT_TRAIL=OS, EXTENDED SCOPE=SPFILE; System altered.
ユーザーmdaleはPII区分を含むSensitiveラベルを割り当てられたので、ALTER SYSTEM文を使用して、AUDIT_TRAILシステム・パラメータを変更できます。
AUDIT_TRAILパラメータを、たとえば次のように元の値に戻します。
ALTER SYSTEM SET AUDIT_TRAIL=DB, EXTENDED SCOPE=SPFILE;
ユーザーjsmithとしてログインし、同じALTER SYSTEM文を発行します。
CONNECT jsmith
Enter password: password
ALTER SYSTEM SET AUDIT_TRAIL=OS, EXTENDED SCOPE=SPFILE;
次のような出力結果が表示されます。
ERROR at line 1: ORA-01031: insufficient privileges
ユーザーjsmithはConfidentialラベルしか割り当てられていないので、ALTER SYSTEM文を実行できません。
ここで通常ALTER SYSTEM権限を持つユーザーSYSTEMとしてログインし、同じALTER SYSTEM文を発行します。
CONNECT SYSTEM
Enter password: password
次のような出力結果が表示されます。
ERROR at line 1: ORA-01031: insufficient privileges
SYSTEMに、ALTER SYSTEM文を実行するための十分な権限がなくなっています。ユーザーmdaleのように、Sensitiveラベルを割り当てられているユーザーのみが、ALTER SYSTEM文を使用できます。
Oracle Label Security管理者として接続し、ラベル・ポリシーとそのコンポーネントを削除します。
CONNECT LBACSYS
Enter password: password
EXEC SA_SYSDBA.DROP_POLICY('PRIVACY', TRUE);
Oracle Database Vault所有者として接続し、次のコマンドを示した順序で発行し、ALTER SYSTEMコマンド・ルールを以前の設定に戻して、ルール・セットを削除します。
たとえば、次のようになります。
CONNECT dbvowner
Enter password: password
EXEC DVSYS.DBMS_MACADM.UPDATE_COMMAND_RULE('ALTER SYSTEM', 'Allow System Parameters','%', '%', 'Y');
EXEC DVSYS.DBMS_MACADM.DELETE_RULE_FROM_RULE_SET('PII Rule Set', 'Check OLS Factor');
EXEC DVSYS.DBMS_MACADM.DELETE_RULE('Check OLS Factor');
EXEC DVSYS.DBMS_MACADM.DELETE_RULE_SET('PII Rule Set');
COMMIT;
Database Vaultアカウント・マネージャとして接続し、ユーザーmdaleとユーザーjsmithを削除します。
CONNECT dbvacctmgr
Enter password: password
DROP USER mdale;
DROP USER jsmith;
表9-1に、Oracle Database VaultとOracle Label Securityの統合の分析に便利なOracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、第16章「Oracle Database Vaultレポート」を参照してください。
表9-1 Oracle Database Vault-Oracle Label Security統合に関連するレポート
| レポート | 説明 |
|---|---|
|
|
Oracle Label Securityポリシーが存在しないファクタが表示されます。 |
|
|
無効なラベル・アイデンティティ(このアイデンティティのOracle Label Securityラベルが削除されていて、すでに存在しない)が表示されます。 |
|
|
|
表9-2に、Oracle Database Vaultで使用される既存のOracle Label Securityポリシーに関する情報を提供するデータ・ディクショナリ・ビューを示します。