簡體   English   中英

有沒有辦法通過 Visual Studio 上的托管標識在 localhost 中使用 Azure Key Vault?

[英]Is there a way to work with Azure Key Vault in localhost with Managed Identity on Visual Studio?

我想將 Azure Key Vault 添加到我的 C# 應用程序,但我想在本地運行代碼。 有沒有可能的方法? 很多文檔都說 AKV 只能在 Azure 環境中運行但是微軟開發人員在視頻中說他們在演示中顯示的示例代碼也可以在 localhost 中執行。

目前使用的是Net6版本。 為了創建我的 Azure 資源,我按照第一個鏈接中的視頻教程進行操作。 他們遵循這個模式。 描述在使用托管身份時使用的流程

所以在這里你可以看到我的 Key Vault 訪問策略。 檢查 RBAC。 我的 kv 訪問策略

托管標識具有分配給 Key Vault 作為 Key Vault 管理員的角色(用於測試目的)

我的托管身份在身份選項卡上的我的應用服務中分配為用戶分配的托管身份。

我的 Program.cs 看起來像這樣:

var userAssignedClientId = "Some guid";

if (!string.IsNullOrEmpty(MyVaultUri))
{
    builder.Configuration.AddAzureKeyVault(
        new Uri(MyVaultUri),
        new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = userAssignedClientId }));
}

我已經聲明了環境變量AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRET和安裝的塊包 Azure.Identity v1.4.0、Azure.Security.KeyVault.Secrets v4.3.0。

這就是我在本地主機中得到的錯誤: Azure.RequestFailedException:'調用者無權對資源執行操作。

在此處輸入圖像描述

當想要連接到在線資源時,Microsoft 提供了一些可用選項。 其中之一是InteractiveBrowserCredential ,它會提示您輸入憑據的問題。

另一個是DefaultAzureCredential ,乍一看很有欺騙性,因為默認值是什么? 根據文檔,它在授權失敗時返回錯誤之前嘗試了六種不同類型的授權。 請注意,如果其中一種類型被禁用,它將不會被使用。

如果您在 Visual Studio 中使用來自 portal.azure.com 的相同憑據登錄,則身份驗證將無縫進行。

另請注意,當您想在本地主機上使用環境變量時。 最好使用保存變量的設置文件,而不是在機器上定義這些。 不要忘記將該設置文件添加到 gitignore 文件中。 您不希望將這些秘密發布到公共存儲庫。

只要您只使用密鑰和機密,並且密鑰與您嘗試連接的環境中的密鑰不同,這很好,您可以使用測試替身,例如 Lowkey Vault。

您可以在這里找到該項目: https ://github.com/nagyesta/lowkey-vault

此外,這里有一個 .Net POC: https ://github.com/nagyesta/lowkey-vault-example-dotnet

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM