📖 Scenario: You are working as a data engineer in a company that stores sensitive customer information in Snowflake. Your manager wants you to set up access control to protect this sensitive data from unauthorized users.
🎯 Goal: Build a simple Snowflake access control setup that restricts access to sensitive data by creating a role, assigning privileges, and granting the role to a user.
📋 What You'll Learn
Create a role named data_analyst
Grant SELECT privilege on the customers table to the data_analyst role
Create a user named analyst_user
Grant the data_analyst role to the analyst_user
💡 Why This Matters
🌍 Real World
Companies use access control in Snowflake to protect sensitive customer data from unauthorized access, ensuring compliance with privacy laws.
💼 Career
Understanding how to create roles, grant privileges, and assign roles to users is essential for data engineers and cloud administrators managing secure data environments.
Progress0 / 4 steps
1
Create the data_analyst role
Write a Snowflake SQL command to create a role called data_analyst.
Snowflake
Hint
Use the CREATE ROLE statement followed by the role name.
2
Grant SELECT privilege on customers table to data_analyst
Write a Snowflake SQL command to grant SELECT privilege on the customers table to the data_analyst role.
Snowflake
Hint
Use the GRANT SELECT ON TABLE customers TO ROLE data_analyst; command.
3
Create the user analyst_user
Write a Snowflake SQL command to create a user named analyst_user.
Snowflake
Hint
Use the CREATE USER statement with a password.
4
Grant the data_analyst role to analyst_user
Write a Snowflake SQL command to grant the data_analyst role to the user analyst_user.
Snowflake
Hint
Use the GRANT ROLE statement to assign the role to the user.
Practice
(1/5)
1. Why is access control important in Snowflake when handling sensitive data?
easy
A. It automatically backs up data to prevent loss.
B. It speeds up data queries by caching results.
C. It limits who can view or change the data, protecting privacy.
D. It converts data into a different format for storage.
Solution
Step 1: Understand the purpose of access control
Access control restricts data access to authorized users only, ensuring privacy and security.
Step 2: Identify the role of access control in Snowflake
Snowflake uses access control to protect sensitive data by limiting who can view or modify it.
Final Answer:
It limits who can view or change the data, protecting privacy. -> Option C
Quick Check:
Access control = Limits data access [OK]
Hint: Access control means who can see or change data [OK]
Common Mistakes:
Confusing access control with data backup
Thinking access control changes data format
Believing access control improves query speed
2. Which Snowflake command is used to give a role permission to access a table?
easy
A. DROP PERMISSION ON TABLE
B. REVOKE ROLE ON TABLE
C. CREATE ROLE ON TABLE
D. GRANT SELECT ON TABLE
Solution
Step 1: Identify the command to assign permissions
In Snowflake, the GRANT command is used to give permissions like SELECT on objects.
Step 2: Confirm the correct syntax for granting table access
GRANT SELECT ON TABLE allows a role to read data from the table.
Final Answer:
GRANT SELECT ON TABLE -> Option D
Quick Check:
Grant = give permission [OK]
Hint: Use GRANT to give access, REVOKE to remove it [OK]
Common Mistakes:
Using REVOKE to give permissions
Confusing CREATE ROLE with granting permissions
Using DROP PERMISSION which is invalid
3. Given this Snowflake SQL snippet:
GRANT SELECT ON TABLE sales TO ROLE analyst;
SHOW GRANTS TO ROLE analyst;
What will the SHOW GRANTS command display?
medium
A. It shows that the analyst role has SELECT permission on the sales table.
B. It shows all users assigned to the analyst role.
C. It shows the data inside the sales table.
D. It shows the creation date of the sales table.
Solution
Step 1: Understand the GRANT command effect
The GRANT command gives the analyst role SELECT permission on the sales table.
Step 2: Understand what SHOW GRANTS TO ROLE does
This command lists all permissions granted to the specified role, here analyst.
Final Answer:
It shows that the analyst role has SELECT permission on the sales table. -> Option A
Quick Check:
SHOW GRANTS = list permissions [OK]
Hint: SHOW GRANTS lists permissions for roles [OK]
Common Mistakes:
Thinking SHOW GRANTS lists users
Expecting SHOW GRANTS to show table data
Confusing SHOW GRANTS with SHOW TABLES
4. A user complains they cannot query a sensitive table even though they belong to a role with SELECT permission. What is the likely cause?
medium
A. The table does not exist in the database.
B. The user was not assigned the role with SELECT permission.
C. The user has too many roles assigned.
D. The SELECT permission was granted to a different table.
Solution
Step 1: Check role assignment to user
Even if a role has permission, the user must be assigned that role to use it.
Step 2: Verify the user's roles include the one with SELECT permission
If the user lacks the role, they cannot query the table despite the role's permissions.
Final Answer:
The user was not assigned the role with SELECT permission. -> Option B
Quick Check:
User needs role assigned to access data [OK]
Hint: User must have the role assigned to use its permissions [OK]
Common Mistakes:
Assuming permission applies without role assignment
Blaming table existence without checking roles
Thinking too many roles cause access denial
5. You want to protect sensitive customer data in Snowflake by allowing only the marketing team to view it. Which approach best follows access control best practices?
hard
A. Create a role named marketing_team, grant SELECT on the customer table to this role, then assign the role to marketing users.
B. Grant SELECT on the customer table directly to each marketing user individually.
C. Create a separate copy of the customer table with limited data and share it with marketing users.
D. Encrypt the customer table and share the encryption key with marketing users.
Solution
Step 1: Use roles to manage permissions efficiently
Assigning permissions to a role and then assigning that role to users simplifies management.
Step 2: Grant SELECT permission on the sensitive table to the marketing_team role
This limits access to only users with that role, protecting data.
Final Answer:
Create a role named marketing_team, grant SELECT on the customer table to this role, then assign the role to marketing users. -> Option A
Quick Check:
Use roles for permission management [OK]
Hint: Grant permissions to roles, assign roles to users [OK]
Common Mistakes:
Granting permissions directly to users instead of roles
Sharing copies instead of controlling access
Relying only on encryption without access control
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.