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','AUTHENTICATED_IDENTITY') = 'user_domain_name'
user_domain_name
をドメインに置き換えます。たとえば、次のようになります。
SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') = 'myserver.us.example.com'
このルールを新しいルール・セットに追加します。
新しいルール・セットの作成方法は、既存のルールの追加方法も含め、「ルール・セットの作成」で説明されています。
このルール・セットを保護対象のデータベースのレルム認可に追加します。
レルム認可の作成方法は、「レルム認可の定義」で説明されています。「認可ルール・セット」リストで、手順2で作成したルール・セットを選択します。後で、レルム認可がすべてのユーザーに適用されます。
エンタープライズ・ユーザー・セキュリティの詳細は、『Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイド』を参照してください。
データがデータベースのセキュアな範囲外にある場合のデータ保護を提供するという意味で、透過的データ暗号化はOracle Database Vaultを補完するものです。透過的データ暗号化を使用して、データベース管理者またはデータベース・セキュリティ管理者は、アプリケーション表の機密情報の列のみを暗号化したり、アプリケーション表領域全体を暗号化したりできます。アプリケーションを変更する必要はありません。透過的データ暗号化の詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。
ユーザーが認証チェックと認可チェックを通ると、透過的データ暗号化によりユーザーの情報は自動的に暗号化および復号化されます。このように、アプリケーションを変更しなくても暗号化を実装できます。
Oracle Database Vaultと透過的データ暗号化を組み合せて使用するには、最低でもデータベース・ディクショナリ・レルムの参加者としてSYSTEM
ユーザー(または透過的データ暗号化を管理する権限を持つ他のユーザー)を有効にする必要があります。ユーザーのレルムへの追加の詳細は、「ADD_AUTH_TO_REALMプロシージャ」を参照してください。
透過的データ暗号化ユーザーに適切な権限を付与したら、透過的データ暗号化を通常どおり管理でき、Database Vaultを補完するものとして使用できます。
図9-1に、Oracle Database Vaultレルムで暗号化されたデータがどのように処理されるかを示します。
Oracle Virtual Private Databaseにはファクタを追加できます。これを実行するには、PL/SQLファンクションまたはPL/SQL式であるポリシー述語を定義します。その結果、各ファンクションまたは式に対して、ファクタごとに作成されるPL/SQLファンクションDVF.F$
を使用できます。
Oracle Virtual Private Databaseの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
この項の内容は次のとおりです。
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はDVSYS.AUDIT_TRAIL$
システム・ファイルに監査証跡を書き込みます。これについては、付録A「Oracle Database Vaultの監査」に説明されています。
Oracle Database VaultのAPIを使用してOracle Database VaultとOracle Label Securityを統合できます。詳細は、第12章「DBMS_MACADMパッケージの使用方法」を参照してください。
Oracle Label Securityのラベル、レベルおよびポリシーの詳細は、『Oracle Label Security管理者ガイド』を参照してください。
レポートは、Oracle Database Vault-Oracle Label Security統合で実行できます。詳細は、「関連するレポートおよびデータ・ディクショナリ・ビュー」を参照してください。
Oracle Database VaultをOracle Label Securityとともに使用するには、次の要件を満たす必要があります。
Oracle Label Securityは別個にライセンス許可されます。それを使用するためのライセンスを購入済であることを確認してください。
Oracle Database Vaultをインストールする前に、Oracle Label Securityのインストールを済ませておく必要があります。
Oracle Label Securityのインストール・プロセスでLBACSYS
ユーザー・アカウントが作成されます。DV_ACCTMGR
ロールを付与されているユーザーとして、このアカウントをロック解除し、新しいパスワードを付与します。次に例を示します。
sqlplus amalcolm_dvacctmgr Enter password: password ALTER USER LBACSYS ACCOUNT UNLOCK IDENTIFIED BY password;
password
をセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
Oracle Enterprise ManagerでLBACSYS
ユーザー・アカウントを使用する場合、SYSDBA
権限を持つユーザーSYS
としてEnterprise Managerにログインし、このユーザーにSELECT ANY DICTIONARY
およびSELECT_CATALOG_ROLE
システム権限を付与します。
適切なOracle Label Securityポリシーが定義されていることを確認してください。詳細は、『Oracle Label Security管理者ガイド』を参照してください。
Oracle Label SecurityポリシーをDatabase Vaultポリシーと統合する場合、Oracle Label Securityのポリシー名が24文字未満であることを確認します。ALL_SA_POLICIES
データ・ディクショナリ・ビューのPOLICY_NAME
列を問い合せることで、Oracle Label Securityポリシーの名前がチェックできます。
Oracle Database Vaultでは、Oracle Label Securityポリシーに関連付けられているOracle Database Vaultファクタのラベルをマージすることによって、データベース・セッションにおける各ラベルの最大許容データをマージして、データベース・セッションの最大セキュリティ・チェックを制御します。つまり、ラベルは、データベース表の行のアクセス権限に対する識別子として機能します。ポリシーは、表の行へのアクセスを管理するラベル、ルールおよび認可と関連付けられた名前です。行ラベルおよびポリシーの詳細は、『Oracle Label Security管理者ガイド』を参照してください。
次の手順に従って、Oracle Label Securityポリシーの最大許容データ・ラベルに含めるファクタを定義します。
DV_OWNER
またはDV_ADMIN
ロールを付与されているユーザーとしてOracle Database Vault Administratorにログインします。
ログイン方法は、「Oracle Database Vaultの起動」で説明されています。
ユーザー・アカウント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管理者ガイド』を参照してください。マージ・アルゴリズムの指定にDBMS_MACADM
パッケージを使用する場合、使用可能なマージ・アルゴリズムの完全なリストについては、表12-57「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と統合できるかを示します。
DV_ACCTMGR
ロールを付与されているユーザーとしてSQL*Plusにログインします。
次に例を示します。
sqlplus amalcolm_dvacctmgr
Enter password: password
次のユーザーを作成します。
CREATE USER mdale IDENTIFIED BY password; CREATE USER jsmith IDENTIFIED BY password;
password
をセキュアなパスワードに置き換えます。パスワードを作成するための最小限の要件は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
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 amalcolm_dvacctmgr 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 lbrown_dvowner
Enter password: password
次のルール・セットを作成します。
EXEC 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 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 DBMS_MACADM.ADD_RULE_TO_RULE_SET('PII Rule Set', 'Check OLS Factor');
Check OLS Factorルールを同期化します。
EXEC 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 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 lbrown_dvowner
Enter password: password
EXEC DBMS_MACADM.UPDATE_COMMAND_RULE('ALTER SYSTEM', 'Allow System Parameters','%', '%', 'Y');
EXEC DBMS_MACADM.DELETE_RULE_FROM_RULE_SET('PII Rule Set', 'Check OLS Factor');
EXEC DBMS_MACADM.DELETE_RULE('Check OLS Factor');
EXEC DBMS_MACADM.DELETE_RULE_SET('PII Rule Set');
COMMIT;
Database Vaultアカウント・マネージャとして接続し、ユーザーmdale
とユーザーjsmith
を削除します。
CONNECT amalcolm_dvacctmgr
Enter password: password
DROP USER mdale;
DROP USER jsmith;
表9-1に、Oracle Database VaultとOracle Label Securityの統合の分析に便利なOracle Database Vaultレポートを示します。これらのレポートの実行方法の詳細は、第18章「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ポリシーに関する情報を提供するデータ・ディクショナリ・ビューを示します。
表9-2 Oracle Label Securityに使用されるデータ・ディクショナリ・ビュー
データ・ディクショナリ・ビュー | 説明 |
---|---|
|
定義されているOracle Label Securityポリシーが表示されます。 |
「DVSYS.DBA_DV_MAC_POLICY_FACTORビュー」 |
Oracle Label Securityポリシーに関連付けられているファクタが表示されます。 |
「DVSYS.DBA_DV_POLICY_LABELビュー」 |
各ポリシーの |