はじめに
クラウドデータプラットフォームの普及に伴い、データセキュリティの重要性は年々高まっています。
Snowflakeでもセキュリティは「構築後に付け足すもの」ではなく、設計段階から考えるべき基本要素です。
本記事では、「多層防御(Defense in Depth)」の考え方をベースに、Snowflake管理者(特に ACCOUNTADMIN や SECURITYADMIN)が押さえるべき4つのカテゴリを体系的に整理します。
- 認証(ユーザー確認の強化)
- ネットワークセキュリティ(通信経路の制限)
- プライベート接続(閉域化による安全な通信)
- 管理と認可(RBACによる最小権限化)
さらに、Snowflakeのセキュリティ設定で混同されがちな
「Network Policy」「Security Policy」「Session Policy」についても、整理して解説します。
1. 認証:本人確認の強化
MFA(多要素認証)
Snowflakeでは認証ポリシーにMFAを有効化することで、パスワード漏えい時の不正ログインを防止できます。
✅ 認証ポリシーでMFAを強制適用する例
Snowflakeでは「Authentication Policy」を用いて、特定ユーザーまたは全ユーザーに対しMFAを必須化できます。
-- MFAを強制する認証ポリシーを作成
CREATE AUTHENTICATION POLICY enforce_mfa
REQUIRE_MFA = TRUE;
-- アカウント全体にポリシーを適用
ALTER ACCOUNT SET AUTHENTICATION_POLICY = enforce_mfa;
この設定により、アカウント配下の全ユーザーがログイン時にMFAを必須とされます。
SSO(シングルサインオン)連携
社内認証基盤(Azure AD, Okta, OneLoginなど)と連携することで、ログインを一元化できます。
認証情報の管理が容易になり、ユーザーの退職・異動対応もセキュアに運用可能です。
ALTER ACCOUNT SET SSO_ENABLED = TRUE, SSO_PROVIDER = 'your_sso_provider';
2. ネットワークセキュリティ:アクセス元の制御
Snowflakeはインターネット上のSaaS型サービスであるため、**「どこからアクセスを許可するか」**の制御が重要です。
この制御を行うのが Network Policy(ネットワークポリシー) です。
Network Policy の概要
- 対象:アカウントまたはユーザー単位
- 目的:アクセス元IPアドレスの制限
- 効果:許可されたIP以外からのログインを遮断
CREATE NETWORK POLICY corp_policy
ALLOWED_IP_LIST = ('192.168.1.0/24', '203.0.113.0/24');
ALTER ACCOUNT SET NETWORK_POLICY = corp_policy;
3. プライベート接続:閉域化による通信経路の保護
Network Policyが「アクセス元の制御」であるのに対し、プライベート接続は「通信経路の閉域化」に焦点を当てます。
Snowflakeでは以下の仕組みが提供されています:
| 接続方式 | 概要 | 主な利用シーン |
|---|---|---|
| PrivateLink | AWS/Azure/GCPのVPC内にSnowflakeへの専用経路を確立 | 社内ネットワークからの閉域アクセス |
| Partner Connect VPN/Proxy | 閉域ネットワークや認証付きプロキシ経由でアクセス | セキュリティポリシーが厳しい企業環境 |
これにより、インターネットを経由せず安全にSnowflakeへ接続可能となります。
(※プライベート接続の設定はインフラエンジニアの協力が必要な場合があります。)
4. 管理と認可:RBACによる最小権限化
セキュリティの最後の要となるのが「誰が何をできるか」の設計です。
Snowflakeでは RBAC(Role-Based Access Control) を採用しており、権限をロール単位で管理します。
基本的なロール設計
CREATE ROLE DATA_VIEWER;
GRANT USAGE ON SCHEMA MY_SCHEMA TO ROLE DATA_VIEWER;
GRANT SELECT ON ALL TABLES IN SCHEMA MY_SCHEMA TO ROLE DATA_VIEWER;
最小権限の原則
- ロールごとに業務単位で権限を限定する
- システムロール(ACCOUNTADMINなど)の共有を避ける
- 定期的に権限棚卸を実施する
5. Snowflakeの「セキュリティポリシー」体系
Snowflakeのセキュリティポリシーには評価順序が存在します。
上から評価順序が高い順序に並べており、それぞれの主な用途を示します。
| ポリシー名 | 主な用途 |
|---|---|
| Network Policy | アクセス元IPアドレスの制御 |
| Authentication POLICY | 認証の方法設定とその適用 |
| Session Policy | タイムアウト、クエリ上限などの設定 |
このように、「Network」「Session」「Security」はそれぞれ防御層の異なる役割を持っています。
🧩 ポイント:
これらを組み合わせることで、Snowflake環境全体を多層的に守ることができます。
まとめ
Snowflakeのセキュリティは、「認証」「ネットワークセキュリティ」「プライベート接続」「管理と認可」の4つのカテゴリで構成されます。
それぞれの層を明確に設計することで、属人的・断片的な設定から脱却し、組織全体で統一的な防御体系を築くことが可能です。
最後にもう一度、重要なキーワードを整理します。
| 層 | 主な目的 | 代表的な設定 |
|---|---|---|
| 認証 | 本人確認 | MFA・SSO |
| ネットワークセキュリティ | アクセス制御 | Network Policy |
| プライベート接続 | 通信経路の保護 | PrivateLink |
| 管理と認可 | 権限統制 | RBAC設計 |
参考資料
- Snowflake公式ドキュメント - Security Overview
- Snowflake公式 - Network Policy
- Snowflake公式 - Authentication Policy
- Snowflake公式 - Session Policy
🌐 運営ブログのご紹介
📘 MyWay Going(マイウェイ・ゴーイング)
データ連携基盤・ETL・DB設計を専門とするフリーランスエンジニアのポートフォリオサイトです。
Qiitaでの技術発信を軸に、活動実績まとめ・案件進行で得た学び・キャリア構築ノウハウを掲載しています。
気になる方はぜひご覧ください🙌
▶️ 技術発信のハイライト・活動実績・フリーランスとしての取り組みを整理
👉 MyWay Going|データエンジニア活動実績とキャリア戦略