授予 PUBLIC 角色的 PYPI_REPOSITORY_USER 数据库角色

在创建 Python UDFs、UDTFs、UDAFs 和存储过程时,用户必须拥有 PYPI_REPOSITORY_USER 数据库角色,才能使用共享 PyPI 仓库中的包。此变更会影响哪些角色默认具有 PYPI_REPOSITORY_USER 数据库角色。

变更前:

已选择启用访问共享 PyPI 存储库 (snowflake.snowpark.pypi_shared_repository)。账户管理员必须明确授予 PYPI_REPOSITORY_USER 数据库角色,用户才能使用共享 PyPI 存储库中的包:

GRANT DATABASE ROLE snowflake.snowpark.pypi_repository_user TO ROLE my_role;
变更后:

对于新账户,Snowflake 会在创建账户时将 PYPI_REPOSITORY_USER 数据库角色授予 PUBLIC 角色,因此账户中的所有用户默认都可以使用共享 PyPI 存储库。

对于现有账户,一次性回填会将 PYPI_REPOSITORY_USER 数据库角色授予 PUBLIC 角色。

这意味着用户可以使用任何角色创建使用共享 PyPI 存储库中包的 Python 函数和存储过程,而不需要账户管理员的明确授权。

在此次变更后,如果要限制对共享 PyPI 存储库的访问,您可以主动选择停用或被动撤销访问权限:

-- Proactive opt-out via account parameter (only available before the change is rolled out)
ALTER ACCOUNT SET ENABLE_PYPI_REPOSITORY_USER_PUBLIC_GRANT = FALSE;

-- Reactive revocation
REVOKE DATABASE ROLE snowflake.snowpark.pypi_repository_user FROM ROLE PUBLIC;

-- Optionally grant to specific roles
GRANT DATABASE ROLE snowflake.snowpark.pypi_repository_user TO ROLE data_science;

参考:2280