CREATE PROJECTION POLICY

現在または指定のスキーマに新しい 投影ポリシー を作成するか、既存の投影ポリシーを置き換えます。

投影ポリシーを作成したら、 ALTER TABLE ... ALTER COLUMN コマンドを使用してテーブル列に、または ALTER VIEW コマンドを使用してビュー列に投影ポリシーを適用します。

こちらもご参照ください。

投影ポリシー DDL 参照

このトピックの内容:

構文

CREATE [ OR REPLACE ] PROJECTION POLICY [ IF NOT EXISTS ] <name>
  AS () RETURNS PROJECTION_CONSTRAINT -> <body>
  [ COMMENT = '<string_literal>' ]
Copy

パラメーター

name

投影ポリシーの識別子。スキーマに対して一意である必要があります。

識別子の値はアルファベットで始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

body

列を投影するかどうかを決定する SQL 式。

式には CASE やその他のロジックステートメントを含めることができますが、 PROJECTION_CONSTRAINT 関数を呼び出す必要があります。

PROJECTION_CONSTRAINT(ALLOW=>{TRUE|FALSE}, ENFORCEMENT=><enforcement_style>)
Copy
  • ALLOWboolean) - TRUE は列の投影を許可します。FALSE は、 ENFORCEMENT で指定された動作で、列が投影されないようにします。FALSE は最終結果のテーブルに表示される列のみに影響します。

  • ENFORCEMENTオプションで文字列) - ALLOW=FALSE の場合、クエリに保護された列が含まれる場合の動作を指定します。サポートされている値:

    • FAIL - 保護された列が一番外側のクエリに含まれている場合、クエリは失敗します。

    • NULLIFY - 保護された列のすべての行は、値 NULL を返します。

    デフォルト: FAIL

COMMENT = 'string_literal'

投影ポリシー用にアプリケーションのコメントを追加するか、既存のコメントを上書きします。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

注意

CREATE PROJECTION POLICY

スキーマ

スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

投影ポリシー DDL と権限の詳細については、 権限とコマンド をご参照ください。

使用上の注意

  • 既存の投影ポリシーを更新し、ポリシーの現在の定義を確認する必要がある場合は、 DESCRIBE PROJECTION POLICY コマンドまたは GET_DDL 関数を実行します。

  • OR REPLACEIF NOT EXISTS 句は互いに排他的です。両方を同じステートメントで使うことはできません。

  • CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。

  • メタデータについて:

    注意

    Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

列の投影を許可しません。

CREATE OR REPLACE PROJECTION POLICY do_not_project AS ()
  RETURNS PROJECTION_CONSTRAINT ->
  PROJECTION_CONSTRAINT(ALLOW => false);
Copy

analyst カスタムロールの列を投影します。そうでない場合はクエリを許可しますが、保護された列の値はすべて NULL に置き換えます。

CREATE OR REPLACE PROJECTION POLICY project_analyst_only AS ()
  RETURNS PROJECTION_CONSTRAINT ->
    CASE
      WHEN CURRENT_ROLE() = 'ANALYST'
        THEN PROJECTION_CONSTRAINT(ALLOW => true)
      ELSE PROJECTION_CONSTRAINT(ALLOW => false, ENFORCEMENT => 'NULLIFY')
    END;
Copy