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