Snowflakeでユーザー管理を正しく設定することは、セキュリティや運用の安定性にとても大事です。
本記事では、初めてSnowflakeを触る方でも理解できるように、基本の考え方からSnowflakeの標準機能を使って、ユーザー作成の基本的な流れをわかりやすく解説します。
また、今回は無料トライアル環境を使っていきます。
アクセス制御の基本的な考え方(DACとRBAC)
ユーザー作成に入る前に、Snowflakeの「アクセスをどう管理するか」の仕組みを押さえましょう。
任意アクセス制御(DAC:Discretionary Access Control)
- リソースの所有者(作成者)が権限を管理する方式
- 例:ファイルを作成したユーザーが、自分で「誰に読み取りを許可するか」を決められる
- 柔軟だが、管理が複雑化しやすい
ロールベースアクセス制御(RBAC:Role-Based Access Control)
- 「ロール(役割)」単位で権限をまとめて付与する方式
- 例:営業部ロールに「顧客DB参照」の権限を付与し、営業部員には営業部ロールを割り当てる
- ユーザーに直接権限を付与しないため、組織的で管理しやすい
Snowflakeの基本的な考え方は「ロールを通じた組織的な管理(RBAC)」をベースにしつつ、それに加えてになります。
- アカウント(Account)
- Snowflake環境そのもの(ビル全体に例えられる)
- ユーザー(User)
- Snowflakeにログインする人やサービス(社員が持つ入館証)
- ロール(Role)
- そのユーザーができる操作のまとまり(社員の役職にあたる)
ポイントとして、ユーザーに直接権限を付けるのではなく、「ロールに権限を与えて → ロールをユーザーに割り当てる」という考え方です。(RBAC:ロールベースアクセス制御)
まずはシステムロールを理解しよう
Snowflakeの無料トライアル環境では最初から用意されている管理用ロールがあります。
- ORGADMIN
- 組織全体の最高管理。組織レベルで運用を管理する別個のロールです。システムロールの階層には含まれません。
- ACCOUNTADMIN
- 単一アカウントの最高管理者。アカウント内では全ての権限を持つ「スーパー管理者」です。
- SECURITYADMIN
- セキュリティと権限の管理者。SYSADMINが作成したオブジェクトへのアクセス権などを管理します。
- SYSADMIN
- オブジェクト作成の管理者。データベースやウェアハウスなど、システム内のオブジェクトを作成・管理します。
- USERADMIN
- ユーザーとロールの作成担当者。SECURITYADMINの下位に位置し、ユーザーの作成を専門に行います。
- PUBLIC
- 全ユーザーが持つ基本ロール。特別な権限はなく、最も権限が低いロールです。

(引用:アクセス制御の概要 | Snowflake Documentation)
本記事では、ユーザー作成はUSERADMIN、ロール付与はSECURITYADMINを扱います。
実践!ユーザーを作ってみよう
新規Worksheetsの作成
Snowflakeホーム画面左側から「Projects」>「Worksheets」を選択します。

画面右上の「+」アイコンから新規で「SQL worksheet」を作成します。

新規Worksheetが表示されることを確認します。

赤枠の3点リーダーから「Rename」でWorksheetの名前を変更します。

「Create Users」にリネームします。

作業ロールに切り替える
DEFAULT_ROLE(ログイン時に自動で有効になるロール。初期状態ではACCOUNTADMINが設定されている)からユーザー作成ができるロール(USERADMIN)に切り替えます。
USE ROLE USERADMIN;

ユーザーを作成する
新しいユーザーを作成します。
以下は「USER01」というユーザーを作成する例です。「USER01」にはシステム管理者としてSYSADMINを付与します。
CREATE USER USER01
PASSWORD = 'StrongPassword!2025'
DEFAULT_ROLE = SYSADMIN
DEFAULT_WAREHOUSE = COMPUTE_WH
MUST_CHANGE_PASSWORD = TRUE;

主な項目について説明します。
- PASSWORD : 初期パスワード(ご自身で設定してください)*1
- DEFAULT_ROLE : ログイン時に自動で有効になるロール
- DEFAULT_WAREHOUSE : ログイン時に利用するウェアハウス
- MUST_CHANGE_PASSWORD : 初回ログイン時にパスワード変更を必須にする
標準ロールの付与
前項のユーザー作成はUSERADMINロールで行いました。
続いて、ロールの付与にはSECURITYADMIN権限を使用するため、ロールをSECURITYADMINに切り替えます。
その後、作成したユーザーに必要なロールを割り当てます。
USE ROLE SECURITYADMIN;
GRANT ROLE SYSADMIN TO USER USER01;

なお、PUBLIC ロールはすべてのユーザーに自動で付与されているため、改めて付与する必要はありません。付与しても、ユーザーにロール自体は付与されない動きになりますので、注意が必要です。
ユーザーの確認
ユーザー一覧の確認
SHOW USERS;

赤枠USER01が作成できていることを確認します。
特定ユーザーのロール確認
SHOW GRANTS TO USER USER01;

ROLEにSYSADMINが付与されていることを確認します。
ユーザー削除(クリーンアップ)
テスト用に作成したユーザーは不要になったら削除しましょう。
DROP USER USER01;

まとめ
この記事では、一例として以下の手順でユーザー作成を行いました。
- ユーザーは USERADMIN で作成する
- ロールの付与にはSECURITYADMINを使用する
- ユーザーには 標準ロールを設定するとともにGRANTコマンドで権限付与 を行う
- SHOW USERSや SHOW GRANTSで確認できる
- 検証後は不要なユーザーを削除してクリーンな環境を保つ
Snowflakeのユーザー管理は、セキュリティや運用の第一歩です。まずは標準的な流れを理解し、徐々にパスワードポリシーやネットワークポリシーなどに発展させていくとよいでしょう。
嘉納 智之(日本ビジネスシステムズ株式会社)
Data&AI事業本部 Dataソリューション1グループ所属。
Microsoft 365サービスの運用保守を担当してきました。現在はData×AI関連を勉強中。
趣味はゴルフです。
コメント