SnowflakeのSchemaへのALL権限の付与時にはML Functions向けの権限付与も必要
データ事業本部 機械学習チームの鈴木です。
先日Snowflake AI & MLのML Functionsのリソースを作る際の権限について簡単な記事を出しましたが、ALL権限の付与を実行した際にはML Functionsの機能を含むクラスに対する権限は付与されないことを知ったのでご紹介します。
1. 結論
ALL権限の付与ではクラスに対する権限は付与されないため、直接ロールに付与する必要があります。
"GRANT <権限>"向けの以下のガイドの使用上の注意に記載されています。
例えば、あるロールでML Functionsの異常検知の機能を利用したい場合、以下のように権限付与をする必要があります。
-- OWNERSHIP以外の権限を付与
GRANT ALL ON SCHEMA データベース名.スキーマ名 TO ロール名;
-- SNOWFLAKE.ML.ANOMALY_DETECTION向けの権限を付与
GRANT CREATE SNOWFLAKE.ML.ANOMALY_DETECTION ON SCHEMA データベース名.スキーマ名 TO ロール名;
2. 確認してみた
実際にロールにALL権限を付与してML Functions向けの権限があるか確認してみました。
ロールにはデータベースとウェアハウスのUSAGE権限はあらかじめ付与してあります。
以下のようにALL権限を付与しました。
-- ALL権限の付与
GRANT ALL ON SCHEMA DA_ML_DB.PRIVILEGE_TEST_SCHEMA TO ROLE CM_NAYUTS;
-- ロールに付与された権限の表示
SHOW GRANTS TO ROLE CM_NAYUTS;
付与されている権限にはML Functions向けのものは確かにありません。
ガイドにあるように直接付与しました。
-- ML Functionsの異常検知の権限を付与
GRANT CREATE SNOWFLAKE.ML.ANOMALY_DETECTION ON SCHEMA DA_ML_DB.PRIVILEGE_TEST_SCHEMA TO CM_NAYUTS;
-- ロールに付与された権限の表示
SHOW GRANTS TO ROLE CM_NAYUTS;
ロールに付いた権限に、以下のように異常検知に関するものが追加されたことが確認できました。
終わりに
ML Functionsを利用する際に、ロールにALL権限を付与したのになぜか権限不足で機能が実行できない、という場合には、一度付与された権限を一覧して、必要なものが付いているか確認してみましょう。