Bird
Raised Fist0
Snowflakecloud~5 mins

Creating custom roles in Snowflake - Quick Revision & Summary

Choose your learning style10 modes available
Recall & Review
beginner
What is a custom role in Snowflake?
A custom role is a user-defined set of permissions that controls access to Snowflake resources, allowing tailored access beyond default roles.
Click to reveal answer
beginner
Which SQL command is used to create a custom role in Snowflake?
The command CREATE ROLE <role_name>; is used to create a custom role.
Click to reveal answer
intermediate
How do you grant privileges to a custom role?
Use the GRANT <privilege> ON <object> TO ROLE <role_name>; command to assign permissions to the role.
Click to reveal answer
beginner
Why assign a custom role to a user?
Assigning a custom role to a user controls what actions they can perform, ensuring they have only the permissions needed for their tasks.
Click to reveal answer
intermediate
What is the best practice when creating custom roles?
Create roles with the least privileges needed, assign roles to users carefully, and regularly review role permissions to maintain security.
Click to reveal answer
Which command creates a new custom role in Snowflake?
ANEW ROLE my_custom_role;
BCREATE ROLE my_custom_role;
CADD ROLE my_custom_role;
DMAKE ROLE my_custom_role;
How do you assign a custom role to a user?
AGRANT ROLE my_role TO USER my_user;
BASSIGN ROLE my_role TO USER my_user;
CSET ROLE my_role FOR USER my_user;
DCREATE ROLE my_role FOR USER my_user;
What is the main purpose of creating custom roles?
ATo control user access and permissions
BTo create backups of databases
CTo store data in Snowflake
DTo customize user interface themes
Which privilege can be granted to a role?
ACreate new Snowflake accounts
BChange user passwords
CModify Snowflake UI layout
DSELECT on a table
What is a recommended security practice for custom roles?
AGrant all privileges to every role
BAssign roles randomly
CUse least privilege principle
DAvoid using roles
Explain the steps to create and assign a custom role in Snowflake.
Think about creating, granting permissions, then assigning.
You got /3 concepts.
    Why is it important to follow the least privilege principle when creating custom roles?
    Consider security and control benefits.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of creating a custom role in Snowflake?
      easy
      A. To create a new user account
      B. To store data in a new database
      C. To run SQL queries faster
      D. To control and manage user access permissions

      Solution

      1. Step 1: Understand role purpose

        Custom roles in Snowflake are designed to manage what users can do by controlling permissions.
      2. Step 2: Identify correct function

        Creating a role is not about storing data, creating users, or speeding queries, but about access control.
      3. Final Answer:

        To control and manage user access permissions -> Option D
      4. Quick Check:

        Role purpose = Access control [OK]
      Hint: Roles control permissions, not data or users [OK]
      Common Mistakes:
      • Confusing roles with users
      • Thinking roles store data
      • Assuming roles speed up queries
      2. Which of the following is the correct syntax to create a new role named data_analyst in Snowflake?
      easy
      A. CREATE ROLE data_analyst;
      B. NEW ROLE data_analyst;
      C. MAKE ROLE data_analyst;
      D. ADD ROLE data_analyst;

      Solution

      1. Step 1: Recall Snowflake role creation syntax

        The correct command to create a role is CREATE ROLE role_name;.
      2. Step 2: Match syntax with options

        Only CREATE ROLE data_analyst; uses the correct CREATE ROLE syntax.
      3. Final Answer:

        CREATE ROLE data_analyst; -> Option A
      4. Quick Check:

        CREATE ROLE = correct syntax [OK]
      Hint: Use CREATE ROLE to make new roles [OK]
      Common Mistakes:
      • Using NEW ROLE instead of CREATE ROLE
      • Using MAKE or ADD which are invalid
      • Missing semicolon at the end
      3. Given the commands:
      CREATE ROLE analyst;
      GRANT USAGE ON DATABASE sales_db TO ROLE analyst;
      GRANT ROLE analyst TO USER alice;

      What permission does user alice have on sales_db?
      medium
      A. No permissions on sales_db
      B. Only USAGE permission on sales_db
      C. ALL permissions on sales_db
      D. SELECT permission on sales_db

      Solution

      1. Step 1: Analyze role creation and grants

        The role analyst is created and given USAGE permission on sales_db.
      2. Step 2: Check role assignment to user

        User alice is granted the analyst role, so she inherits its permissions.
      3. Final Answer:

        Only USAGE permission on sales_db -> Option B
      4. Quick Check:

        Role grants USAGE, user inherits USAGE [OK]
      Hint: User gets permissions of assigned roles [OK]
      Common Mistakes:
      • Assuming no permissions without direct grant
      • Confusing USAGE with SELECT permission
      • Ignoring role inheritance
      4. You run this command:
      CREATE ROLE analyst

      but get an error. What is the likely cause?
      medium
      A. You must create a user before creating a role
      B. Role name analyst is reserved and cannot be used
      C. Missing semicolon at the end of the command
      D. CREATE ROLE command is not supported in Snowflake

      Solution

      1. Step 1: Check command syntax

        Snowflake commands require a semicolon at the end to execute properly.
      2. Step 2: Evaluate other options

        Role names like analyst are allowed, users are independent of roles, and CREATE ROLE is supported.
      3. Final Answer:

        Missing semicolon at the end of the command -> Option C
      4. Quick Check:

        Semicolon ends command [OK]
      Hint: Always end SQL commands with a semicolon [OK]
      Common Mistakes:
      • Forgetting semicolon causes syntax error
      • Thinking role names are restricted
      • Believing users must exist first
      5. You want to create a custom role report_viewer that can only read data from the reports schema in the analytics database. Which sequence of commands correctly achieves this?
      hard
      A. CREATE ROLE report_viewer; GRANT USAGE ON DATABASE analytics TO ROLE report_viewer; GRANT USAGE ON SCHEMA analytics.reports TO ROLE report_viewer; GRANT SELECT ON ALL TABLES IN SCHEMA analytics.reports TO ROLE report_viewer;
      B. CREATE ROLE report_viewer; GRANT SELECT ON DATABASE analytics TO ROLE report_viewer;
      C. CREATE ROLE report_viewer; GRANT ALL ON SCHEMA analytics.reports TO ROLE report_viewer;
      D. CREATE ROLE report_viewer; GRANT USAGE ON DATABASE analytics TO ROLE report_viewer; GRANT SELECT ON SCHEMA analytics.reports TO ROLE report_viewer;

      Solution

      1. Step 1: Create the role

        Use CREATE ROLE report_viewer; to make the role.
      2. Step 2: Grant USAGE on database and schema

        Granting USAGE on the database and schema allows access to objects inside.
      3. Step 3: Grant SELECT on all tables in the schema

        Grant SELECT on all tables to allow read access to data.
      4. Step 4: Evaluate options

        CREATE ROLE report_viewer; GRANT USAGE ON DATABASE analytics TO ROLE report_viewer; GRANT USAGE ON SCHEMA analytics.reports TO ROLE report_viewer; GRANT SELECT ON ALL TABLES IN SCHEMA analytics.reports TO ROLE report_viewer; correctly grants USAGE and SELECT at proper levels. CREATE ROLE report_viewer; GRANT SELECT ON DATABASE analytics TO ROLE report_viewer; misses schema and USAGE grants. CREATE ROLE report_viewer; GRANT ALL ON SCHEMA analytics.reports TO ROLE report_viewer; grants ALL which is too broad. CREATE ROLE report_viewer; GRANT USAGE ON DATABASE analytics TO ROLE report_viewer; GRANT SELECT ON SCHEMA analytics.reports TO ROLE report_viewer; grants SELECT on schema which is invalid; SELECT must be on tables.
      5. Final Answer:

        CREATE ROLE report_viewer; GRANT USAGE ON DATABASE analytics TO ROLE report_viewer; GRANT USAGE ON SCHEMA analytics.reports TO ROLE report_viewer; GRANT SELECT ON ALL TABLES IN SCHEMA analytics.reports TO ROLE report_viewer; -> Option A
      6. Quick Check:

        Grant USAGE + SELECT on tables = read access [OK]
      Hint: Grant USAGE on DB/schema, SELECT on tables for read-only role [OK]
      Common Mistakes:
      • Granting SELECT on schema instead of tables
      • Missing USAGE grants on database or schema
      • Granting ALL permissions instead of SELECT only
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard