ABAC ポリシーの設計とタグ ガバナンスについては、次のベスト プラクティスを検討してください。
属性と名前付けの標準化
ポリシーを作成する前に、一貫したタグ付け分類を確立します。 チーム間でタグ キー名、許可される値、名前付け規則に同意します。 小規模で明確に定義されたタグのセットは、アドホック タグが急増するよりも管理が簡単です。
たとえば、sensitivity、public、internalなど、複数の重複するタグではなく、制御された値 (confidential、restricted、is_sensitive、data_class) を持つ 1 つのpii_level タグを使用します。
タグを設定できるユーザーを制御する
タグ付けは ABAC のセキュリティ境界です。 ユーザーがデータ資産のタグを変更できる場合は、適用するポリシーを変更できます。 タグが間違っているか見つからない場合は、適切なタグが設定されている場合にのみポリシーが適用されるため、データの保護が解除されたり、アクセスできなくなる可能性があります。
- タグの作成と変更を、承認されたデータ スチュワードまたはガバナンス管理者に制限します。 タグのアクセス許可を構成する方法については、 管理タグ を参照してください。
- 監査タグの変更は、 監査ログ システム テーブルを使用して定期的に行われます。
未分類データのフォールバック ルールを設定する
すべてのオブジェクトが正しくタグ付けされているとは想定しないでください。 自動化を使用してタグ付け標準を適用し、未分類データのフォールバック メカニズムを実装します。
- データ スチュワードが新しいオブジェクトをレビューするまで、既定の制限付きタグ (
classification : unverifiedなど) を新しいオブジェクトに適用します。 - 既定のタグを持つオブジェクトへのアクセスを制限するポリシーを作成します。
詳細な例については、「 機密列がタグ付けされるまでアクセスを禁止する」を参照してください。
適用可能な最も高いスコープでポリシーを定義する
可能な場合は、カタログまたはスキーマ レベルでポリシーをアタッチします。 テーブル レベルのポリシーはまれであり、例外である必要があります。
カタログ スコープ ポリシーはカタログ内のすべてのテーブルに対して評価され、スキーマ スコープ ポリシーはスキーマ内のすべてのテーブルに対して評価されます。 新しいテーブルを追加すると、タグがポリシーの条件と一致する限り、既存のポリシーが適用されます。
ポリシーの拡散を回避する
ABAC は、アクセス制御規則の数を減らし、増やさないように設計されています。 チームが作成するタグとポリシーが多すぎると、結果の管理と監査が困難になります。
- ポリシーを作成する前に、ガバナンス要件を分析します。
- カタログ全体の PII マスクや地域の行のフィルター処理など、少数の広範なポリシーから始めます。
- エッジ ケースごとに個別のポリシーを作成しないでください。
- ポリシーを定期的に確認し、重複するものを統合します。
多数のポリシーと複雑な条件により、承認チェックが遅くなる可能性があります。 詳細については、 パフォーマンスに関する考慮事項 を参照してください。
主要ターゲット設定で TO/EXCEPT を優先する
可能であれば、ポリシーの TO 句と EXCEPT 句を使用して、ポリシーが適用されるユーザーとグループを定義します。 これにより、UDF ロジックがシンプルになります。
EXCEPT句は、特定のユーザーをポリシーから完全に除外するため、フィルター処理やマスクの対象になりません。 複雑な条件付きロジックが必要な場合、UDF 内の is_account_group_member() などの ID 関数は有効なオプションのままです。
詳細については、「 プリンシパルをターゲットにするためのアプローチ」を参照してください。
動的ポリシー評価の計画
ABAC ポリシーは動的です。 テーブル定義に直接表示されるテーブル レベルの行フィルターと列マスクとは異なり、ABAC ポリシーは、ユーザーの ID とグループ メンバーシップ、およびポリシー スコープ内のデータ オブジェクトのタグに基づいてクエリ時に評価されます。 これにより、データ コンシューマーとテーブル所有者は、特定のテーブルに適用されるアクセス規則を理解することが困難になる可能性があります。
-
SHOW EFFECTIVE POLICIESを使用して、特定のテーブルに適用される内容を決定します。 - タグ付けの分類、ポリシー、グループ管理のアプローチを文書化して、チームが各ポリシーを個別に検査することなくガバナンス モデルを理解できるようにします。
- 特定のテーブルに対して透過性が重要な場合は、代わりに、その分離されたケースに対して テーブル レベルの行フィルターと列マスク を使用することを検討してください。 まず、考えられる競合に対処してください。
詳細情報
| トピック | Description |
|---|---|
| パフォーマンスに関する考慮事項 | ABAC ポリシーの設計がクエリのパフォーマンスにどのように影響するか、およびポリシーを最適化してテストする方法。 |
| ABAC とテーブル レベルの行フィルターと列マスクを使用する場合 | スコープ、所有権、および 2 つの方法の選択方法の違い。 |
| Delta SharingとABAC | Δ共有を使用してABAC保護されたテーブルを共有し、受信者側のポリシーを管理し、受信者用のローカルビューを設定する方法。 |