python - Azure python sdk:如何在不暴露代码凭据的情况下向 Azure 进行身份验证?
问题描述
有没有办法在不向我的代码中添加机密的情况下向 Azure 验证 python 应用程序?因为我使用的是不受信任的计算资源,所以我不能将我的秘密保存为环境变量,也不能在本地存储“配置”文件。
鉴于:
- 已通过门户为此应用程序创建了服务主体 (
python-sp
) - 服务主体已分配
Contributor
给 Azure Key Vault 的角色
例子:
- 我想使用 python sdk 以编程方式创建和管理 Azure 资源
- 要创建一个新的资源组,我首先需要对 python 应用程序进行身份验证。我能够找到的唯一不需要将 a
clientSecret
添加到代码中的方法是使用az login
...
sp_name = 'python-sp'
sp_file = 'sp_creds.json'
!az login
!az ad sp create-for-rbac -n $sp_name --sdk-auth > $sp_file
!export AZURE_AUTH_LOCATION=$sp_file
with open(sp_file) as data_file:
sp_details = json.load(data_file)
os.remove(sp_file)
不幸的是,这需要交互,因此代码并不是真正无头的。除此之外,凭证在内存中的一个 json 文件中,即使只是片刻。
如何改为访问 Azure Key Vault 来检索身份验证密钥/机密?
- 如果代码中没有某种凭据,我将无法访问 Azure Key Vault。
此处列出的方法似乎都需要在某些文件中存储和访问凭证或硬编码。
鸡和蛋!但我想这是有道理的。有任何想法吗?
解决方案
好吧,这个问题并不特定于 Azure Python SDK。无论您使用什么类型的 SDK(或平台,甚至),答案都是相同的。因此,将凭据作为环境变量传递,使用证书,使用保管库,使用托管身份等。所有这些方法都允许无头身份验证。
推荐阅读
- vue.js - Vuetify:使用摇树时将导入基本样式从默认预设移动到项目
- android - 某些设备上的“致命异常:android.view.InflateException”
- java - 通过 Maven 触发测试时,Allure 结果为空
- angular - 如何从 Observable 异步中获取选定的元素?
- java - 有没有办法通过异常处理重复消息,直到输入正确?
- java - 在春季批处理中,我们如何将处理后的文件移动到另一个文件夹,我正在使用 MultiResourceItemReader 和块处理
- python - FFT 弹奏单个钢琴音符时的其他频率是什么
- testing - TestCafe :当测试在 TestCafe 中运行时,当用户移动到另一个窗口或应用程序时,测试执行挂起
- javascript - express 中是否有任何功能可以结束 express 中的特定路由方法而不进一步执行?
- c++ - 视觉工作室说 CMake 二进制部署到远程机器开始了。部署完成后,CMake 生成将自动继续