正解:C
The correct answer is C. A role with the OWNERSHIP privilege on the database .
A database role is scoped to a specific database. To create a database role, a role must have sufficient privileges on the database where the database role will be created.
Why C is correct:
The role that owns the database has control over that database and can create database roles within it.
Example:
CREATE DATABASE ROLE my_database.my_db_role;
To run this successfully, the executing role must have the required privilege on the database, such as OWNERSHIP.
Why the other options are incorrect:
A). SECURITYADMIN manages users, roles, and grants at the account level, but database role creation depends on privileges on the specific database.
B). A custom role being granted to SECURITYADMIN does not automatically mean it can create database roles in a database.
D). SYSADMIN commonly owns many account objects by default in recommended role models, but the required condition is privilege on the database, not simply holding the SYSADMIN role.
Official Snowflake documentation reference:
Snowflake documentation explains that database roles are created inside databases and require appropriate privileges on the database.
Reference: Snowflake Documentation - Database roles; CREATE DATABASE ROLE; Access control privileges; SnowPro Core Study Guide - Security and Access Control.
==