Data Security の概要
Data Security では、Lakehouse 内の Catalog、Schema、テーブル、行、カラムのうち、各ユーザーが参照できる範囲を決めます。policy で設定した内容は、Data Explorer、Query Editor、接続済みツールでのクエリのたびにチェックされます。
policy の種類
Security policies ページ (Data Security → Security policies) には、policy の種類ごとにタブがあります。
| タブ | policy の役割 | 例 |
|---|---|---|
| Access | Catalog、Schema、テーブル、または Schema 内の関数の読み取りや変更を許可します。 | bi-sale グループは analytics.sales のすべてのテーブルで SELECT を実行できます。 |
| Row level filter | 1 つのテーブルについて、条件に一致する行だけを表示します。 | bi-sale グループには region = 'North' の行だけが表示されます。 |
| Masking | 1 つのカラムの値を、ハッシュに置き換えるなどして隠します。 | bi-sale グループには customer_phone がハッシュで表示されます。 |
アクセス policy がないと、サンプルの tpcds Catalog を含め、データはまったく表示されません。行フィルター policy とマスキング policy は、アクセス policy がすでに許可している範囲をさらに絞り込むだけです。
policy の適用対象
各 policy には、次のいずれか 1 つ以上を指定します。
- Users。メールアドレスで指定します。
- Groups。グループのメンバー全員に policy が適用されます。グループは Access Management で管理します。
- Service accounts。ユーザーを介さずに接続するツールやパイプライン向けです。
グループの利用をおすすめします。チームへの参加や離脱があっても、policy ごとではなく、グループを 1 回変更するだけで済みます。
スコープの仕組み
アクセス policy は、選択したレベルより下のすべてを対象にします。
Catalog analytics このレベルの policy はすべての Schema とテーブルが対象
└── Schema analytics.sales このレベルの policy は sales 内のすべてのテーブルが対象
└── Table analytics.sales.orders このレベルの policy は orders のみが対象
- アクセス権が上位に広がることはありません。1 つのテーブルへのアクセス権があっても、同じ Schema や Catalog 内の他のテーブルは開放されません。
- 1 つのテーブルへのアクセス権があれば、Data Explorer にはその Catalog と Schema も表示されますが、表示されるのはそのテーブルに続く枝だけです。
- 同じユーザーに複数の policy が適用される場合、それらが許可する権限をすべて合わせたものが付与されます。
各レベルで各権限が許可する内容は、アクセス policy の権限を参照してください。
行フィルターとマスキング
行フィルターは、テーブルへのすべてのクエリに条件を追加します。ユーザーが WHERE 句に自分で条件を書いたのと同じ動作です。条件に一致しない行は、ユーザーに届きません。クエリ履歴には、ユーザーが書いた SQL がそのまま残ります。
マスキング policy は、1 つのカラムの表示方法を変えます。テーブルに保存されているデータは変わりません。マスキングは、Query Editor や Data Explorer のサンプルデータを含め、ユーザーがデータを読み取るすべての場面で適用されます。
同じユーザーと同じカラムに複数のマスキング policy が適用される場合 (たとえば 2 つのグループ経由)、どれが優先されるかは選べません。同じカラムに、重複するマスキング policy を設定しないでください。
変更が反映されるタイミング
policy を新規作成、変更、削除すると、保存してから約 1 分後に開始するクエリに反映されます。すでに実行中のクエリには影響しません。
policy を削除したり、policy からユーザーを外したりしても、約 1 分間はそのユーザーがデータを読み取れる状態が続きます。
Data Security で変わらないこと
- Access management でユーザーを無効化しても、そのユーザーの policy は残ります。ユーザーを再度有効化すると、以前のアクセス権が戻ります。戻したくない場合は、policy からそのユーザーを外してください。
- Portal の role は、開けるページを決めます。Data Security の policy は、クエリできるデータを決めます。ユーザーにはその両方が必要です。