メインコンテンツまでスキップ

カラムおよび行レベルのセキュリティを理解する

背景

実際のビジネスシナリオでは、テーブルは多数の行と列で構成されることがあります。顧客は、特定の役割だけが特定のデータ列や行をクエリできるようにする、きめ細かいアクセス制御メカニズムを必要としています。これにより、機密データを保護します。

カラムおよび行レベルのセキュリティ機能の一部は、ビューを使用して実現できます。しかし、ビューは複数のテーブルに適用することはできません。マスクするカラムが複数のテーブルに存在する場合、ユーザーは各テーブルに対して個別のビューを作成する必要があり、ビューの数が爆発的に増加します。さらに、ビューは権限の委譲において柔軟性がありません。ユーザーはデータ管理者やプラットフォームの保守担当者にビューとテーブルの権限を割り当てる必要があります。これにより、権限管理の柔軟性が低下し、プラットフォームの保守担当者の作業負荷が増加します。

カラムおよび行レベルのセキュリティとは?

CelerData は、カラムマスキング行アクセスポリシー を使用して、許可されていないアクセスから機密データを保護しつつ、許可されたユーザーがクエリ実行時にデータにアクセスできるようにします。ユーザーはポリシーを作成する際にマスキングおよびフィルター条件を指定できます。条件に一致するデータ列またはデータ行のみが返されます。これにより、カラムレベルのデータマスキングと行レベルのデータフィルタリングが実現されます。

ポリシーが適用されたテーブルをユーザーがクエリする際、クエリは書き換えられます。これは、ポリシーに基づいて一時的なビューが生成され、元のクエリがテーブルから一時的なビューにリダイレクトされるようなものです。これにより、マスクされたデータのみが返され、すべてのデータが返されることはありません。

CelerData はクエリ実行時に機密データを変更したり、データを保存する際に暗号化したりしません。

典型的な使用シナリオ

  • シナリオ 1: クライアントの電話番号のような機密データに対して、顧客は異なる役割に異なるアクセス権限を持たせたいと考えています。例えば、営業担当者は製品を販売するために平文の電話番号を見る必要がありますが、データアナリストは電話番号の最後の4桁だけを見れば十分です。このシナリオでは、カラムマスキングポリシーが必要であり、カラムは現在のセッションの役割に基づいて動的にマスクされます。
  • シナリオ 2: 売上データテーブルは異なる地域からのデータで構成されており、顧客は各地域の営業スタッフが自分の地域のデータのみを閲覧できるようにしたいと考えています。このシナリオでは、行アクセスポリシーが必要であり、現在のセッションの役割と地域情報に基づいて関連する地域のデータ行のみが返されます。

これら2つのシナリオの使用例は、 Masking policies および Row access policies にあります。

ポリシーは一度作成すれば複数のテーブルに適用できます。例えば、機密フィールドに対するマスキングポリシーを作成し、そのポリシーをその機密フィールドを含むすべてのテーブルに適用できます。

ポリシーの作成と適用は、CREATE や APPLY などの権限によって制御されます。管理者は、ビジネスシナリオに基づいてこれらの権限を特定の部門に委譲するかどうかを決定できます。これにより、柔軟な権限管理と複数のテーブルにわたるポリシーの一貫した適用が可能になり、機密データが定義されたポリシーに従って一貫して保護されます。権限管理の詳細については、 Manage privileges for policies を参照してください。

利点

  • 使いやすさ
    • ポリシーは一度作成すれば複数のテーブルに適用でき、多数のビューを作成する必要がなくなります。
  • 簡単な修正
    • ポリシーは簡単に修正でき、各テーブルに再適用することなく即座に効果を発揮します。
  • 柔軟なアクセス制御、職務分離
    • カラムマスキングと行アクセスポリシーは職務分離 (SoD) を可能にし、データアクセスに対するきめ細かい制御を提供します。データ管理の権限はプラットフォーム保守チームから切り離されます。データ所有者や専任のデータセキュリティチームが、どの役割がどのセキュリティレベルのデータにアクセスできるかを決定できます。

全体として、カラムマスキングと行アクセスポリシーは、柔軟性、管理の容易さ、データアクセスとセキュリティに対する強化された制御を提供し、機密データが保護され、許可された個人または役割のみがアクセスできるようにします。

ポリシーの対象オブジェクト

ポリシーは、テーブル、ビュー、マテリアライズドビュー、または外部テーブルに適用できます。ポリシーを作成、適用、変更、または削除するための SQL 文は、これらのオブジェクトに対して類似しています。

ポリシーの影響範囲

ポリシーは、ポリシーが適用されたカラムに対して実行されるすべてのクエリに影響を与えます。これには、SELECT、CTAS、INSERT、および INTO AS SELECT 操作が含まれます。

使用上の注意

  • カラムマスキングと行アクセスポリシーは、テーブル、ビュー、マテリアライズドビュー、および外部テーブルに適用できます。これらのオブジェクトに対する文は類似しています。
  • ポリシーはデータベースレベルの概念ですが、ポリシーを適用する際にデータベースやカタログをまたいで参照できます。形式は catalog.db.policy です。カタログが指定されていない場合、現在のカタログがデフォルトで使用されます。
  • テーブルには複数のカラムマスキングポリシーと行アクセスポリシーを持たせることができます。ただし、1つのカラムに複数の行アクセスポリシーを持たせることはできません。
  • 行アクセスポリシーとカラムマスキングポリシーは同じカラムに適用できません。これは、行アクセスがマスクされたカラムデータを露出するのを防ぐためです。
  • ポリシーは継承されません。例えば、CTAS や CREATE TABLE LIKE 操作は元のテーブルのポリシーを継承しません。
  • ポリシーはマテリアライズドビューのクエリの書き換えに影響を与えません。ベーステーブルをクエリする際、マテリアライズドビューを通じてクエリが書き換えられることがありますが、マテリアライズドビューにポリシーが適用されているかどうかに関係なく行われます。
  • カラムマスキングと行アクセスポリシーは、本質的に元のクエリに述語や条件を追加するものであり、クエリの効率を低下させる可能性があります。EXPLAIN ANALYZE 文の結果に基づいて、ポリシーを調整するかどうかを判断できます。調整とトラブルシューティングの方法は、クエリプロファイル分析と類似しています。