What you will be able to do
- Identify over-privileged roles and users and reduce them with role hierarchies and managed access schemas
- Analyze the risk of compromised service account credentials and choose stronger authentication
- Assess threats from third-party OAuth clients, drivers, and outbound code
- Use Trust Center roles and findings to drive and verify mitigations
1.Over-privileged roles and users
The most common Snowflake threat scenario is too much privilege. ACCOUNTADMIN sits at the top of the system role hierarchy. It is not a superuser, though: it can only view and manage objects when it, or a role below it in the hierarchy, holds privileges on them. Snowflake's recommendations are clear. Give ACCOUNTADMIN to only a few people, and to at least two so they can reset each other's passwords. Require MFA for all of them. Don't make it anyone's default role. Use a different role for automated scripts.
Grant sprawl is a quieter version of the same problem. Outside managed access schemas, an object owner can grant access to any role, including PUBLIC. That is true under RBAC and under user-based access control (UBAC). Managed access schemas take that ability away from object owners: only the schema owner or a role with MANAGE GRANTS can grant privileges there. For review, the GRANTS_TO_ROLES view in ACCOUNT_USAGE lists grants to roles, users, and applications. Direct grants to users skip the role hierarchy, so this query is a useful check:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES
WHERE granted_to = 'USER';The Trust Center automates much of this review. It covers finding over-privileged roles and limiting the number of ACCOUNTADMIN and SECURITYADMIN users. It flags tasks that run with those roles' privileges. Its Users with administrator privileges scanner reports new users whose default role is an administrator role, and recent administrator grants to existing users.
Checkpoint 1 of 6· Check yourself
Data engineers who own tables keep granting SELECT to broad roles. Which control stops owners from granting access while keeping central grant management?
In a managed access schema, object owners can no longer grant access. Only the schema owner or a role with MANAGE GRANTS can. UBAC does not stop owners from granting.
“Only schema owners or a role with the MANAGE GRANTS privilege can grant privileges on objects in a managed access schema.”Source: docs.snowflake.com
2.Compromised service account credentials
Service users authenticate without a person present, so a stolen credential can be used silently. Snowflake asks for TYPE = SERVICE on users created for service-to-service applications. Users marked TYPE=LEGACY_SERVICE need to move to stronger authentication. The baseline rule is that every service user must use an authentication method stronger than a password. The authentication methods differ in what an attacker would steal:
| Method | Documented rating | Compromise consideration |
|---|---|---|
| Workload identity federation | Preferred option | Secretless: no client IDs or secrets to secure and rotate |
| External OAuth | Strong option | Can be secretless if the IdP supports it |
| Key-pair | Not rated | Long-lived credential; mitigate with network policies and a storage and rotation strategy |
| Programmatic access token (PAT) | Not rated | Can be scoped to a specific role to limit damage if compromised |
The Threat Intelligence scanner package looks for signs of credential compromise. It classifies users as human or service and checks for password sign-in without MFA, inactivity, and abnormal failure rates. It runs once a day by default. The Trust Center's Strong Authentication Hub tracks which service users still need to migrate.
Checkpoint 2 of 6· Match them up
Match each Threat Intelligence scanner to what it reports
Tap a term, then the definition that fits it.
Each scanner targets a different sign of credential misuse: weak authentication, repeated failures, unusual source IPs, or dormant accounts that suddenly become active.
“which might indicate attempted takeovers of an account, misconfigurations, exceeded quotas, or permission issues.”Source: docs.snowflake.com
3.Third-party connections and packages
Third-party tools usually connect through an integration, a Snowflake object that sits between Snowflake and the outside service. For a custom OAuth client, you create the integration with CREATE SECURITY INTEGRATION and OAUTH_CLIENT = CUSTOM. The main threat-reduction setting is BLOCKED_ROLES_LIST. It lists roles that a user cannot consent to use with that integration, so the vendor application cannot get tokens for those roles.
Checkpoint 3 of 6· Exam question
Which ACCOUNT_USAGE view should an analyst query to list every table column that currently carries the `PRIVACY_CATEGORY` tag, together with the tag value, when ranking assets by sensitivity?
Correct answer: D — `TAG_REFERENCES`, because it lists each object or column with the tag name, tag value and the level at which it applies
- A. Incorrect. The TAGS view lists tag definitions only (name, schema, allowed values); it does not record which objects carry them.
- B. Incorrect. OBJECT_DEPENDENCIES tracks references such as a view depending on a table, not tag assignments on columns.
- C. Incorrect. POLICY_REFERENCES lists masking, row access and similar policy attachments; tag assignments are not stored there.
- D. Correct. TAG_REFERENCES maps every tagged object and column to the tag and its value, including inherited ones, which is what a criticality inventory needs.
Client software is a risk too. The Trust Center can raise a detection when drivers or other client versions in use have known vulnerabilities or are end-of-life. Its Users with unusual applications used in sessions scanner flags clients that are new for a given user. For code that runs inside Snowflake and calls out, the external access integration from the egress model limits which hosts the code can reach, whoever wrote it. The provided sources do not describe scanning third-party code packages (such as Python libraries) for vulnerabilities. Treat that as a gap to cover with your own process.
Checkpoint 4 of 6· Check yourself
A BI vendor connects through a custom Snowflake OAuth integration. Which setting stops its users from consenting to privileged roles for that integration?
BLOCKED_ROLES_LIST names the roles users cannot consent to with that integration. The other settings deal with secondary roles, network origin, or user type.
“The optional BLOCKED_ROLES_LIST parameter allows you to list Snowflake roles that a user cannot explicitly consent to using with the integration.”Source: docs.snowflake.com
4.Implementing and verifying mitigations
Each threat above has a matching control. Use network policies and the precedence rules for entry points. Use egress rules in external access integrations for exit points. Use role hierarchies under SYSADMIN, managed access schemas, and MFA on ACCOUNTADMIN for privilege. Use SERVICE users with secretless authentication or role-scoped tokens for service credentials. Use BLOCKED_ROLES_LIST for OAuth clients. Programmatic access tokens are a good example of controls working together. The AI Security package flags PATs used with Cortex Code CLI that have no role restriction (ALLOWED_ROLES) or no compliant network policy. If either control is missing, a stolen token could give broad access.
The Trust Center connects identifying a threat to confirming that its mitigation worked, and access to it should follow least privilege as well. An ACCOUNTADMIN grants one of two application roles:
USE ROLE ACCOUNTADMIN;
CREATE ROLE trust_center_admin_role;
GRANT APPLICATION ROLE SNOWFLAKE.TRUST_CENTER_ADMIN TO ROLE trust_center_admin_role;
CREATE ROLE trust_center_viewer_role;
GRANT APPLICATION ROLE SNOWFLAKE.TRUST_CENTER_VIEWER TO ROLE trust_center_viewer_role;| Task | Minimum application role |
|---|---|
| View detection findings | SNOWFLAKE.TRUST_CENTER_VIEWER |
| View violation findings | SNOWFLAKE.TRUST_CENTER_VIEWER |
| Manage violation findings lifecycle | SNOWFLAKE.TRUST_CENTER_ADMIN |
| Manage scanner packages | SNOWFLAKE.TRUST_CENTER_ADMIN |
Checkpoint 5 of 6· Exam question
A newly appointed engineer must document every path through which data can enter or leave an account. Which THREE commands, run across the account, help enumerate those paths?(Select 3)
Correct answers: A, B, D — `SHOW STAGES IN ACCOUNT`, to list external stages with their cloud URLs and any storage integration that grants them bucket access; `SHOW INTEGRATIONS`, to list storage, API, notification, external access and security integrations that connect Snowflake to outside systems; `SHOW SHARES`, to list inbound and outbound shares that move data between this account and other accounts without copying it
- A. Correct. External stages and their URLs are concrete ingress and egress locations for COPY and unload operations.
- B. Correct. Integrations define the trusted outbound and inbound connections, so they must be in the entry and exit inventory.
- C. Incorrect. Warehouses are compute only; their settings do not define any ingress or egress path for data.
- D. Correct. Outbound shares expose data to consumers and inbound shares bring in provider data, so both are data flows to document.
- E. Incorrect. Resource monitors cap credit consumption; they say nothing about where data is delivered or loaded from.
- F. Incorrect. Tags are labels defined by users; they do not describe real connectivity and cannot reveal data entry points.
Violations and detections are mitigated differently. To fix a violation, change the configuration, following the Trust Center's remediation guidance. The finding stays visible until the scanner package runs again, either on schedule or on demand. You can also mark a violation Resolved and record a justification for audit. A detection is a past event and cannot be fixed directly. Investigate it, and if it matters, change controls to prevent similar events.
Checkpoint 6 of 6· Check yourself
You remove an unnecessary ACCOUNTADMIN grant that the Trust Center reported. The violation is still listed. Why?
Scanners re-evaluate the current configuration on their next run. Running the package on demand confirms the fix sooner.
“the violation still appears in the Violations tab until the next scheduled run of the scanner package”Source: docs.snowflake.com
Sources2
Exam traps
Each one states something that sounds right. Open it to see what is actually true.
1.ACCOUNTADMIN is a superuser that can see and manage every object in the account.Why is that wrong?
ACCOUNTADMIN can only view and manage objects when it, or a role below it in its hierarchy, has privileges on them.
Covered in Over-privileged roles and users
2.A Trust Center detection, such as a login from an unrecognized IP, can be remediated and resolved like a violation.Why is that wrong?
A detection is a one-time past event. You investigate it and prevent recurrence, and its lifecycle cannot currently be managed.
Covered in Implementing and verifying mitigations
Practise it for real
Set up least-privilege Trust Center access and check the account for direct user grants
1.As ACCOUNTADMIN, create trust_center_admin_role and grant it the SNOWFLAKE.TRUST_CENTER_ADMIN application role
Why: Only an admin-level application role can manage scanners and the lifecycle of violations
You should see: Both statements succeed and the role exists
2.Create trust_center_viewer_role and grant it SNOWFLAKE.TRUST_CENTER_VIEWER, then grant it to an analyst user
Why: Analysts can review findings without being able to change scanners
You should see: The analyst can open the Violations and Detections tabs but cannot manage scanners
3.Run SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES WHERE granted_to = 'USER';
Why: Direct grants to users bypass the role hierarchy and are a common source of over-privilege
You should see: A list of privileges granted directly to users, to review for over-privilege
Stuck? Get a nudge
If the Trust Center tabs are empty for the viewer role, check that the application role was granted to the role and that the role was granted to the user.
Sources
Every claim above is drawn from one of these pages, quoted as it was written on the date shown.
- 1.
“Assign this role only to a select/limited number of people in your organization.”
↩︎ Over-privileged roles and users“Managed access schemas remove the ability for object owners to grant access to other roles or users.”
↩︎ Over-privileged roles and users“Note that ACCOUNTADMIN is not a superuser role.”
↩︎ Exam trap 1“Only schema owners or a role with the MANAGE GRANTS privilege can grant privileges on objects in a managed access schema.”
↩︎ Checkpoint - 2.
“Finds newly created users whose default role is an administrator role”
↩︎ Over-privileged roles and users“Some client versions (for example, drivers) currently in use may have known vulnerabilities or have reached their end-of-life status.”
↩︎ Third-party connections and packages“When either control is missing, a compromised PAT could allow broad access to the account.”
↩︎ Implementing and verifying mitigations“To view or manage scanners and their findings by using the Trust Center, a user with the ACCOUNTADMIN role must grant the SNOWFLAKE.TRUST_CENTER_VIEWER”
↩︎ Implementing and verifying mitigations“Because the event is unique and happened in the past, direct remediation of a detection isn’t possible.”
↩︎ Exam trap 2“which might indicate attempted takeovers of an account, misconfigurations, exceeded quotas, or permission issues.”
↩︎ Checkpoint“the violation still appears in the Violations tab until the next scheduled run of the scanner package”
↩︎ Checkpoint - 3.
“When you create a Snowflake user object for a service-to-service application, specify TYPE = SERVICE.”
↩︎ Compromised service account credentials“Security risks associated with long-lived credentials must be mitigated with other security measures like network policies and a robust storage and rotation strategy.”
↩︎ Compromised service account credentials - 4.
“every service user must use an authentication method that is stronger than a password.”
↩︎ Compromised service account credentials - 5.
“An integration is a Snowflake object that provides an interface between Snowflake and third-party services, such as a client that supports OAuth.”
↩︎ Third-party connections and packages“The optional BLOCKED_ROLES_LIST parameter allows you to list Snowflake roles that a user cannot explicitly consent to using with the integration.”
↩︎ Checkpoint