【Azure Key Vault】在Azure Databricks上獲取Azure Key Vault中所儲存的機密(secret)的兩種方式

2023-10-09 21:00:26

問題描述

在Azure Databricks上獲取Azure Key Vault中所儲存的機密(secret)的兩種方式?

 

問題解答

方式一: 在Databricks的Notebook 中,直接編寫Python程式碼讀取Key Vault的Secret

範例程式碼如下:

import os
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

KVUri = f"https://<your key vault name>.vault.azure.cn/"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)

retrieved_secret = client.get_secret("<your secret name>")

print(f"Your secret is '{retrieved_secret.value}'.")

在執行中,會先後遇見

  1. azure.keyvault.secrets 和 azure.identity module沒有安裝
  2. 當前環境使用的Application ID 沒有許可權存取key vault的問題。

> 沒有安裝Module的解決辦法可以直接使用 %pip install <module name> 解決

%pip install azure.keyvault.secrets

%pip install azure.identity

dbutils.library.restartPython()

執行效果截圖:

 

> Application ID沒有許可權存取的問題可以通過Key Vault的Access Policy頁面,為Application ID賦予讀取許可權來解決

解決以上兩個問題後,再次執行Python Code,可以成功獲取到Key Vault中的機密資訊。

 

 

方式二:為Databricks定義Key Vault backend-secret scope,然後使用Databricks的工具包獲取secret

當Azure Databricks和Azure Key Vault資源都建立成功後。

首先在Databricks的頁面中新增 key Vault backed-secret scope,使用如下的URL開啟Create Secret Scope

URL : https://<Azure Databricks Service URL>.databricks.azure.cn/#secrets/createScope

在儲存中如果遇見許可權問題,可以在Key Vault的 Access Policy中為 AzureDatabricks 新增許可權(GET, SET等許可權)

設定完成後,回到Databricks的Notebook頁面,使用如下語句進行驗證:

ENCODED_AUTH_KEY = dbutils.secrets.get(scope = "scope name in databricks", key = "the secret name in key value")
print(f"this result is:'{ENCODED_AUTH_KEY}'")

執行效果截圖:

 


參考資料:

Databricks Secrets scopes: https://learn.microsoft.com/zh-cn/azure/databricks/security/secrets/secret-scopes

Databricks Secrets: https://learn.microsoft.com/zh-cn/azure/databricks/security/secrets/secrets

Databricks Escrets redaction: https://learn.microsoft.com/zh-cn/azure/databricks/security/secrets/redaction

 

【END】