Snowflake security is multi-layered.
It includes:
Identity & authentication
Authorization (RBAC)
Encryption
Network & session controls
Data governance & fine-grained security features
Understanding this topic is essential for the exam because Snowflake emphasizes secure, governed access to data at every layer of the architecture.
Identity & authentication answer the question:
“Who is trying to access Snowflake, and how do we verify that they are truly who they claim to be?”
This section covers users, login methods, and authentication mechanisms.
Each Snowflake user is represented by a user object that contains attributes controlling how they log in and which defaults they use.
Important user properties include:
LOGIN_NAME
The username used for authentication.
DEFAULT_ROLE
The role automatically activated when the user logs in
(e.g., ANALYST_ROLE, ETL_ROLE, etc.)
DEFAULT_WAREHOUSE
Determines which warehouse is used when queries run without specifying one.
DEFAULT_NAMESPACE
The default database + schema a user lands in.
Email / RSA public key / MFA settings
Depending on organization requirements.
You can apply password requirements such as:
Length
Complexity
Rotation frequency
Lockout policies
Snowflake supports reusable password policies that can be bound to multiple users.
Users can be created by:
SECURITYADMIN (recommended)
ACCOUNTADMIN (has full power, but should be used carefully)
A typical command:
CREATE USER john
PASSWORD = 'StrongPassword123'
DEFAULT_ROLE = analyst
DEFAULT_WAREHOUSE = bi_wh;
Snowflake supports multiple authentication mechanisms. Understanding when to use each one is frequently tested.
Most basic method.
Good for small teams or individual users.
Not ideal for enterprise security at scale.
Adds a second layer of protection (e.g., Duo push).
Strongly recommended when using username/password.
Uses a private key stored locally and a public key registered in Snowflake.
Ideal for:
Automated scripts
CI/CD pipelines
Service accounts
It removes the need to store passwords.
Token-based authentication.
Used by:
BI tools
Analytic applications
Custom client apps
Snowflake supports:
Snowflake OAuth
External OAuth
Uses identity providers (IdPs):
Okta
Azure AD
Ping Identity
Others
Best option for enterprises because:
Centralized identity lifecycle
Strong governance
Automatic deprovisioning
Used typically by:
Tableau
Power BI
External applications that issue OAuth tokens
You should know:
Federated authentication is strongly recommended for enterprise environments
Key pair authentication is ideal for automated workloads
MFA is recommended for password-based logins
Authorization answers the question:
“What can the user do inside Snowflake?”
Snowflake uses RBAC (Role-Based Access Control), which is one of the cleanest and most powerful security models in modern data platforms.
Securable objects are the things you can grant or deny access to:
Account
User
Warehouse
Database
Schema
Table / View
Stage
File format
Pipe
Task
Stream, Materialized View, etc.
Privileges define what actions are allowed on an object. Examples:
USAGE
SELECT
INSERT / UPDATE / DELETE
CREATE TABLE
MODIFY
MONITOR
OPERATE (e.g., for tasks/pipes)
Privileges are always granted to roles, not to users.
Roles are containers for privileges.
System roles:
ORGADMIN
Highest-level role at the organizational level.
ACCOUNTADMIN
Full control over a Snowflake account.
SECURITYADMIN
Manages users, roles, and grants.
SYSADMIN
Creates/owns warehouses, databases, schemas, tables.
PUBLIC
Default role automatically granted to all users.
Anything granted to PUBLIC is visible to everyone.
Custom roles:
ETL_ROLE
ANALYST_ROLE
BI_ROLE
DATA_SCIENCE_ROLE
Custom roles support least-privilege access.
Roles can be granted to other roles (role nesting).
This creates a hierarchy.
Example:
ETL_ROLE → DATA_ENGINEERING_ROLE → SYSADMIN
A user’s effective privileges =
Privileges of the active role
PLUS privileges inherited through that role’s parent roles
Snowflake computes this automatically.
Always provide only the minimum required privileges:
Create task-specific roles
Grant narrowly scoped privileges
Do not use extremely powerful roles in daily work
These superuser roles should be used rarely:
ACCOUNTADMIN: emergency or account-wide configuration
SECURITYADMIN: user/role administration only
Anything granted to PUBLIC is visible to all roles and all users.
Avoid granting sensitive permissions to PUBLIC.
Network security ensures who can connect, from where, and how traffic is protected.
Network policies allow Snowflake admins to:
Allow or block specific IP ranges
Apply policies at:
Account level
User level
This prevents unauthorized connections from unknown networks.
Example scenarios:
Allow only office VPN IPs
Block all public networks
Restrict sensitive accounts to specific IP ranges
Depending on the cloud provider, private connectivity options include:
AWS PrivateLink
Azure Private Link
GCP Private Service Connect
These connections:
Avoid the public internet
Improve security
Improve governance compliance
Often used by enterprises with strict network controls.
All network communication uses TLS encryption:
Between users and Snowflake
Between warehouses and storage
Between services inside Snowflake
This prevents network-level snooping or tampering.
Encryption protects data both at rest and in transit.
Snowflake uses always-on end-to-end encryption.
Snowflake encrypts:
Files in stages
Micro-partition data in storage
Backups involved in Time Travel
Fail-safe storage
All network traffic
Encryption happens automatically—no user configuration required.
Snowflake uses a hierarchical key model, which gives strong security and easy rotation.
Chain example:
Account master key
↓
Database key
↓
Table key
↓
Micro-partition file key
Benefits:
Easy rotation
Compartmentalized access
Defense-in-depth
Snowflake automatically rotates:
File keys
Table/database keys
Account master key
Enterprises can optionally integrate customer-managed keys via cloud KMS services.
This gives organizations additional control for compliance.
Beyond RBAC, Snowflake provides several deeper governance features allowing:
Row-level security
Column-level masking
Policy-based access
Metadata tagging
Essential for industries with strong compliance requirements (GDPR, HIPAA, etc.).
Secure views hide:
Underlying table structure
Column definitions
Sensitive logic
They prevent users from circumventing security by analyzing query plans.
Secure UDFs ensure that underlying data or logic is not exposed.
Row Access Policies enforce row-level security.
Example:
A user only sees rows where:
region = USER_REGION
department = USER_DEPARTMENT
When applied to a table, Snowflake automatically filters rows based on policy logic.
Masking policies hide or transform sensitive values at the column level:
Examples:
Mask credit cards: **** **** **** 1234
Mask emails: show only the domain
Mask phone numbers based on user role
This allows analysts to work with safe versions of PII.
Tags let you attach metadata such as:
“PII”
“Financial”
“Confidential”
“Regulated-Data”
Policies can be applied based on tags, enabling automated governance.
For example:
All columns tagged “PII” must automatically be masked for non-privileged roles.
Session policies define and enforce how long user sessions may remain active. They allow administrators to implement strict session-level controls aligned with corporate security standards.
Session policies extend Snowflake’s security model by controlling user session behavior beyond authentication. They allow administrators to enforce consistent inactivity limits across users or groups of users.
Key capabilities include:
Maximum session lifetime
Maximum idle time before automatic termination
Security requirements at the session level (for example, stricter idle timeout for privileged roles)
These policies directly help organizations comply with security frameworks that require strict session management (such as SOC2, ISO 27001, and PCI DSS).
Session policies can be applied:
At the account level, enforcing global defaults
At the user level, overriding account defaults for specific users
This dual granularity makes them useful for environments where different teams have distinct security expectations.
Session policies help ensure:
Reduction of lingering active sessions
Lower risk of unauthorized access from stale sessions
Enforcement of corporate security rules uniformly
Access History provides detailed visibility into which users accessed which data, including fine-grained column-level lineage.
Access History records:
Which objects a user touched
Which columns were accessed
The exact query operations performed
It is a full audit trace of data interactions.
Typical enterprise use cases include:
Compliance auditing (GDPR, HIPAA, SOX)
Security incident investigations
Monitoring high-risk data access patterns
Verifying masking and row-access policy effectiveness
Understanding column-level lineage
Access History enables advanced anomaly detection, such as:
Unusual access of sensitive columns
Escalation of privileges followed by unexpected data reads
Lateral movement across schemas
Access history is available through the ACCOUNT_USAGE and ORGANIZATION_USAGE schema views.
Snowflake uses a strict ownership model that determines who has ultimate control over every object.
Every object is owned by the role that created it. This is different from privilege-based RBAC inheritance.
Ownership does not cascade through role hierarchies.
If Role A owns a table and Role B inherits Role A, Role B does not become the owner.
The owning role can:
Modify the object
Drop the object
Transfer ownership
Grant privileges on the object
No non-owner role can perform these actions unless explicitly granted privileges.
Transferring ownership using GRANT OWNERSHIP is a destructive operation because:
All existing privileges on the object are removed
After transferring ownership, privileges must be re-granted manually
This prevents accidental privilege retention across ownership changes
Understanding this behavior is essential for exam questions involving role hierarchies and object lifecycle.
Future grants allow administrators to automate privilege assignment for objects created in the future.
Future grants ensure new objects automatically receive the correct privileges without manual intervention.
Future grants apply to:
Future tables
Future schemas
Future views
They must be defined at:
The schema level
The database level
Exam questions often test whether the student recognizes that future grants cannot be applied directly at the table level.
Future grants are highly valuable when:
Data engineering teams continuously create new tables
Multiple schemas require consistent privilege logic
Data governance requires predictable access patterns
Proper design of future grants reduces administrative overhead and avoids privilege drift.
Understanding container-level privileges is essential because Snowflake uses a hierarchical container model (database → schema → object).
Important privileges include:
Allows the role to reference the object.
For example:
USAGE on a database allows access to its schemas
USAGE on a warehouse allows the role to use the warehouse for queries
Without USAGE, no subordinate object can be accessed.
Allows creation of new objects within the container.
Examples:
CREATE TABLE in a schema
CREATE SCHEMA in a database
Allows altering objects within the container.
This includes renaming objects, modifying properties, or changing structures.
Exam questions often test scenarios such as:
A role with USAGE on a database but no USAGE on a schema
A role with CREATE but lacking USAGE
Multi-schema environments where roles need both container and object-level privileges
A deep understanding of privilege interplay is essential for RBAC-related questions.
Security integrations provide the connection between Snowflake and external authentication or secure computation systems.
Security integrations define the configuration Snowflake needs to:
Trust an external identity provider
Accept tokens from OAuth providers
Initiate external compute execution
Support secure communication with external services
Used by BI tools, applications, and services that authenticate via OAuth tokens.
Supports both Snowflake OAuth and external OAuth providers.
Enable federated authentication using enterprise identity providers such as Okta, Azure AD, or Ping Identity.
Support fully centralized identity lifecycle management.
Used for browser-based SSO login flows, particularly for tools that launch authentication flows outside Snowflake’s interfaces.
Define a secure trust configuration allowing Snowflake to call external APIs from within SQL while ensuring that:
External endpoints are trusted
Secrets and credentials are stored securely
Network traffic is properly controlled
Security integrations ensure:
Safe and standards-compliant authentication
Consistent identity governance
Isolation between Snowflake and external compute
Enterprise-grade auditability
They are essential when Snowflake must integrate with external identity, federation, BI, or service workloads.
How does role hierarchy work in Snowflake?
Roles can be granted to other roles, forming a hierarchy where child roles inherit permissions from parent roles.
This allows modular access control. Users are assigned roles, not direct permissions. A common mistake is granting privileges directly to users instead of roles, which breaks scalability and governance.
Demand Score: 85
Exam Relevance Score: 92
What is the difference between a role and a user in Snowflake?
A user is an identity that logs into Snowflake, while a role defines a set of permissions that can be assigned to users.
Roles are the core of RBAC. Users can switch roles during a session. A common mistake is confusing roles as login entities—they are not.
Demand Score: 80
Exam Relevance Score: 88
Why might a user not be able to access a table even if a role has been granted?
The role may not be active in the session, or required parent roles or database/schema privileges are missing.
Snowflake requires correct role activation and full privilege chain. Missing USAGE on database/schema is a common issue.
Demand Score: 83
Exam Relevance Score: 91
What is the purpose of the PUBLIC role?
The PUBLIC role is automatically granted to all users and roles and provides baseline access.
It should be used cautiously since all users inherit it. A common mistake is granting sensitive privileges to PUBLIC.
Demand Score: 78
Exam Relevance Score: 86
What is RBAC in Snowflake?
RBAC (Role-Based Access Control) is a system where permissions are assigned to roles, and roles are assigned to users.
It simplifies permission management and enforces least privilege. Snowflake heavily relies on RBAC for governance.
Demand Score: 82
Exam Relevance Score: 90