ポリシタグでデータアクセスを制御する
ポリシタグは、データセット、テーブル、属性にキー値ペアのラベルを割り当てることで、細かいデータアクセス制御を可能にします
目的
ポリシタグは、データセット、テーブル、属性にキー値ペアのラベルを割り当てることで、細かいデータアクセス制御を可能にします。Identity Access ManagerのCEL条件と組み合わせることで、ポリシタグは、どのユーザーが特定のデータを読み書きできるかを決定します。
目次
はじめに
ポリシタグを使用すると、データセット、テーブル、属性にアクセスカテゴリ(例:sensitivity: high、department: finance)を表すキー値ペアのラベルを付けることができます。これらのラベルは、IAMロールバインドに付属するCEL条件で参照され、どのユーザーがどのデータにアクセスできるかを制御します。
ポリシタグは2つの部分から成ります:
- キー:ユニークな識別子(例:「sensitivity」、「department」)。
- 値:キーには複数の値を持つことができます(例:「high」、「medium」、「low」)。
重要:リソースにポリシタグを割り当てることは、アクセスを自動的に制限するわけではありません。ユーザーのIAMロールバインドにタグを参照するCEL条件を設定する必要があります。CEL条件がない場合、タグはアクセス制御に影響しません。
アクセス評価の仕組み
ユーザーがデータにアクセスしようとすると、システムは順次ゲートチェーンを通じてユーザーの権限を評価します。このチェーンを理解することは、ポリシタグとCEL条件を正しく設定するために不可欠です。
ゲートチェーン
システムは、ユーザーのCEL条件を3つのリソースレベルで順番にチェックします:
- データセット:このデータセットについて、ユーザーのCEL条件は通過しますか?
- テーブル:このテーブルについて、ユーザーのCEL条件は通過しますか?
- 属性:この属性について、ユーザーのCEL条件は通過しますか?
各レベルは、次のレベルが評価される前に通過する必要があります。どのレベルでも失敗すると、アクセスは即座に拒否されます:システムは次のレベルに進みません。
重要なポイント:CEL条件は唯一の強制メカニズムです。システムはポリシタグを独立してチェックしません。CELのみを評価します。CELにリソースレベル(例:Resource == "attribute")のパススルーが含まれている場合、そのレベルのポリシタグは強制されません。特定のレベルでタグを必要とするには、CELが明示的にそれをチェックする必要があります。詳細はCEL条件を手動で記述するを参照してください。
異なるレベルのポリシタグは累積的な要件であり、オーバーライドではありません。データセットがタグAを必要とし、その中のテーブルがタグBを必要とする場合、ユーザーのCELはデータセットレベルでAをチェックし、かつテーブルレベルでBをチェックする必要があります。タグBはタグAを置き換えたり、オーバーライドしたりしません。
継承
リソースにポリシタグが明示的に割り当てられていない場合、親からタグを継承します:
- テーブル:テーブルにポリシタグがない場合、親のデータセットからタグを継承します。
- 属性:属性にポリシタグがない場合、親のテーブル(データセットから継承している可能性がある)からタグを継承します。
- データセット:データセットは階層の最上位であり、何からも継承しません。
継承は下方向にのみ流れます。テーブルのタグは親のデータセットに上方向に伝播することはありません。
継承により、データセットにタグを付けることは、未タグのすべての子にタグを付けるのと同じです。これは、ベースラインのアクセスレベルを設定する最も簡単な方法です。
累積アクセス要件
ゲートチェーンの各レベルが独立して評価されるため、異なるレベルのタグは積み重なります。以下の例では、データセット、テーブル、属性レベルでaccess_levelというタグキーにlevel 1、level 2、level 3という値を適用しています。
設定:
- データセット:
access_level: level 1 - テーブル
chicago_calendar_full:access_level: level 2 - 属性
bridge(chicago_calendar_full内):access_level: level 3
データセット内の他のテーブルには明示的なタグがなく、データセットからlevel 1を継承します。
警告:タグ値(level 1、level 2、level 3)には製品内で固有の階層や順序はありません。これらはあなたが定義するラベルです。level 2は自動的にlevel 1を含みません。リソースレベルで必要な各値は、ユーザーに明示的に付与する必要があります。
注意:データセットゲートを通過できないユーザーは、そのデータセット内のすべてのものにアクセスできません。テーブルレベルまたは属性レベルのタグに関係なく。常にユーザーがデータセットレベルのタグをベースラインとして持っていることを確認してください。
- User_A(
level 1のみ):未タグのテーブル(level 1を継承)にアクセスできます。chicago_calendar_fullにアクセスできません:データセットゲートは通過しますが、テーブルゲート(level 2が必要)で失敗します。bridgeにアクセスできません。 - User_B(
level 1+level 2):未タグのテーブルとchicago_calendar_fullにアクセスできます。bridgeを読み取ることができるかどうかはCEL次第です:CELが属性レベルでタグをチェックする場合、bridgeは拒否されます(level 3が必要)。CELが属性にパススルーを使用する場合、bridgeはまだアクセス可能な場合があります。詳細は一般的なCELパターンを参照してください。 - User_C(
level 1+level 2+level 3):この設定で必要なすべてのタグ値を持っているため、CELが各レベル(属性パススルーについては以下の重要な注意を参照)でポリシタグをチェックする場合、データセット、chicago_calendar_full、bridgeにアクセスできます。
重要:属性レベルのタグが強制されるかどうかは、完全にCEL条件次第です。bridgeを制限するには、CELがPolicyTags.access_levelをResource == "attribute"で明示的にチェックする必要があります。|| Resource == "attribute"のようなパススルーは、タグチェックをスキップし、すべての属性へのアクセスを許可します。
ExplorerでSQLを使用してこのシナリオを確認するには、テスト&トラブルシューティングに従ってください。
新しいポリシタグの作成
新しいポリシタグを作成するには、次の手順に従ってください:
- 新しいポリシタグボタンをクリックします。
- キー(例:「department」)、最初の値(例:「finance」)、ポリシタグの説明を入力します。
- ポリシタグを保存し、利用可能なタグのリストで確認します。
ポリシーテグの設定
ポリシーテグを作成した後、Tag Informationセクションで値(例:tech、product)を追加したり、説明を更新したりして設定できます。ポリシーテグは、データのセキュリティ要件に合うように慎重に設定する必要があります。
必要なポリシーテグの設定メニューを表示するには、編集ボタンをクリックします。
Associated Data Resourcesセクションでは、このポリシーテグが適用されたデータリソース — テーブル、データセット、属性 — が詳細に記載されています。
データへのポリシーテグのバインド
ポリシーテグは、さまざまなデータコンポーネントにバインドできます:
データセット
- データセットセクションに移動します。
- ポリシーテグを適用したいデータセットを選択します。
- 利用可能なタグから適切なポリシーテグを選択して、データセットにバインドします。
テーブル
- テーブルセクションに移動します。
- ポリシーテグを適用したいテーブルを選択します。
- データセットと同様の手順に従って、ポリシーテグをテーブルにバインドします。
属性
- テーブルセクションに移動し、希望するテーブルを選択します。
- POLICY TAGSセクションをクリックするか、特定の属性の編集アイコンをクリックします。
- ポリシーテグを適用したい特定の属性(列)を探します。または、編集アイコンをクリックして特定の属性を選択した場合は、直接ポリシーテグを追加します。
- 適切なポリシーテグを属性にバインドします。これは、ドロップダウンから選択するか、タグ付けインターフェースを使用する場合があります。
次のステップ
ポリシーテグの動作方法とデータへのバインド方法を理解したので、以下に進んでください:
- CEL Conditions & Access Patterns:アクセス権限の付与UI、CEL条件の記述、一般的なパターン
- Testing & Troubleshooting:アクセス制御のテスト手順、一般的なエラー
- Example: Team Access with Groups:グループを使用したオンボーディングの実世界のワークフロー
さらに深く学ぶ
ソリューションの実装に関するトレーニングや技術的なアシスタンスが必要な場合は、営業担当者にお問い合わせください、またはこのリンクをクリックして見積もりを依頼し、プロフェッショナルサービスの専門家にプロジェクトのカスタム分析を依頼してください。
Data Platformを構築するチームと直接やり取りし、質問をしたり、フィードバックを送信したり、専用のDiscordチャネルで交流したりしてください。
OVHcloudサービスについてサポートが必要な場合は、ヘルプセンターでリクエストを作成してください。
ユーザーコミュニティに参加してください。

