Bird
Raised Fist0
Snowflakecloud~5 mins

System-defined roles (ACCOUNTADMIN, SYSADMIN, etc.) in Snowflake - Commands & Configuration

Choose your learning style10 modes available
Introduction
Snowflake uses system-defined roles to control who can do what in your account. These roles help keep your data safe by giving different people the right access without confusion.
When you want to give full control of your Snowflake account to a trusted admin.
When you need to let someone manage databases and warehouses but not the whole account.
When you want to allow users to create and manage their own objects without affecting others.
When you want to separate duties so no one person has too much power.
When you want to quickly assign standard permissions without creating custom roles.
Commands
This command lists all roles available in your Snowflake account, including system-defined roles like ACCOUNTADMIN and SYSADMIN.
Terminal
SHOW ROLES;
Expected OutputExpected
name created_on owner ACCOUNTADMIN 2023-01-01 12:00:00.000 SYSADMIN SYSADMIN 2023-01-01 12:00:00.000 ACCOUNTADMIN PUBLIC 2023-01-01 12:00:00.000 ACCOUNTADMIN
Switches your current role to ACCOUNTADMIN, which has full control over the Snowflake account.
Terminal
USE ROLE ACCOUNTADMIN;
Expected OutputExpected
Role changed to ACCOUNTADMIN
Gives the user named alice the SYSADMIN role, allowing her to manage databases and warehouses.
Terminal
GRANT ROLE SYSADMIN TO USER alice;
Expected OutputExpected
Statement executed successfully.
Shows all roles and privileges granted to the user alice, confirming the SYSADMIN role assignment.
Terminal
SHOW GRANTS TO USER alice;
Expected OutputExpected
grantee_name granted_role granted_on alice SYSADMIN USER
Key Concept

If you remember nothing else from this pattern, remember: system-defined roles in Snowflake provide ready-made permission sets to safely manage your account and data.

Common Mistakes
Trying to assign system-defined roles without using ACCOUNTADMIN role.
Only ACCOUNTADMIN can grant or revoke system-defined roles, so the command will fail.
Switch to ACCOUNTADMIN role first using 'USE ROLE ACCOUNTADMIN;' before granting system roles.
Assuming PUBLIC role grants no access and ignoring it.
PUBLIC role is automatically assigned to all users and can grant basic access, so ignoring it can cause unexpected permissions.
Review PUBLIC role privileges and adjust if needed to avoid unwanted access.
Summary
Use SHOW ROLES to see all system-defined roles in Snowflake.
Switch to ACCOUNTADMIN role to manage system roles and permissions.
Grant system-defined roles like SYSADMIN to users to assign standard permissions.
Verify role assignments with SHOW GRANTS TO USER command.

Practice

(1/5)
1. Which Snowflake system-defined role has full control over the entire account, including all objects and users?
easy
A. ACCOUNTADMIN
B. SYSADMIN
C. SECURITYADMIN
D. PUBLIC

Solution

  1. Step 1: Understand role privileges

    ACCOUNTADMIN is designed to have full control over the Snowflake account, including all objects and user management.
  2. Step 2: Compare with other roles

    SYSADMIN manages data objects, SECURITYADMIN manages users and roles, and PUBLIC has minimal default privileges.
  3. Final Answer:

    ACCOUNTADMIN -> Option A
  4. Quick Check:

    Full account control = ACCOUNTADMIN [OK]
Hint: Full control role is ACCOUNTADMIN, others have limited scopes [OK]
Common Mistakes:
  • Confusing SYSADMIN with full control
  • Thinking SECURITYADMIN manages data objects
  • Assuming PUBLIC has admin privileges
2. Which of the following is the correct syntax to switch to the SYSADMIN role in Snowflake?
easy
A. SET ROLE SYSADMIN;
B. CHANGE ROLE TO SYSADMIN;
C. USE ROLE SYSADMIN;
D. SWITCH TO SYSADMIN;

