Permifrost权限
permifrost的Python项目详细描述
permifrost
使用此命令可检查和管理雪花帐户的权限。在
permifrost grant <spec_file> [--role][--dry][--diff]
给定连接到雪花帐户的参数和表示所需数据库配置的YAML文件(“spec”),此命令确保该数据库的配置与规范匹配。如果存在差异,它将返回sql grant和revoke命令,以使其与规范匹配。如果数据库中设置了其他权限,此命令将创建必要的revoke命令,但以下命令除外:
- 对象所有权
- 仓库特权
Permifrost深受pgbedrock的启发,它可用于管理Postgres数据库中的权限。在
规范文件
YAML规范文件用于以声明方式定义雪花帐户中的数据库、角色、用户和仓库,以及同一帐户的数据库、模式和表的权限。在
所有权限都缩写为read
或write
权限,permitFrost为每种类型的对象生成适当的授权。这包括比非共享数据库具有更简单和更有限的权限的共享数据库。在
表和视图列在tables
下,并在幕后正确处理。在
如果*
作为表的参数提供,grant语句将使用ALL <object_type>s in SCHEMA
语法。它还将授予未来的表和视图。请参阅雪花文档^{
如果一个模式名包含一个星号,例如snowplow_*
,那么与此模式匹配的所有模式都将包含在grant语句中。这可以与表grants的星号相结合,以授予对与给定模式匹配的所有模式中的所有表的权限。这对于日期分区模式很有用。在
必须显式引用所有实体。例如,如果将权限授予架构或表,则必须显式引用数据库以获得权限。此外,角色成员身份必须在配置文件中显式。如果一个角色没有member_of
列表,它将拥有它当前已撤销的所有角色。在
角色可以单独接受“*”作为角色名,也可以嵌套在include
键下。如果使用include
,则可以选择使用exclude
键。"*"
将向规范中定义的所有角色授予成员身份。exclude
中定义的任何角色都将从include
中定义的列表中删除。在
规范文件具有以下结构:
^{pr2}$对于一个工作示例,您可以检查我们用于测试permifrost permissions
的the Snowflake specification file。在
设置
所有设置在这里用它们的默认值声明,并在下面描述。这些可以添加到规格yaml文件。在
require-owner:false
require-owner
:设置为true以强制必须对定义的所有对象设置owner
属性。在
--差异
设置此标志后,将返回包含新命令和已授予命令的完整diff。否则,只返回与规范中定义匹配所需的命令。在
--干
设置此标志后,生成的权限查询不会实际发送到服务器并运行;它们只是返回给用户以供检查和手动运行。在
如果未设置此标志,则命令将在雪花上执行,其状态将返回并显示在命令行上。在
连接参数
要连接以下环境变量,雪花必须可用:
$PERMISSION_BOT_USER$PERMISSION_BOT_ACCOUNT$PERMISSION_BOT_WAREHOUSE
用户名和密码
要使用用户名和密码进行连接,还应包括以下内容:
$PERMISSION_BOT_PASSWORD$PERMISSION_BOT_DATABASE$PERMISSION_BOT_ROLE
目前,permitFrost假设您使用的是SECURITYADMIN角色,如果不使用,验证将失败。在
OAuth
要使用OAuth令牌进行连接,还应包括以下内容:
$PERMISSION_BOT_OAUTH_TOKEN
密钥对身份验证
不需要提供密码或oauth令牌,可以通过设置以下设置通过Snowflake的密钥对身份验证进行连接:
$PERMISSION_BOT_PRIVATE_KEY_PATH$PERMISSION_BOT_PRIVATE_KEY_PASSPHRASE
有关详细信息,请参见Snowflake-sqlalchemy。在
贡献
对Permifrost的贡献很简单,而且Makefile中提供了大多数命令。在
开始开发的最简单方法是运行make permifrost
,这将在安装了本地版本Permifrost的docker容器中打开一个shell。
现在您可以在编辑器中对文件进行更改,这些更改将反映在您从docker shell运行的命令中。在
对于代码检查,可以使用make test
、make lint
和{
- 项目
标签: