我目前正在使用 Python 从 Azure blob 存储中读取文件并将其存储在数据框中。为了对 blob 存储进行身份验证,我使用服务主体凭据从 Azure 密钥保管库中提取存储帐户密钥。
我的代码如下:
from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from azure.common.credentials import ServicePrincipalCredentials
def auth_callback(server, resource, scope):
credentials = ServicePrincipalCredentials(
client_id = '',
client_secret='',
tenant = '',
resource = "https://samplename.vault.azure.net/"
)
token = credentials.token
return token['token_type'], token['access_token']
client = KeyVaultClient(KeyVaultAuthentication(auth_callback))
key_bundle = client.get_key('https://samplename.vault.azure.net/', '','')
json_key = key_bundle.key
但是,我必须将服务主体密钥保存在代码中,我觉得这不是最佳做法。
我怎样才能避免这种情况?
我还考虑将服务主体凭据存储在存储在 blob 存储中的单独配置文件中,然后从 Python 中读取它。但这也涉及最终将 tee 服务主体的凭据存储在文本文件中。
我正在从 Azure Batch 运行 Python。