【Snowflake】【トラブル】エラー「Insufficient privileges to operate」時の対応

■ はじめに

Snowflake で、DROPなどのSQLを実行した際に
~~~~
SQL access control error: Insufficient privileges to operate on xxxx
~~~~
が表示することが何度かあり、対応方法を結構忘れてしまうので、
備忘録としてメモしておく。

目次

【1】エラー内容
 例1:Table「DEMO_HELLO」をDropした場合
 例2:File Format「DEMO_FORMAT」をDropした場合
 例3:Integration「DEMO_INTEG」を使用した場合
【2】原因
【3】対応案
 例1の対応案
 例2の対応案

【1】エラー内容

例1:Table「DEMO_HELLO」をDropした場合

SQL access control error: Insufficient privileges to operate
 on table 'DEMO_HELLO'

例2:File Format「DEMO_FORMAT」をDropした場合

SQL access control error: Insufficient privileges to operate
 on file_format 'DEMO_FORMAT'

例3:Integration「DEMO_INTEG」を使用した場合

SQL access control error: Insufficient privileges to operate
 on integration 'DEMO_INTEG'

【2】原因

* エラー内容を訳せばわかる。
 => 権限が不充分

例2の和訳

SQLアクセス制御エラー
ファイルフォーマット「DEMO_FORMAT」の操作するために不十分な特権

【3】対応案

* Ownerを変更してから実行する

構文

-- 対象オブジェクトを残す場合(Dropなどで削除しない)
GRANT OWNER ON <対象オブジェクト(e.g. TABLE)> <対象テーブル>
 TO ROLE <変更したいロール> COPY CURRENT GRANTS;

-- Dropなど削除する場合
GRANT OWNER ON <対象オブジェクト(e.g. TABLE)> <対象テーブル>
 TO ROLE <変更したいロール> REVOKE CURRENT GRANTS;

使用上の注意

* 「REVOKE CURRENT GRANTS」したら、
 以下の関連記事のようになるケースもあるので注意。
 => 「COPY CURRENT GRANTS」でやっておくほうが無難かも、、、

所有権変更後にエラー「current role has no privileges on it」
https://dk521123.hatenablog.com/entry/2023/04/14/151140

例1の対応案

-- テーブルのOwnerを変更する
GRANT OWNER ON TABLE "DEMO_HELLO"
TO ROLE admin REVOKE CURRENT GRANTS;

-- 削除
DROP TABLE "DEMO_HELLO";

例2の対応案

-- ファイルフォーマットのOwnerを変更する
GRANT OWNER ON FILE FORMAT "DEMO_FORMAT"
TO ROLE admin REVOKE CURRENT GRANTS;

-- 削除
DROP FILE FORMAT "DEMO_FORMAT";

例3の対応案

-- ストレージ統合のOwnerを変更する
GRANT OWNER ON INTEGRATION "DEMO_INTEG"
TO ROLE admin REVOKE CURRENT GRANTS;

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ File Format ~
https://dk521123.hatenablog.com/entry/2022/07/28/153332
Snowflake ~ SHOW / DESCRIBE ~
https://dk521123.hatenablog.com/entry/2022/02/24/231532
エラー「Failed to cast variant value "" to XXX」時の対応
https://dk521123.hatenablog.com/entry/2021/12/17/102659
エラー「Table does not exist or not authorized」時の対応
https://dk521123.hatenablog.com/entry/2022/08/18/120935
所有権変更後にエラー「current role has no privileges on it」
https://dk521123.hatenablog.com/entry/2023/04/14/151140