Azure python SDK:如何在不暴露代码凭据的情况下向Azure进行身份验证?

时间:2020-05-09 16:23:31

标签: python azure authentication sdk

是否可以在不向我的代码添加秘密的情况下向Azure验证python应用程序?因为我使用的是不受信任的计算资源,所以我无法将机密保存为环境变量,也无法在本地存储“ config”文件。

给出:

  • 已通过门户为此应用(python-sp)创建了服务主体
  • 已将服务主体分配给Contributor角色到Azure Key Vault

示例:

  • 我想使用python sdk以编程方式创建和管理Azure资源
  • 要创建一个新的资源组,我首先需要验证python应用程序。我唯一无法找到的不需要将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。

这里列出的方法似乎都要求在一个文件中存储和访问凭据或对其进行硬编码。

鸡肉和鸡蛋!但是我想这很有道理。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好吧,这个问题并非特定于Azure Python SDK。不管您使用哪种类型的SDK(甚至平台),答案都是相同的。因此,请将凭据作为环境变量传递,使用证书,使用保管库,使用托管身份等。所有这些方法都允许进行无头认证。

相关问题