/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2023/02/08 読んだ記事まとめ(Snowflakeの3つのロール)

ChatGPT に関する話題で慌ただしいですね。Google は社内でコードレッド(緊急事態)を宣言して対応しているという報道もあります。

(1)検索→(2)検索結果からWebサイトを選ぶ→(3)記事を読む→(4)探している情報を見つけるという4ステップが、(1)ChatGPTに聞く→(2)探している情報が提供されるという2ステップに大幅に短縮され、検索エンジンの Google としては緊急事態なのもうなづけます。そもそも検索エンジンからWebサイトを探すようなことはせず、InstagramやPinterestなどで画像から情報を選び取ることも増えているようですし、分野によって検索エンジンを使い分けるようになるのかもしれません。

www.itmedia.co.jp

今日は Snowflake から1本。

Snowflake: Primary, Secondary & Database Roles

medium.com

Snowflakeにはロールという概念があり、そのロールには3つ; Primary Role, Secondary Role, Database Role があります。昨年 SnowPro Core の資格を取った時には Primary Role しか学習しませんでしたが、Secondary Role は何年も前からあり、Database Role は去年末に追加されたようです。

Primary Role はいわゆる UI 上でも確認できるロールのことで、Snowflake のさまざまなオブジェクトへの権限が付与されています。Snowflake はロールを中心に回っているようで、バーチャルウェアハウスへの権限もユーザではなくロールに紐づけたり、CREATE TABLE などした際のテーブルオーナーはユーザではなく、その時に実行したロールとなります。そのため、ユーザアカウントが削除されてデータにアクセスできなくなったという事故は起こらないようになっています。

Primary Role を使っていて不便なのは、さまざまなデータベースやテーブルがあって細かく権限管理されている場合、クエリ実行する際にロールをいちいち切り替える必要があることです。Secondary Role はこの問題を解消するために導入されています。例えば以下の構文を実行すると、そのユーザセッションに限り、そのユーザが付与されている全てのロールの権限が一度に付与されます。

USE SECONDARY ROLES ALL;

Database Role は、データベース内のオブジェクト(スキーマ、テーブル、ビューなど)に限って権限付与できるロールです。記事を読む限り新しい機能というよりは、ロール設計をしやすくするために導入された印象です。データベースが複数存在する場合はデータベースごとにさまざまな Database Role を用意しておき、それを Primary Role に付与すれば管理がしやすくなります。