セキュアオブジェクト: エラーメッセージの情報の再編集¶
セキュアオブジェクトに関連するエラーメッセージは以下のように動作します。
- 変更前:
セキュアオブジェクトに関連するエラーメッセージには、メッセージの全文が表示されます。
- 変更後:
セキュリティオブジェクトに関連するエラーメッセージは、編集される可能性があります。
この変更は、以下のタイプのオブジェクトに関するエラーメッセージに適用されます。
セキュア関数 (セキュアテーブル関数を含む)
セキュリティオブジェクトの詳細については、 セキュアオブジェクトを使用したデータアクセスの制御を使用する をご参照ください。
セキュアオブジェクトの展開または評価中にエラーが検出された場合、エラーメッセージは編集の対象となります。エラーメッセージが編集されても、エラーコードは変更されません。
エラーメッセージの変更には、実行中の編集と実行後のメタデータでの編集の2つのタイプがあります。これらのタイプの変更については、以下のセクションで説明します。
実行中の編集¶
エラーメッセージ全体、またはエラーメッセージの一部を、操作中にエラーが返されたときに編集することができます。一般的に、このタイプのエラーメッセージの編集は、ユーザーがセキュアオブジェクトの OWNERSHIP 権限を持たずにセキュアオブジェクトを使用しようとしたときに発生します。
実行後のメタデータの編集¶
ユーザーはエラー発生後、エラーメッセージを含むエラーに関するメタデータを表示できます。例えば、ユーザーはSnowsightの Query History のページや、 Snowflake Information Schema のクエリや関数を呼び出すことで、このメタデータを表示することができます。実行中にエラーメッセージが編集された場合、実行後のメタデータでは、すべてのユーザーに対して常にエラーメッセージが編集されます。
実行中にエラーメッセージが編集されない場合、一部のユーザーにはメッセージが変更されずにメタデータに表示され、他のユーザーには編集されます。大文字と小文字のどちらでも、メタデータ上のエラーメッセージは変更されません。
メタデータを表示するユーザーには、 AUDIT 権限があります。
メタデータを表示するユーザーは、 ENABLE_UNREDACTED_SECURE_OBJECT_ERROR ユーザーパラメーターが
TRUEにセットされています。AUDIT権限を持つユーザーは、ユーザーにこのパラメーターをセットすることができます。メタデータを表示しているユーザーが、エラーの原因となったステートメントを実行しました。
それ以外の場合、エラーメッセージはメタデータで編集されます。編集されたエラーメッセージには、以下のテキストが含まれます: Error in secure object。
エラーメッセージの編集の例¶
以下の例では、エラーメッセージを編集して表示しています。編集は実行中または実行後のメタデータで行われます。
例1: セキュアビューのクエリ¶
以下の例では、安全なビューのSELECT権限を持つユーザーがエラーを返すビューに対してクエリを実行しています。
セキュアビューを作成します。
ビュークエリで使用しているテーブルを削除します。
ビューに対してクエリを実行します。
変更前に全ユーザーに表示されるエラーメッセージ¶
変更後、一部のユーザーに表示されたエラーメッセージの編集¶
例2: セキュア関数を呼び出すクエリの実行¶
以下の例では、セキュア関数のUSAGE権限を持つユーザーがセキュア関数を呼び出すクエリを実行しましたが、セキュア関数はエラーを返しています。
例2a: 関数の引数がエラーになります¶
セキュリティ関数を作成します。
セキュリティ関数を呼び出すクエリを実行します。
変更前に全ユーザーに表示されるエラーメッセージ¶
変更後、一部のユーザーに表示されたエラーメッセージの編集¶
例2b: 関数が依存しているオブジェクトが削除された場合¶
セキュリティ関数を作成します。
関数で使用されているテーブルを削除します。
セキュリティ関数を呼び出すクエリを実行します。
変更前に全ユーザーに表示されるエラーメッセージ¶
変更後、一部のユーザーに表示されたエラーメッセージの編集¶
例3: マスキングポリシーはエラーを返します¶
次の例では、ユーザーがマスキングポリシーがあるビューに対してクエリを実行し、エラーが発生します。
マスキングポリシーを作成します。
ビューを作成し、ビューの列にマスキングポリシーを設定します。
マスキングポリシーで使用しているテーブルを削除します。
マスキングポリシーの所有権限を持たないユーザーとして、ビューに対してクエリを実行します。
変更前に全ユーザーに表示されるエラーメッセージ¶
変更後、一部のユーザーに表示されたエラーメッセージの編集¶
例4: 行アクセスポリシーはエラーを返します¶
以下の例では、ユーザーが行アクセスポリシーを持つビューに対してクエリを実行し、エラーが発生しています。
行アクセスポリシーを作成します。
ビューを作成し、そのビューに行アクセスポリシーを追加します。
行アクセスポリシーで使用しているテーブルを削除します。
行アクセスポリシーの OWNERSHIP 権限を持たないユーザーとしてビューをクエリします。
変更前に全ユーザーに表示されるエラーメッセージ¶
変更後、一部のユーザーに表示されたエラーメッセージの編集¶
参照: 1858