[英]Docker container app service in azure. How to use DefaultAzureCredential for keyvault
我有一個在 azure 中運行的容器應用程序服務,它工作正常。
但是,如果我想在本地運行這個容器,它會失敗,因為它無法通過身份驗證來讀取 azure 中的密鑰庫。
.ConfigureAppConfiguration((context, config) =>
{
var builtConfig = config.Build();
string SecretUri = $"https://{builtConfig["KeyVaultName"]}.vault.azure.net/";
var secretClient = new SecretClient(new Uri(SecretUri), new DefaultAzureCredential(new DefaultAzureCredentialOptions { ExcludeSharedTokenCacheCredential = true }));
config.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
})
在 azure 中運行時,DefaultAzureCredential 將從應用服務繼承其權限並且工作正常。
但是,如果我想在本地運行容器以在 azure 之外進行測試,它不知道使用什么權限。 我該如何處理? 我可以以某種方式告訴容器使用什么權限而不對容器進行開發更改嗎?
當我在 Visual Studio 中進行開發時,我通常將默認的 Azure Key Vault 開發憑據存儲在本地用戶設置中。 然后我將與環境變量相同的憑據放入 Azure App Services 中。 如果憑據名稱相同,它將在兩個地方都可以使用。
您可以通過右鍵單擊 Visual Studio 中的項目來訪問本地用戶機密
有關更多詳細信息,請參閱文檔。
DefaultAzureCredential
將按順序嘗試幾種憑據類型,如此處所示,因此如果不設置環境變量並排除SharedTokenCacheCredential
且ExcludeSharedTokenCacheCredential = true
,它將使用VisualStudioCredential
進行身份驗證,即您登錄 VS 的用戶帳戶。
要使其在本地工作,您需要將您的用戶帳戶添加到具有正確權限的密鑰庫的Access Policies
中,請遵循此文檔。 (或者,如果您在 keyvault 的Access policies
刀片中 select Azure role-based access control
,則需要 RBAC 角色Key Vault Administrator
,請按照此文檔添加。)添加后,它將正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.