Azure Key Vault是一個(gè)安全可靠的存儲(chǔ)庫(kù),用于存儲(chǔ)在.NET Core應(yīng)用程序中使用的令牌、密鑰、密碼、證書和其他敏感數(shù)據(jù)。接下來(lái)我們講講如何在C#中使用它。
在構(gòu)建.NET Core應(yīng)用程序時(shí),我們經(jīng)常使用各種“秘密”,如客戶端ID、訪問(wèn)令牌、密碼、證書、加密密鑰和API密鑰。自然地,我們需要一種安全的方式來(lái)存儲(chǔ)、管理和控制對(duì)這些敏感數(shù)據(jù)的訪問(wèn)。Azure Key Vault為此提供了一個(gè)方便的基于云的解決方案。我們將探討如何在C#中使用Azure Key Vault。如果要使用我接下來(lái)提供的代碼示例,你的系統(tǒng)需要安裝Visual Studio 2022。
在Visual Studio中創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序項(xiàng)目
首先,讓我們?cè)赩isual Studio中創(chuàng)建一個(gè).NET Core控制臺(tái)應(yīng)用程序項(xiàng)目。假設(shè)您的系統(tǒng)已安裝Visual Studio 2022,請(qǐng)按照我下面的步驟創(chuàng)建一個(gè)新的.NET Core控制臺(tái)應(yīng)用程序項(xiàng)目。
- 啟動(dòng)Visual Studio IDE。
- 點(diǎn)擊“創(chuàng)建新項(xiàng)目”。
- 在“創(chuàng)建新項(xiàng)目”窗口中,從模板列表中選擇“控制臺(tái)應(yīng)用程序 (.NET Core)”。
- 點(diǎn)擊“下一步”。
- 在“配置新項(xiàng)目”窗口中,指定新項(xiàng)目的名稱和位置。
- 點(diǎn)擊“下一步”。
- 在接下來(lái)顯示的“附加信息”窗口中,選擇“.NET 7.0 (標(biāo)準(zhǔn)支持期)”作為您想要使用的框架版本。
- 點(diǎn)擊“創(chuàng)建”。
接下來(lái)我們將使用這個(gè).NET 7控制臺(tái)應(yīng)用程序項(xiàng)目來(lái)處理Azure Key Vault。
什么是Azure Key Vault?
Azure Key Vault是一種基于云的安全存儲(chǔ)解決方案,用于保護(hù)應(yīng)用程序的秘密或與應(yīng)用程序相關(guān)的其他敏感數(shù)據(jù)。這些秘密可能是令牌、密鑰、ID、密碼、證書等。Azure Key Vault提供了一個(gè)安全、可靠的集中存儲(chǔ)秘密的地方,并具有強(qiáng)大的訪問(wèn)控制,消除了開發(fā)人員直接在應(yīng)用程序中管理敏感數(shù)據(jù)的需求。接下來(lái),我們來(lái)看看怎么創(chuàng)建一個(gè)密鑰保管庫(kù),創(chuàng)建一些秘密,然后通過(guò)編程方式讀取和刪除這些秘密 。
在Azure中創(chuàng)建一個(gè)Key Vault,請(qǐng)按照以下步驟進(jìn)行操作。
- 從Azure門戶菜單或主頁(yè)上,選擇“創(chuàng)建資源”。
- 從顯示的資源列表中選擇“密鑰保管庫(kù)”。
- 點(diǎn)擊“創(chuàng)建”。
- 在“創(chuàng)建密鑰保管庫(kù)”屏幕上,指定訂閱、資源組名稱、區(qū)域和定價(jià)層,將其他選項(xiàng)保留為默認(rèn)值。
- 點(diǎn)擊“查看 + 創(chuàng)建”。
- 檢查輸入的詳細(xì)信息,然后點(diǎn)擊“創(chuàng)建”。
接下來(lái),您應(yīng)該在前面創(chuàng)建的密鑰保管庫(kù)實(shí)例中添加一個(gè)秘密。請(qǐng)按照以下步驟進(jìn)行操作。
- 從密鑰保管庫(kù)配置頁(yè)面中選擇“秘密”。
- 點(diǎn)擊“生成/導(dǎo)入”以向密鑰保管庫(kù)添加一個(gè)秘密。
- 從“上傳選項(xiàng)”下拉菜單中選擇“手動(dòng)”(默認(rèn)選項(xiàng))。
- 指定秘密的名稱和值。
- 可選擇指定內(nèi)容類型、激活日期和過(guò)期日期。
- 點(diǎn)擊“創(chuàng)建”。
為了提供對(duì)我們創(chuàng)建的秘密的訪問(wèn)權(quán)限,請(qǐng)按照以下步驟進(jìn)行操作。
- 從密鑰保管庫(kù)屏幕中選擇“訪問(wèn)控制 (IAM)”。
- 點(diǎn)擊“添加角色分配”。
- 從顯示的角色列表中選擇要分配的角色。
- 將訪問(wèn)權(quán)限分配給“托管標(biāo)識(shí)”或“用戶、組或服務(wù)主體”。
- 選擇要分配角色的成員。
- 可選擇指定角色的描述。
- 點(diǎn)擊“下一步”。
- 點(diǎn)擊“查看 + 分配”。
從Azure Key Vault中讀取數(shù)據(jù)
然后,我們創(chuàng)建DefaultAzureCredential類的實(shí)例,并將其作為參數(shù)傳遞給SecretClient類。這將創(chuàng)建一個(gè)我們可以用來(lái)連接和使用Azure Key Vault的秘密客戶端。在創(chuàng)建SecretClient的實(shí)例時(shí),還應(yīng)該指定KeyVault URI,如下面給出的代碼片段所示。
var credentials = new DefaultAzureCredential();
azureKeyVaultSecretClient = new SecretClient(new
Uri(KeyVaultUri), credentials);
這里是完整的代碼清單可以參考一下。
class Program
{
const string KeyVaultName = "AzureKeyValueExample";
const string KeyVaultUri = $ https://{KeyVaultName}.vault.azure.net";
static SecretClient ? azureKeyVaultSecretClient;
static void Main(string[] args)
{
var credentials = new DefaultAzureCredential();
azureKeyVaultSecretClient = new SecretClient(new
Uri(KeyVaultUri), credentials);
Console.WriteLine("Displaying all secrets with their values:");
var azureKeyVaultSecrets =
azureKeyVaultSecretClient.GetPropertiesOfSecrets();
foreach(var secret in azureKeyVaultSecrets)
{
var secretValue =
azureKeyVaultSecretClient.GetSecret(secret.Name);
Console.WriteLine($ "{secret.Name} |
{secretValue.Value.Value} |
{secretValue.Value.Properties.ContentType}"
);
}
Console.Read();
}
}
如圖所示。當(dāng)你在控制臺(tái)窗口中執(zhí)行上述程序時(shí),它將顯示您的秘密及其值。
在 Azure Key Vault創(chuàng)建一個(gè)新密匙
可以使用以下代碼片段在密鑰保管庫(kù)實(shí)例中創(chuàng)建一個(gè)新的秘密并為其分配一個(gè)值。
string secretName = "NewSecret";
string secretValue = "NewSecretValue";
await azureKeyVaultSecretClient.SetSecretAsync(secretName, secretValue);
var secret = azureKeyVaultSecretClient.GetSecret(secretName);
Console.WriteLine($ "{secretName} created with value {secretValue}");
然后可以在Azure門戶中查看到新創(chuàng)建的秘密,如下圖所示
新密鑰顯示在Azure門戶的密鑰庫(kù)屏幕上。
從Azure Key Vault中刪除一個(gè)秘密
使用SecretClient類的StartDeleteSecret方法可以從Azure Key Vault中刪除一個(gè)秘密。只需要將要?jiǎng)h除的秘密的名稱作為參數(shù)傳遞給該方法,如下面的代碼片段所示。
string secretNameForDelete = "NewSecret";
var deleteOperation = azureKeyVaultSecretClient.StartDeleteSecret(secretNameForDelete);
Console.WriteLine($"Deleting secret {secretNameForDelete} from Key Vault");
while (!deleteOperation.HasCompleted)
{
Thread.Sleep(500);
deleteOperation.UpdateStatus();
}
Console.WriteLine($"Secret {secretNameForDelete} deleted from Key Vault");
Console.Read();
執(zhí)行完以后你就可以發(fā)現(xiàn)該密匙已經(jīng)被刪除了。
結(jié)論
當(dāng)您執(zhí)行程序時(shí),可能會(huì)遇到Azure. Identity. CredentialUnavailableException 異常。為了解決這個(gè)問(wèn)題,在Visual Studio IDE中,點(diǎn)擊工具 -> 選項(xiàng) -> Azure服務(wù)身份驗(yàn)證。確保您使用Azure賬戶憑據(jù)登錄。 通過(guò)Azure Key Vault,您可以集中管理密鑰和秘密,提高應(yīng)用程序的安全性和行業(yè)合規(guī)性,并簡(jiǎn)化敏感數(shù)據(jù)的管理和保護(hù)。
作者: Joydip Kanjilal
更多技術(shù)干貨請(qǐng)關(guān)注公號(hào)“云原生數(shù)據(jù)庫(kù)”文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-563475.html
squids.cn,目前可體驗(yàn)全網(wǎng)zui低價(jià)RDS,免費(fèi)的遷移工具DBMotion、SQL開發(fā)工具等。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-563475.html
到了這里,關(guān)于如何在 .NET Core 中使用 Azure Key Vaul的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!