开始
加载和管理数据
处理数据
政府
参考和资源
2023年1月13日更新
给我们反馈
密钥是存储密钥材料的键-值对,密钥名在类中惟一秘密的范围.每个范围限制1000个秘密。最大允许的秘密值大小为128 KB。
秘密名称不区分大小写。
方法在数据库支持的作用域中创建秘密数据库命令行设置和文档(0.7.1及以上版本):
Databricks secrets put——scope ——key
编辑器打开并显示如下内容:
# ----------------------------------------------------------------------不要编辑上面的行。接下来的一切都将被忽略。#请在行上方输入您的秘密值。文本将存储在# UTF-8 (MB4)格式和任何尾随的新行将被剥离。#不保存退出将终止写入秘密。
将您的秘密值粘贴到该行上方,保存并退出编辑器。您的输入被剥离了注释,并与范围中的键关联存储。
如果使用已经存在的键发出写请求,则新值将覆盖现有值。
还可以从文件或命令行提供秘密。有关编写秘密的更多信息,请参见CLI的秘密.
列出给定范围内的秘密:
数据库机密列表——scope
响应显示关于秘密的元数据信息,例如秘密密钥名称和最后一次以时间戳更新的时间(以epoch为单位)。你可以使用秘密实用程序(dbutils.secrets)在笔记本或工作中读取秘密。例如:
Databricks secrets列表——范围JDBC
关键的名字最后的更新------------------------密码1531968449039用户名1531968408097
可以使用REST API或CLI创建秘密,但必须使用秘密实用程序(dbutils.secrets)在笔记本或工作中读取秘密。
使用Databricks命令行从作用域中删除一个秘密。
Databricks secrets delete——scope ——key
你也可以使用秘密API 2.0.
预览
此功能已在公共预览.
请注意
在Databricks Runtime 6.4扩展支持及以上版本中可用。
您可以在Spark配置属性或环境变量中引用秘密。检索到的秘密从笔记本输出和Spark驱动程序和执行器日志编校。
重要的
在Spark配置属性或环境变量中引用秘密时,请记住以下安全含义:
如果集群上没有启用表访问控制,则具有集群上的“可以附加到”权限或笔记本上的“运行”权限的任何用户都可以从笔记本内读取Spark配置属性。这包括没有读取秘密的直接权限的用户。Databricks建议启用表访问控制在所有集群或管理访问秘密使用秘密的范围.
即使启用了表访问控制,具有集群上的“可以附加到”权限或笔记本上的“运行”权限的用户也可以从笔记本内读取集群环境变量。Databricks不建议在集群环境变量中存储秘密,如果这些秘密必须对集群上的所有用户可用。
秘密不从Spark驱动程序日志中编辑stdout而且stderr流。缺省情况下,用户可以通过以下方式查看Spark驱动日志集群级权限:
stdout
stderr
可以附着于
可以重新启动
可以管理
通过设置集群的Spark配置属性,可以将读取Spark驱动日志的权限限制为具有can Manage权限的用户spark.databricks.acl.needAdminPermissionToViewLogs真正的
spark.databricks.acl.needAdminPermissionToViewLogs真正的
在Spark配置属性和环境变量中引用秘密时,有以下要求和限制:
集群所有者必须具备可以阅读秘密范围的权限。
只有集群所有者可以在Spark配置属性或环境变量中添加对秘密的引用,并编辑现有的作用域和名称。属性更改秘密把秘密API。您必须重新启动集群才能再次获取秘密。
拥有可以管理可以删除一个秘密的Spark配置属性或环境变量。
您可以使用任何有效的变量名或Spark配置属性引用秘密。Databricks基于所设置值的语法(而不是变量名)为引用秘密的变量启用特殊行为。
Spark配置属性或环境变量值的语法必须为{{秘密/ < scope-name > / <秘密名字>}}.该值必须以{{秘密/最后}}.
{{秘密/ < scope-name > / <秘密名字>}}
{{秘密/
}}
Spark配置属性或环境变量的可变部分如下:
< scope-name >:秘密关联的作用域的名称。
< scope-name >
<秘密名字>:作用域中秘密的唯一名称。
<秘密名字>
例如,{{秘密/ scope1 / key1}}.
{{秘密/ scope1 / key1}}
花括号之间不应该有空格。如果存在空格,则将它们视为作用域或秘密名称的一部分。
类中指定对秘密的引用Spark配置属性格式如下:
火花。<属性名>{{秘密/ < scope-name > / <秘密名字>}}
任意Spark配置<属性名称>可以引用一个秘密。每个Spark配置属性只能引用一个秘密,但您可以配置多个Spark属性来引用秘密。
<属性名称>
例子
你设置Spark配置引用一个秘密:
火花。密码{{秘密/ scope1 / key1}}
获取笔记本中的秘密并使用它:
火花.相依.得到(“spark.password”)
选择$ {spark.password};
类中指定了秘密路径环境变量格式如下:
<变量名>={{秘密/ < scope-name > / <秘密名字>}}
在引用秘密时,可以使用任何有效的变量名。对环境变量中引用的秘密的访问由配置集群的用户的权限决定。存储在环境变量中的秘密可以被集群的所有用户访问,但是会像在其他地方引用的秘密一样从明文显示中编校。
引用秘密的环境变量可以从集群范围的初始化脚本.
设置一个环境变量引用一个秘密:
SPARKPASSWORD={{秘密/ scope1 / key1}}
要获取初始化脚本中的秘密,请访问SPARKPASSWORD美元使用下面的模式:
SPARKPASSWORD美元
如果[- n"SPARKPASSWORD美元"];然后#代码使用${SPARKPASSWORD}fi