Solution

  1. Step 1: Recall Snowflake role switching syntax

    The correct command to switch roles is USE ROLE <role_name>;.
  2. Step 2: Verify options

    Only USE ROLE SYSADMIN; matches the correct syntax exactly.
  3. Final Answer:

    USE ROLE SYSADMIN; -> Option C
  4. Quick Check:

    Switch role command = USE ROLE [OK]
Hint: Switch roles with USE ROLE followed by role name [OK]
Common Mistakes:
  • Using SET ROLE instead of USE ROLE
  • Adding extra words like TO or SWITCH
  • Missing semicolon at the end
3. Given the following commands executed in order:
USE ROLE SECURITYADMIN;
CREATE USER test_user PASSWORD='Pass1234';
USE ROLE SYSADMIN;
CREATE TABLE test_table(id INT);
Which statement is true about the created objects?
medium
A. test_user is created successfully; test_table creation fails due to insufficient privileges.
B. Both test_user and test_table creation fail.
C. test_user creation fails; test_table is created successfully.
D. Both test_user and test_table are created successfully.

Solution

  1. Step 1: Analyze role privileges for user creation

    SECURITYADMIN can create users, so CREATE USER test_user succeeds.
  2. Step 2: Analyze role privileges for table creation

    SYSADMIN manages data objects, so CREATE TABLE test_table succeeds.
  3. Final Answer:

    Both test_user and test_table are created successfully. -> Option D
  4. Quick Check:

    SECURITYADMIN creates users, SYSADMIN creates tables [OK]
Hint: SECURITYADMIN for users, SYSADMIN for tables; both succeed [OK]
Common Mistakes:
  • Assuming SYSADMIN can create users
  • Assuming SECURITYADMIN can create tables
  • Confusing role privileges
4. You run the command CREATE USER new_user PASSWORD='abc123'; while using the SYSADMIN role and get an error. What is the most likely cause?
medium
A. Password does not meet complexity requirements.
B. SYSADMIN role does not have privileges to create users.
C. The command syntax is incorrect.
D. The user already exists.

Solution

  1. Step 1: Check role privileges for user creation

    Only SECURITYADMIN or ACCOUNTADMIN can create users; SYSADMIN lacks this privilege.
  2. Step 2: Consider other options

    Password complexity or syntax errors would cause different error messages; user existence would be a different error.
  3. Final Answer:

    SYSADMIN role does not have privileges to create users. -> Option B
  4. Quick Check:

    User creation requires SECURITYADMIN or ACCOUNTADMIN [OK]
Hint: User creation needs SECURITYADMIN, not SYSADMIN [OK]
Common Mistakes:
  • Blaming password complexity without checking error
  • Assuming SYSADMIN can create users
  • Ignoring role privilege boundaries
5. You want to delegate user and role management to one admin and data object management to another, while keeping full control yourself. Which role assignments follow best practices?
hard
A. Assign SECURITYADMIN to user1, SYSADMIN to user2, ACCOUNTADMIN to yourself.
B. Assign ACCOUNTADMIN to user1, SECURITYADMIN to user2, SYSADMIN to yourself.
C. Assign SYSADMIN to user1, ACCOUNTADMIN to user2, SECURITYADMIN to yourself.
D. Assign PUBLIC to user1, SYSADMIN to user2, SECURITYADMIN to yourself.

Solution

  1. Step 1: Understand role responsibilities

    SECURITYADMIN manages users and roles; SYSADMIN manages data objects; ACCOUNTADMIN has full control.
  2. Step 2: Match roles to admin tasks

    Assign SECURITYADMIN to the admin handling users, SYSADMIN to the admin handling data, and keep ACCOUNTADMIN yourself for full control.
  3. Final Answer:

    Assign SECURITYADMIN to user1, SYSADMIN to user2, ACCOUNTADMIN to yourself. -> Option A
  4. Quick Check:

    Delegate roles by responsibility, keep ACCOUNTADMIN for full control [OK]
Hint: Delegate SECURITYADMIN for users, SYSADMIN for data, keep ACCOUNTADMIN [OK]
Common Mistakes:
  • Giving ACCOUNTADMIN to others unnecessarily
  • Assigning PUBLIC role for admin tasks
  • Mixing up role responsibilities
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