Snowflake ver8.46のリリースよりNotebooksのContainer Runtime向けにSPCSのCompute poolが2つデフォルトで定義されるようになりました
さがらです。
タイトルの通りなのですが、Snowflake ver8.46のリリースよりNotebooksのContainer Runtime向けにSPCSのCompute poolが2つデフォルトで定義されるようになりました。(私のアカウントでは2024年12月10日にCompute poolが作成されていました。)
こちらについて、どういうアップデートなのかの説明と、ユーザー側で必要であればやるべきことについて、本記事でまとめてみます。
今回のアップデートについて
まず2023年12月13日に、Snowflakeより下図のメールが届いていました。
このメールの内容をまとめるとざっとこのような内容となります。
- ver8.46のリリースよりNotebooksのContainer Runtime向けにSPCSのCompute poolが2つデフォルトで定義されるようになった(これらのCompute poolの
OWNERSHIP
権限はACCOUNTADMIN
ロールが持つ)- SYSTEM_COMPUTE_POOL_CPU:「CPU_X64_S」のCompute pool
- SYSTEM_COMPUTE_POOL_GPU:「GPU_NV_S」のCompute pool
- これらのCompute poolが作られた理由は、NotebooksのContainer Runtimeをすぐに起動することができるようにするため
- これらのCompute poolのUSAGE権限は、デフォルトで
PUBLIC
ロールに付与されている- そのため、Snowflakeアカウント内の全ユーザーがこれらのCompute poolを使える状態にある
- これらのCompute poolが不要ならば、メールに記載のクエリで権限削除するかCompute poolごと削除も可能
実際に、Container RuntimeのNotebookを作成しようとすると、下図のようにCompute poolが選択可能です。
showコマンドでも、下図のようにCompute poolの確認ができます。
権限を見ると、OWNERSHIP
権限がACCOUNTADMIN
ロールに、USAGE
権限がPUBLIC
ロールに付いていることがわかります。
Notebookを使う際、Compute poolの作成など気にせずContainer Runtimeを用いてすぐに開発できるのは楽に感じるかもしれません。
しかし、デフォルトでPUBLIC
ロールに付与されているため、アカウント管理者からすると自由に使われてコストが増えないか心配になってしまうと思います。(個人的には、こう考える方のほうが多いと思います。)
そのため、本アップデートの告知メール文に記載のあったクエリを参考に、対策のクエリを載せていきます。
PUBLICロールに権限付与されるの困る!という方向けの対策
以下のクエリを実行して、PUBLIC
ロールからCompute poolのUSAGE
権限をなくしましょう。
USE ROLE ACCOUNTADMIN;
REVOKE USAGE ON COMPUTE POOL SYSTEM_COMPUTE_POOL_CPU FROM ROLE PUBLIC;
REVOKE USAGE ON COMPUTE POOL SYSTEM_COMPUTE_POOL_GPU FROM ROLE PUBLIC;
これにより、これらのCompute poolはOWNERSHIP
権限だけが残り、ACCOUNTADMIN
のみ利用することが出来ます。(もしこれらのCompute poolを別のロールで使いたい場合は、別途USAGE
権限をGRANTしてください。)
Compute poolごと削除してしまいたい!という方向けの対策
以下のクエリを実行して、Compute poolを削除してしまいましょう。
USE ROLE ACCOUNTADMIN;
ALTER COMPUTE POOL SYSTEM_COMPUTE_POOL_CPU STOP ALL;
DROP COMPUTE POOL SYSTEM_COMPUTE_POOL_CPU;
ALTER COMPUTE POOL SYSTEM_COMPUTE_POOL_GPU STOP ALL;
DROP COMPUTE POOL SYSTEM_COMPUTE_POOL_GPU;
これにより、デフォルトで作られたCompute poolはアカウントから削除されました。NotebooksでContainer Runtimeを利用する場合は、別途新しくCompute poolの作成と権限付与を行いましょう!