PracticeVideosBlogFlashcards

3.1 Account Management and Data Governance Overview

Key Takeaways

  • Account Management and Data Governance is roughly 20% of the SnowPro Core (COF-C03) blueprint.

  • Snowflake combines Discretionary Access Control (DAC) with Role-Based Access Control (RBAC): every object has an owner role, and privileges are usually granted to roles, which are granted to users.

  • The system-defined roles are ORGADMIN, ACCOUNTADMIN, SECURITYADMIN, USERADMIN, SYSADMIN, and PUBLIC, each with a fixed place in the hierarchy.

  • Securable objects sit in a containment hierarchy: ORGANIZATION > ACCOUNT > DATABASE > SCHEMA > schema objects (tables, views, stages, etc.).

  • Governance features (masking policies, row access policies, tags, ACCESS_HISTORY) layer on top of RBAC to control which data, not just which objects, a role can see.

Last updated: October 2026

What This Domain Covers

Account Management and Data Governance is roughly 20% of the SnowPro Core (exam code COF-C03) blueprint, making it the third-largest domain after Architecture (31%) and Performance Optimization, Querying, and Transformation (21%). It tests how you secure a Snowflake account: who can do what (access control), how identities are managed (users and authentication), how objects are organized (the hierarchy), and how sensitive data itself is protected (governance policies). The exam rarely asks for a bare definition. It asks which role should run a command, which privilege is missing, or which policy enforces a rule.

The two access-control frameworks

Snowflake combines two models, and the exam expects you to name both:

  • Discretionary Access Control (DAC): every securable object has an owner, and the owner (the role that created it) has full control and can grant access to others.
  • Role-Based Access Control (RBAC): privileges are assigned to roles, and roles are assigned to users (or to other roles). A user normally gets privileges by activating a role that holds them. Snowflake also supports user-based access control (UBAC), which grants privileges directly to a user, but access control considers those direct grants only when secondary roles are set to ALL.

In the standard RBAC pattern you grant a privilege to a role, then grant the role to the user; Snowflake positions direct user grants (UBAC) for cases such as private development and collaboration. A user's effective privileges are the union of all roles in their active role's inheritance chain.

Securable Objects and the Containment Hierarchy

A securable object is anything access can be granted on. Snowflake organizes them in a strict containment hierarchy. Knowing the order matters because privileges on a container do not automatically flow to its contents — you must grant USAGE on the database and schema to even see objects inside them.

LevelExamplesKey point
OrganizationMultiple accountsManaged by ORGADMIN
AccountUsers, roles, warehouses, resource monitors, sharesAccount-level objects, not in a schema
DatabaseSchemasNeeds USAGE to traverse
SchemaTables, views, stages, file formats, sequences, functions, procedures, streams, tasks, pipes, policiesNeeds USAGE to reach objects
Schema objectRows/columns of a tableThe actual data

Note that warehouses, users, roles, resource monitors, and shares are account-level objects — they are not inside a database or schema. A common exam distractor places a warehouse "in a schema." It is not.

Privileges flow to roles

Typical object privileges include USAGE (on databases, schemas, warehouses), SELECT/INSERT/UPDATE/DELETE (on tables), CREATE <object> (on a schema or database), OPERATE and MONITOR (on warehouses), and OWNERSHIP. At a minimum, querying a table needs USAGE on the database, USAGE on the schema, and SELECT on the table, and running the query also needs a warehouse the role can use (USAGE on a warehouse).

How the Domain Is Tested

Expect scenario stems: "A new analyst cannot query a table even though SELECT was granted — what is missing?" (answer: USAGE on the database/schema). Or: "Which role should create a warehouse?" (SYSADMIN, by convention). Or: "Which feature hides credit-card numbers from analysts but shows them to auditors?" (a masking policy, conditioned on the current role).

A mental model: object vs. data

Keep two layers separate in your head:

  1. Object access (RBAC/DAC): can this role even see or use the object?
  2. Data access (governance): of the rows and columns in that object, which can this role see?

Masking policies and row access policies operate on layer 2. A role can hold SELECT on a table (layer 1) and still see only masked values or a filtered subset of rows (layer 2). Many questions hinge on recognizing that the analyst can query the table but the policy changed the result.

Study tactic

For every command in this chapter, ask three questions: which role has the privilege, what object level does it act on, and what governance policy (if any) further restricts the result. If you can answer all three for a scenario, you will get the question right even when the stem buries the cue.

Ownership, Managed Access, and the Account Layer

Two refinements complete the baseline. First, OWNERSHIP is special: the owning role can grant or revoke any privilege on its object and can transfer ownership with GRANT OWNERSHIP ... COPY CURRENT GRANTS. By default, the role that runs the CREATE statement becomes the owner, so the active role at creation time matters. Second, a schema can be created WITH MANAGED ACCESS (CREATE SCHEMA ... WITH MANAGED ACCESS); in a managed-access schema, only the schema owner (or a role with MANAGE GRANTS) can grant privileges on objects in it — object owners can no longer grant access on their own objects.

This centralizes governance and is a tested distinction from ordinary DAC, where any object owner can grant.

The account and organization layer

Above databases sit account-level constructs that this domain manages directly: users, roles, warehouses, resource monitors, shares, network policies, and security integrations. Above the account sits the organization, managed by ORGADMIN, which can create new accounts and view consolidated usage across them. A Snowflake account identifier combines the organization name and the account name. Recognizing which layer an object lives on tells you which role administers it and why a privilege grant succeeds or fails.

LayerAdministered byTypical objects
OrganizationORGADMINAccounts, org usage
AccountACCOUNTADMIN / SECURITYADMINUsers, roles, warehouses, resource monitors, shares, network policies
Database/SchemaSYSADMIN / object ownersTables, views, stages, policies

Keeping this map in mind prevents the common error of looking for a database-level role to fix an account-level problem.

Test Your Knowledge

An analyst has been granted SELECT on a table but still gets an error when querying it. What is the most likely missing privilege?

A

OWNERSHIP on the table

B

A masking policy on the table

C

MONITOR on the warehouse

D

USAGE on the parent database and schema

Test Your Knowledge

In Snowflake's role-based access control (RBAC) model, privileges are granted to which of the following?

A

Roles

B

Users

C

Warehouses

D

Schemas

Test Your Knowledge

Which of the following is an account-level object rather than a schema-level object?

A

Table

B

View

C

Warehouse

D

Stage

Sections you finish are checked off in the contents.