動的データマスキングポリシー階層
複数のマスキングポリシーをアタッチする場合は、以下を考慮します。
-
複数のマスキングポリシーを 1 つの列にアタッチできます。
-
複数のマスキングポリシーがクエリに適用される場合、それぞれの列にアタッチされている最も優先度の高いポリシーが適用されます。次の例を考えます。
ATTACH MASKING POLICY partial_hash ON credit_cards(address, credit_card) TO ROLE analytics_role PRIORITY 20; ATTACH MASKING POLICY full_hash ON credit_cards(credit_card, ssn) TO ROLE auditor_role PRIORITY 30; SELECT address, credit_card, ssn FROM credit_cards;
SELECT ステートメントを実行すると、分析と監査の両方のロールを持つユーザーには、
partial_hash
マスキングポリシーが適用されたアドレス列が表示されます。クレジットカード列ではfull_hash
ポリシーの優先度が高いため、full_hash
マスキングポリシーが適用されたクレジットカード列と SSN 列が表示されます。 -
マスキングポリシーをアタッチするときに優先度を指定しない場合、デフォルトの優先度は 0 です。
-
同じ列に 2 つのポリシーを同じ優先度でアタッチすることはできません。
-
ユーザーと列、またはロールと列の同じ組み合わせに 2 つのポリシーをアタッチすることはできません。
-
同じユーザーまたはロールにアタッチされているときに、同じ SUPER パスに複数のマスキングポリシーが適用される場合、最も優先順位の高いアタッチメントのみが有効になります。次に挙げるサンプルを参考にしてください。
最初の例は、同じパスに 2 つのマスキングポリシーがアタッチされ、優先順位の高いポリシーが有効になっていることを示しています。
ATTACH MASKING POLICY hide_name ON employees(col_person.name) TO PUBLIC PRIORITY 20; ATTACH MASKING POLICY hide_last_name ON employees(col_person.name.last) TO PUBLIC PRIORITY 30; --Only the hide_last_name policy takes effect. SELECT employees.col_person.name FROM employees;
2 つ目の例は、同じ SUPER オブジェクト内の異なるパスに 2 つのマスキングポリシーがアタッチされているため、ポリシー間で競合が発生していないことを示しています。両方のアタッチメントが同時に適用されます。
ATTACH MASKING POLICY hide_first_name ON employees(col_person.name.first) TO PUBLIC PRIORITY 20; ATTACH MASKING POLICY hide_last_name ON employees(col_person.name.last) TO PUBLIC PRIORITY 20; --Both col_person.name.first and col_person.name.last are masked. SELECT employees.col_person.name FROM employees;
特定のユーザーと列またはロールと列の組み合わせにどのマスキングポリシーが適用されるかを確認するには、sys:secadmin
ロールを持つユーザーが、SVV_ATTACHED_MASKING_POLICY システムビューで列/ロールまたは列/ユーザーのペアを検索できます。詳細については、「動的データマスキングのシステムビュー」を参照してください。