Permifrost权限

permifrost的Python项目详细描述


permifrost

使用此命令可检查和管理雪花帐户的权限。在

permifrost grant <spec_file> [--role][--dry][--diff]

给定连接到雪花帐户的参数和表示所需数据库配置的YAML文件(“spec”),此命令确保该数据库的配置与规范匹配。如果存在差异,它将返回sql grant和revoke命令,以使其与规范匹配。如果数据库中设置了其他权限,此命令将创建必要的revoke命令,但以下命令除外:

  • 对象所有权
  • 仓库特权

Permifrost深受pgbedrock的启发,它可用于管理Postgres数据库中的权限。在

规范文件

YAML规范文件用于以声明方式定义雪花帐户中的数据库、角色、用户和仓库,以及同一帐户的数据库、模式和表的权限。在

所有权限都缩写为readwrite权限,permitFrost为每种类型的对象生成适当的授权。这包括比非共享数据库具有更简单和更有限的权限的共享数据库。在

表和视图列在tables下,并在幕后正确处理。在

如果*作为表的参数提供,grant语句将使用ALL <object_type>s in SCHEMA语法。它还将授予未来的表和视图。请参阅雪花文档^{}

如果一个模式名包含一个星号,例如snowplow_*,那么与此模式匹配的所有模式都将包含在grant语句中。这可以与表grants的星号相结合,以授予对与给定模式匹配的所有模式中的所有表的权限。这对于日期分区模式很有用。在

必须显式引用所有实体。例如,如果将权限授予架构或表,则必须显式引用数据库以获得权限。此外,角色成员身份必须在配置文件中显式。如果一个角色没有member_of列表,它将拥有它当前已撤销的所有角色。在

角色可以单独接受“*”作为角色名,也可以嵌套在include键下。如果使用include,则可以选择使用exclude键。"*"将向规范中定义的所有角色授予成员身份。exclude中定义的任何角色都将从include中定义的列表中删除。在

规范文件具有以下结构:

^{pr2}$

对于一个工作示例,您可以检查我们用于测试permifrost permissionsthe 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 testmake lint和{}。有关详细信息,请参见Makefile。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
来自偏移量的java JavaPairInputStream流   gzip Java TarInputStream读取tar的文件名。包含另一个tar的gz文件。gz文件   如何在Linux shell脚本中确定和使用实际的java路径   java请求太多FirebaseError   java错误json解析   java在localserver上发送安卓应用程序的输出   JavaSpring:启动和停止webapplication时更新DBtable条目   java如何使用JavaFX在矩形处设置文本?   java SQL查询在Hibernate中出现异常   java我无法使用javamail代码通过outlook(hotmail帐户)配置发送邮件,但在gmail中工作正常   java是不同的持久性。测试运行/JPA装置的xml属性   无头Eclipse的java导出战   使用ContentVersionStrategy的java Spring引导缓存禁止使用gzip进行资源压缩   java如何获取计算机的设备令牌?   图像文件的java ImageInfo不包含有效值   继承强制在Java中使用基类方法