Snowflake SnowPro Advanced: Data Engineer (DEA-C02) · 14% practice allocation

Snowflake DEA-C02: Data Governance Practice Questions

5 free sample questions from the Data Governance domain, with answers and explanations. The full DEA-C02 bank has 262 questions across 5 domains. Questions are scenario-based and written from the official Snowflake exam guide.

1.

Which statements about Snowflake's GRANT FUTURE PRIVILEGES syntax are accurate? (Select TWO)

  • A. Future grants are revoked automatically if the object ownership is transferred to a different role.
  • B. Future grants can be defined at the database level to apply to all schemas within the database, but not at the schema level.
  • C. If an explicit privilege is later granted on a specific object that is covered by a future grant, the explicit grant takes precedence for that object only.✓ Correct
  • D. Future grants apply retroactively to all existing tables in the schema at the time the GRANT FUTURE statement is executed.
  • E. GRANT FUTURE SELECT ON TABLES IN SCHEMA mydb.myschema TO ROLE analyst_role automatically grants SELECT on all tables created in that schema going forward, without requiring additional GRANT statements.✓ Correct
Explanation

Option E is correct: GRANT FUTURE PRIVILEGES is designed exactly for this forward-looking use case — all tables created in the specified schema after the grant is issued will automatically inherit the privilege for the specified role, eliminating the need for manual per-object grants. Option C is correct: explicit object-level grants override future grants for that specific object; this is important for exceptions to the default pattern (e.g., restricting a sensitive table that would otherwise be covered by a future grant). Option D is false and is a very common misconception — future grants are NOT retroactive; they only apply to objects created after the GRANT FUTURE statement is executed. Existing objects require separate grants. Option B is incorrect — future grants CAN be defined at both the database level (applying to all schemas in the database) AND the schema level. Option A is false — future grants are not automatically revoked upon ownership transfer; ownership changes affect OWNERSHIP privilege, not future grant assignments.

2.

A Snowflake data engineer is configuring OAuth for a third-party ETL tool to connect to Snowflake programmatically. The security team requires that access tokens have a short lifespan and that the tool can obtain new tokens without user interaction. Which OAuth flow is most appropriate for this server-to-server integration, and what Snowflake object must be created to enable it?

  • A. Implicit flow; create a Security Integration of type SAML2
  • B. Resource Owner Password Credentials flow; create a Security Integration of type OAUTH with OAUTH_CLIENT = LOOKER
  • C. Authorization Code flow; create a Security Integration of type OAUTH with OAUTH_CLIENT = CUSTOM
  • D. Client Credentials flow; create a Security Integration of type OAUTH with OAUTH_CLIENT = CUSTOM✓ Correct
Explanation

Client Credentials flow is the correct OAuth 2.0 flow for machine-to-machine (server-to-server) access because it does not require human interaction — the client authenticates directly using its own credentials and receives an access token. In Snowflake, this requires creating a Security Integration of type OAUTH with OAUTH_CLIENT = CUSTOM. Authorization Code flow (C) requires user interaction to obtain an authorization code, making it unsuitable for automated pipelines. Implicit flow (A) is a browser-based flow deprecated for security reasons and uses a SAML2 integration for SSO, not OAuth programmatic access. Resource Owner Password Credentials flow (B) requires passing user credentials directly, which defeats the purpose of OAuth and is also deprecated; OAUTH_CLIENT = LOOKER is a partner-specific preset, not a general custom integration.

3.

A security audit requires demonstrating which Snowflake users accessed a specific sensitive table named FINANCE.PUBLIC.PAYROLL during the last 30 days, including the queries they ran. Which Snowflake resources should the auditor query? (Select TWO)

  • A. SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY to retrieve table-level access events
  • B. INFORMATION_SCHEMA.TABLE_PRIVILEGES to list current privilege grants on the table
  • C. SNOWFLAKE.ACCOUNT_USAGE.ACCESS_HISTORY to identify which base objects (tables) were read or written and by which user✓ Correct
  • D. SNOWFLAKE.ACCOUNT_USAGE.STAGE_USAGE_HISTORY to identify file-level access
  • E. SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY to retrieve the SQL text and user for all queries executed✓ Correct
Explanation

QUERY_HISTORY (option E) records every query executed, including the SQL text, user name, role, and timestamp—essential for showing what queries were run. ACCESS_HISTORY (option C) records which base objects (tables, views, columns) were accessed by which user in each query, making it the definitive source for proving table-level access. Together they provide both the query content and the confirmed object-level access. Option A (LOGIN_HISTORY) records only authentication events (logins), not table access. Option D (STAGE_USAGE_HISTORY) tracks file stage usage, not table reads. Option B (INFORMATION_SCHEMA.TABLE_PRIVILEGES) shows current privilege grants, not historical access events—it cannot show who accessed the table in the past.

4.

Which of the following statements about Secure Views in Snowflake are correct? (Select TWO)

  • A. Secure Views prevent the query optimizer from using statistics from the underlying base table, which may result in less optimal query plans.✓ Correct
  • B. Secure Views encrypt the underlying data at rest using a customer-managed key, unlike regular views.
  • C. The definition of a Secure View is hidden from users who are not the owner of the view, preventing reverse-engineering of the SQL logic.✓ Correct
  • D. Secure Views automatically apply dynamic data masking policies to all columns in the base table.
  • E. A Secure View can be used as the basis of a data share, and the recipient account cannot inspect the view definition.
Explanation

Option A is correct: Snowflake intentionally restricts the query optimizer for Secure Views to prevent inference of underlying data through execution plan metadata or statistics leakage — this is a documented trade-off of using Secure Views. Option C is correct: the DDL/SQL definition of a Secure View is hidden from all users except the owner (or users granted the ACCOUNTADMIN role), which prevents logic and schema reverse-engineering. Option B is wrong: Secure Views have nothing to do with encryption at rest or customer-managed keys (Tri-Secret Secure is a separate feature); data encryption is managed at the storage layer regardless of view type. Option D is wrong: Secure Views do not automatically apply masking policies; masking policies must be explicitly attached to columns. Option E contains a partial truth (Secure Views can be shared), but the statement is slightly misleading — in data sharing contexts the recipient cannot see the definition, but this is a consequence of C, not an independent property; however, more critically, Option E alone is not listed as correct because the stronger, more precise correct answers are A and C as core properties of Secure Views.

5.

An organization implements a Snowflake data product layer using Secure UDFs to abstract sensitive business logic. A data engineer notices that a user with the ANALYST role can still infer salary bands by calling the secure UDF with many different input values and observing the outputs. Which THREE security controls should be applied to reduce this risk? (Select THREE)

  • A. Apply a row access policy on the underlying table so the UDF only operates on rows the caller is permitted to see✓ Correct
  • B. Implement rate limiting at the Snowflake network policy level by restricting the source IP range to known analyst workstations
  • C. Grant USAGE on the UDF only to roles that have a business need, rather than PUBLIC✓ Correct
  • D. Replace the Secure UDF with a standard UDF to allow Snowflake's optimizer to cache results and reduce repeat query exposure
  • E. Enable Snowflake's query result caching to prevent the UDF from being invoked multiple times
  • F. Add logic inside the UDF to call IS_ROLE_IN_SESSION() and return NULL for roles not authorized to receive granular outputs✓ Correct
Explanation

Option A (row access policy on the underlying table) limits the input data the UDF can process per caller, reducing the ability to probe arbitrary values. Option C (scoped USAGE grants) limits which roles can invoke the UDF at all, reducing the attack surface. Option F (IS_ROLE_IN_SESSION logic inside the UDF) adds an explicit authorization check so unauthorized roles receive NULL or a generic output instead of meaningful values. Together these form a defense-in-depth approach. Option B (network policy IP restriction) reduces the network attack surface but does not prevent authorized analysts at those workstations from probing the UDF—it addresses a different threat. Option D is incorrect and counterproductive: replacing a Secure UDF with a standard UDF would expose the UDF definition and make inference easier, not harder. Option E (query result caching) does not prevent inference attacks; it only avoids re-execution of identical queries, which a probing attacker would naturally vary anyway.

Test yourself across every DEA-C02 domain

The free DEA-C02 practice test mixes about 20 questions weighted like the exam. The full 262-question bank adds instant grading, flashcards and a timed mock exam.

Study this domain

Data Governance study guide (DEA-C02) →

Other DEA-C02 domains

← All Snowflake SnowPro Advanced: Data Engineer study resources