申し訳ございません。検索条件に一致するものが見つかりませんでした。

お探しのものを見つけるために、以下の項目を試してみてください。

  • キーワード検索のスペルを確認してください。
  • 入力したキーワードの同義語を使用してください。たとえば、「ソフトウェア」の代わりに「アプリケーション」を試してみてください。
  • 新しい検索を開始してください。
Oracle Label Security

Oracle Label Security

Oracle Label SecurityとOracle Virtual Private Databaseを使用して機密データを不正なアクセスから守る

Oracle Label Security(OLS)

Oracle Label Security(OLS)は、データベースの他の多くのセキュリティ機能と連携して、きめ細かなデータアクセス要件に応えます。Virtual Private Database(VPD)はOLSと連携して、列に格納された機密データを保護します。

ラベル・セキュリティポリシーの作成

Oracle Label Securityは、ユーザー認可ラベルとデータ分類ラベル(行ラベル)の2つの部分で構成されています。ユーザーの認可ラベルとデータ分類ラベルを比較することで、行へのアクセス権が決定されます。ただしこの例では、OLSポリシーはテーブルに適用されず、保護対象のテーブルに列は追加されません(列が追加される場合は、その列に行ラベルが格納されます)。しかし、ポリシーを最初に作成する際には、追加の列に必ず名前を付ける必要があります。このポリシーはテーブルに添付されないため、デフォルトのポリシー適用オプションを「NO_CONTROL」に設定できます。そうすると、真にアクティブなポリシーに起因するオーバーヘッドが最小限に抑えられます。

ラベル・セキュリティポリシーの一般設定の編集

スクリプトを使用して同じ結果を得るには、次のようにします。



 
 Begin
 SA_SYSDBA.CREATE_POLICY
 policy_name => 'PROTECT_PII'
 column_name => 'OLS_COLUMN',
 default_options => 'NO_CONTROL');
 END;
 /
 
ラベルコンポーネントの定義

ラベルは、レベル(必須)、コンパートメント(オプション)、グループ(オプション)の3つのコンポーネントで構成されています。この例では、レベルは「Confidential」と「Sensitive」、コンパートメントは「PII」で、グループは使用されていません。

ラベル・セキュリティポリシーのラベルコンポーネントの編集

スクリプトを使用して同じ結果を得るには、次のようにします。



 
 
 BEGIN
 SA_COMPONENTS.CREATE_LEVEL (
 policy_name => 'PROTECT_PII',
 level_num => 1000,
 short_name => 'C',
 long_name => 'CONFIDENTIAL');
 END;
 /
 
 BEGIN
 SA_COMPONENTS.CREATE_COMPARTMENT (
 policy_name => 'PROTECT_PII',
 comp_num => 100,
 short_name => 'PII',
 long_name => 'PERS_INFO');
 END;
 /
 
 BEGIN
 SA_COMPONENTS.CREATE_LEVEL (
 policy_name => 'PROTECT_PII',
 level_num => 2000,
 short_name => 'S',
 long_name => 'SENSITIVE');
 END;
 /
 
 
ユーザーの認可

ユーザー「SKing」のみが、「S:PII」ラベルと一致またはそれより上位のラベルを取得します。これにより、SKingは、PII情報が格納されているテーブルのすべての列を見ることができます。「LDoran」などの他のすべてのユーザーは、ラベルが「S:PII」ラベルより上位ではないため、「salary」列は空白になります。このOracle By Exampleでは、OLSポリシーが非データベースユーザーに適用されています。

ユーザーテーブル

スクリプトを使用して同じ結果を得るには、次のようにします。


 
 BEGIN
 SA_USER_ADMIN.SET_USER_LABELS (
 policy_name => 'PROTECT_PII',
 user_name => 'SKING',
 max_read_label => 'S:PII',
 max_write_label => 'S:PII',
 min_write_label => 'C',
 def_label => 'S:PII',
 row_label => 'S:PII');
 END;
 / 
 
 BEGIN
 SA_USER_ADMIN.SET_USER_LABELS (
 policy_name => 'PROTECT_PII',
 user_name => 'LDORAN',
 max_read_label => 'C',
 max_write_label => 'C',
 min_write_label => 'C',
 def_label => 'C',
 row_label => 'C');
 END;
 /
 
 
VPDポリシーを作成して承認する

VPDポリシーで以下のことを行います。

ユーザーの現在のラベルから数値のラベルタグを取得する
「S:PII」ラベルから数値のラベルタグを取得する
ユーザーラベルが「S:PII」以上の場合は、機密情報を含む列のすべての行にアクセスできる
ユーザーラベルが「S:PII」未満の場合は、すべての行にアクセスできるが、PIIを含む機密情報の列は空白になる
この例では、hr.EMPLOYEESテーブルに以下のVPDポリシーが適用されます。


 BEGIN
 DBMS_RLS.ADD_POLICY(
 object_schema => 'HR',
 object_name => 'EMPLOYEES',
 policy_name => 'vpd_protect_pii',
 function_schema => 'LBACSYS',
 policy_function => 'f_protect_pii',
 statement_types => 'select',
 sec_relevant_cols => 'SALARY',
 sec_relevant_cols_opt => dbms_rls.ALL_ROWS,
 policy_type => dbms_rls.CONTEXT_SENSITIVE);
 END;
 /
 
 
 

デモスクリプト全体はこちらからダウンロードできます。

Oracle Label Security