Klientská knihovna pro správu Azure KeyVault pro .NET – verze 4.3.0
Azure Key Vault Managed HSM je plně spravovaná, vysoce dostupná cloudová služba s jedním tenantem kompatibilní se standardy, která umožňuje chránit kryptografické klíče pro cloudové aplikace pomocí modulů HSM ověřených standardem FIPS 140-2 Level 3.
Klienti knihovny pro správu Azure Key Vault podporují úlohy správy, jako je úplné zálohování a obnovení a řízení přístupu na základě role (RBAC) na úrovni klíče.
Zdrojový kód | Balíček (NuGet) | Dokumentace k | produktu Vzorky
Začínáme
Instalace balíčku
Nainstalujte klientskou knihovnu pro správu Azure Key Vault pro .NET pomocí NuGetu:
dotnet add package Azure.Security.KeyVault.Administration
Požadavky
- Předplatné Azure
- Existující Key Vault Azure. Pokud potřebujete vytvořit azure Key Vault, můžete použít Azure CLI.
- Autorizace k existujícímu Key Vault Azure pomocí řízení přístupu na základě role (doporučeno) nebo řízení přístupu.
Pokud chcete vytvořit prostředek spravovaného HSM, spusťte následující příkaz rozhraní příkazového řádku:
az keyvault create --hsm-name <your-key-vault-name> --resource-group <your-resource-group-name> --administrators <your-user-object-id> --location <your-azure-location>
Pokud to chcete získat <your-user-object-id>
, můžete spustit následující příkaz rozhraní příkazového řádku:
az ad user show --id <your-user-principal> --query id
Ověření klienta
Pokud chcete pracovat se službou Azure Key Vault, budete muset vytvořit instanci níže uvedených tříd klientů. Potřebujete adresu URL trezoru, která se na portálu může zobrazit jako Název DNS, a přihlašovací údaje k vytvoření instance objektu klienta.
V níže uvedených příkladech se používá DefaultAzureCredential
, který je vhodný pro většinu scénářů, včetně místního vývojového a produkčního prostředí.
Kromě toho doporučujeme pro ověřování v produkčních prostředích používat spravovanou identitu.
Další informace o různých způsobech ověřování a jejich odpovídajících typech přihlašovacích údajů najdete v dokumentaci ke službě Azure Identity .
Pokud chcete použít DefaultAzureCredential
níže uvedeného zprostředkovatele nebo jiné zprostředkovatele přihlašovacích údajů poskytované se sadou Azure SDK, musíte nejprve nainstalovat balíček Azure.Identity:
dotnet add package Azure.Identity
Aktivace spravovaného HSM
Všechny příkazy roviny dat jsou zakázané, dokud se modul hardwarového zabezpečení neaktivuje. Nebudete moct vytvářet klíče ani přiřazovat role. Modul hardwarového zabezpečení můžou aktivovat jenom určení správci, kteří byli přiřazeni během příkazu create. Pokud chcete modul hardwarového zabezpečení aktivovat, musíte stáhnout doménu zabezpečení.
K aktivaci HSM potřebujete:
- Minimálně 3 páry klíčů RSA (maximálně 10)
- Zadejte minimální počet klíčů potřebných k dešifrování domény zabezpečení (kvora).
Pokud chcete hsm aktivovat, odešlete mu alespoň 3 (maximálně 10) veřejných klíčů RSA. Modul hardwarového zabezpečení pomocí těchto klíčů zašifruje doménu zabezpečení a odešle ji zpět. Po úspěšném stažení této domény zabezpečení je váš HSM připravený k použití. Musíte také zadat kvorum, což je minimální počet privátních klíčů potřebných k dešifrování domény zabezpečení.
Následující příklad ukazuje, jak pomocí openssl vygenerovat 3 certifikáty podepsané svým držitelem.
openssl req -newkey rsa:2048 -nodes -keyout cert_0.key -x509 -days 365 -out cert_0.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_1.key -x509 -days 365 -out cert_1.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_2.key -x509 -days 365 -out cert_2.cer
Pomocí příkazu az keyvault security-domain download
stáhněte doménu zabezpečení a aktivujte spravovaný HSM.
Následující příklad používá 3 páry klíčů RSA (pro tento příkaz jsou potřeba pouze veřejné klíče) a nastaví kvorum na 2.
az keyvault security-domain download --hsm-name <your-managed-hsm-name> --sd-wrapping-keys ./certs/cert_0.cer ./certs/cert_1.cer ./certs/cert_2.cer --sd-quorum 2 --security-domain-file ContosoMHSM-SD.json
Řízení přístupu ke spravovanému HSM
Určení správci přiřazení při vytváření se automaticky přidají do předdefinované role Správci spravovaného HSM, kteří můžou kromě jiných omezených oprávnění stáhnout doménu zabezpečení a spravovat role pro přístup k rovině dat.
Pokud chcete s klíči provádět další akce, musíte objekty zabezpečení přiřadit jiným rolím, jako je například "Spravovaný kryptografický uživatel HSM", které můžou provádět nedestruktivní operace s klíči:
az keyvault role assignment create --hsm-name <your-managed-hsm-name> --role "Managed HSM Crypto User" --scope / --assignee-object-id <principal-or-user-object-ID> --assignee-principal-type <principal-type>
Přečtěte si osvědčené postupy pro správné zabezpečení spravovaného HSM.
Vytvoření KeyVaultAccessControlClient
Vytvoření instance pro DefaultAzureCredential
předání do objektu KeyVaultAccessControlClient
.
Stejnou instanci přihlašovacích údajů tokenu je možné použít s více klienty, pokud budou ověřovat pomocí stejné identity.
KeyVaultAccessControlClient client = new KeyVaultAccessControlClient(new Uri(managedHsmUrl), new DefaultAzureCredential());
Vytvoření KeyVaultBackupClient
Vytvoření instance pro DefaultAzureCredential
předání do objektu KeyVaultBackupClient
.
Stejnou instanci přihlašovacích údajů tokenu je možné použít s více klienty, pokud budou ověřovat pomocí stejné identity.
KeyVaultBackupClient client = new KeyVaultBackupClient(new Uri(managedHsmUrl), new DefaultAzureCredential());
Vytvoření KeyVaultSettingClient
Vytvoření instance pro DefaultAzureCredential
předání do objektu KeyVaultSettingsClient
.
Stejnou instanci přihlašovacích údajů tokenu je možné použít s více klienty, pokud budou ověřovat pomocí stejné identity.
KeyVaultSettingsClient client = new KeyVaultSettingsClient(new Uri(managedHsmUrl), new DefaultAzureCredential());
Klíčové koncepty
Definice role služby KeyVault
A KeyVaultRoleDefinition
je kolekce oprávnění. Definice role definuje operace, které je možné provádět, jako je čtení, zápis a odstranění. Může také definovat operace, které jsou vyloučené z povolených operací.
Definice KeyVaultRoleDefinitions je možné vypsat a zadat jako součást KeyVaultRoleAssignment
.
KeyVaultRoleAssignment
A KeyVaultRoleAssignment
je přidružení definice KeyVaultRoleDefinition k instančnímu objektu. Můžete je vytvářet, vypisovat, načítat jednotlivě a odstraňovat.
KeyVaultAccessControlClient
Poskytuje KeyVaultAccessControlClient
synchronní i asynchronní operace, které umožňují správu KeyVaultRoleDefinition
objektů a KeyVaultRoleAssignment
.
KeyVaultBackupClient
Poskytuje KeyVaultBackupClient
synchronní i asynchronní operace pro provádění úplného zálohování klíčů, obnovení úplného klíče a selektivního obnovení klíčů.
BackupOperation
Představuje BackupOperation
dlouhotrvající operaci pro úplné zálohování klíče.
RestoreOperation
A RestoreOperation
představuje dlouhotrvající operaci pro obnovení úplného i selektivního klíče.
Bezpečnost vlákna
Zaručujeme, že všechny metody instance klienta jsou bezpečné pro přístup z více vláken a nezávislé na sobě (pokyny). Tím se zajistí, že doporučení opakovaně používat instance klienta je vždy bezpečné, a to i napříč vlákny.
Další koncepty
Možnosti | klienta Přístup k odpovědi | Dlouhotrvající operace | Zpracování selhání | Diagnostika | Zesměšňovat | Životnost klienta
Příklady
Balíček Azure.Security.KeyVault.Administration podporuje synchronní a asynchronní rozhraní API.
Následující část obsahuje několik fragmentů kódu, které používají client
výše vytvořený kód pro klienty řízení přístupu nebo pro zálohovací klienty, a pokrývá některé z nejběžnějších úloh souvisejících s řízením přístupu Azure Key Vault:
Příklady synchronizace
- Řízení přístupu
- Zálohování a obnovení
Příklady asynchronních funkcí
- Řízení přístupu
- Zálohování a obnovení
Řešení potíží
Podrobnosti o tom, jak diagnostikovat různé scénáře selhání, najdete v našem průvodci odstraňováním potíží.
Obecné
Při interakci s knihovnou azure Key Vault Administration pomocí sady .NET SDK odpovídají chyby vrácené službou stejným stavovým kódům HTTP vráceným pro požadavky rozhraní REST API.
Pokud se například pokusíte načíst přiřazení role, které v Azure Key Vault neexistuje, vrátí se chyba s oznámením 404
Nenalezena.
try
{
KeyVaultRoleAssignment roleAssignment = client.GetRoleAssignment(KeyVaultRoleScope.Global, "example-name");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
Azure.RequestFailedException: Service request failed.
Status: 404 (Not Found)
Content:
{"error":{"code":"RoleAssignmentNotFound","message":"Requested role assignment not found (Activity ID: a67f09f4-b68e-11ea-bd6d-0242ac120006)"}}
Headers:
X-Content-Type-Options: REDACTED
x-ms-request-id: a67f09f4-b68e-11ea-bd6d-0242ac120006
Content-Length: 143
Content-Type: application/json
Nastavení protokolování konzoly
Nejjednodušší způsob, jak zobrazit protokoly, je povolit protokolování konzoly.
K vytvoření naslouchacího procesu protokolů sady Azure SDK, který vypíše zprávy do konzoly, použijte metodu AzureEventSourceListener.CreateConsoleLogger
.
// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
Další informace o dalších mechanismech protokolování najdete tady.
Další kroky
Začněte s našimi ukázkami.
Přispívání
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete tady: https://cla.microsoft.com
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo se obraťte na opencode@microsoft.com případné další dotazy nebo komentáře.
Azure SDK for .NET