如何在Databricks中打印secrets真实值而非[REDACTED]脱敏内容
Databricks获取secrets明文值的解决方法
Databricks的机密服务默认会对所有输出中与已存储机密值完全匹配的内容做自动掩码,所以直接打印dbutils.secrets.get的返回结果会被替换为[REDACTED],可以用以下几种方法获取明文:
方法1:拆分字符后拼接输出
自动掩码仅会匹配完整的机密值,将机密拆分为单个字符后再拼接打印,就不会触发掩码规则:
secret = dbutils.secrets.get(scope="myScope", key="myKey") print(''.join([c for c in secret]))
方法2:编码后输出再外部解码
如果工作区安全等级较高,第一种方法不生效,可以先将机密转为base64编码后输出,拿到编码结果后再做解码即可得到明文:
import base64 secret = dbutils.secrets.get(scope="myScope", key="myKey") # 输出base64编码后的内容 print(base64.b64encode(secret.encode('utf-8')).decode('utf-8'))
方法3:写入临时文件后下载查看
你也可以将机密写入DBFS的临时文件,下载该文件后即可获取明文:
secret = dbutils.secrets.get(scope="myScope", key="myKey") # 写入临时路径 with open("/dbfs/tmp/temp_secret.txt", "w") as f: f.write(secret)
执行完成后到DBFS的/tmp路径下下载temp_secret.txt即可,用完请及时删除临时文件避免机密泄露。
提示:获取到机密明文后请务必做好数据安全管控,及时清理打印日志、临时文件等存在明文泄露风险的内容。
内容的提问来源于stack exchange,提问作者aykcandem
相关产品推荐
相关产品推荐

