Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Začínáme s tajnou klientskou knihovnou služby Azure Key Vault pro JavaScript Azure Key Vault je cloudová služba, která poskytuje zabezpečené úložiště tajných kódů. Můžete bezpečně ukládat klíče, hesla, certifikáty a další tajné klíče. Trezory klíčů Azure můžete vytvářet a spravovat přes web Azure Portal. V tomto rychlém startu se naučíte vytvářet, načítat a odstraňovat tajné kódy z trezoru klíčů Azure pomocí klientské knihovny JavaScriptu.
Prostředky knihovny klienta služby Key Vault:
Referenční dokumentace k API | Zdrojový kód knihovny | Balíček (npm)
Další informace o službě Key Vault a tajných kódech najdete tady:
Požadavky
- Předplatné Azure – vytvořte si ho zdarma.
- Aktuální Node.js LTS.
- Azure CLI
Požadavky
- Předplatné Azure – vytvořte si ho zdarma.
- Aktuální Node.js LTS.
- TypeScript 5+
- Azure CLI
V tomto rychlém startu se předpokládá, že používáte Azure CLI.
Přihlášení k Azure
Spusťte příkaz
login.az loginPokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.
V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu.
Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.
Vytvoření skupiny prostředků a trezoru klíčů
Pomocí příkazu
az group createvytvořte skupinu prostředků:az group create --name "myResourceGroup" --location "EastUS"Můžete změnit "EastUS" na místo blíže k vám, pokud dáváte přednost.
Slouží
az keyvault createk vytvoření trezoru klíčů:az keyvault create --name "<vault-name>" --resource-group "myResourceGroup" --enable-rbac-authorization true --enable-purge-protection trueNahraďte
<vault-name>jedinečným názvem platným pro celé Azure. Obvykle používáte svůj osobní název nebo název společnosti spolu s dalšími čísly a identifikátory.
Udělení přístupu k trezoru klíčů
Pokud chcete získat oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli k hlavnímu názvu uživatele (UPN) pomocí příkazu Azure CLI az role assignment create.
az role assignment create --role "Key Vault Secrets Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Nahraďte hodnoty <upn>, <subscription-id> a <vault-name> skutečnými hodnotami. Pokud jste použili jiný název skupiny prostředků, nahraďte také myResourceGroup. Hlavní název uživatele (UPN) bude obvykle v formátu e-mailové adresy (např. username@domain.com).
Vytvoření nové aplikace Node.js
Vytvořte Node.js aplikaci, která používá váš trezor klíčů.
V terminálu vytvořte složku s názvem
key-vault-node-appa změňte ji do této složky:mkdir key-vault-node-app && cd key-vault-node-appInicializace projektu Node.js:
npm init -y
Instalace balíčků služby Key Vault
Pomocí terminálu nainstalujte klientskou knihovnu tajných kódů služby Azure Key Vault @azure/keyvault-secrets pro Node.js.
npm install @azure/keyvault-secretsNainstalujte klientskou knihovnu Azure Identity, balíček @azure/identity, abyste autentizovali přístup ke službě Key Vault.
npm install @azure/identity
Nastavení proměnných prostředí
Tato aplikace používá koncový bod trezoru klíčů jako proměnnou prostředí s názvem KEY_VAULT_URL.
set KEY_VAULT_URL=<key-vault-endpoint>
Ověření a vytvoření klienta
Žádosti o aplikace na většinu služeb Azure musí být autorizované.
Použití metody DefaultAzureCredential poskytované klientskou knihovnou azure Identity je doporučeným přístupem k implementaci připojení bez hesel ke službám Azure ve vašem kódu.
DefaultAzureCredential podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.
V tomto rychlém startu se DefaultAzureCredential autentizuje vůči Key Vault pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného v Azure CLI. Když je aplikace nasazená do Azure, může stejný DefaultAzureCredential kód automaticky zjišťovat a používat spravovanou identitu přiřazenou ke službě App Service, virtuálnímu počítači nebo jiným službám. Další informace najdete v tématu Přehled spravované identity.
V tomto kódu se koncový bod vašeho trezoru klíčů používá k vytvoření klienta trezoru klíčů. Formát koncového bodu vypadá jako https://<vault-name>.vault.azure.net, ale může se změnit u suverénních cloudů. Další informace o ověřování v trezoru klíčů najdete v příručce pro vývojáře.
Příklad kódu
Následující ukázky kódu vám ukážou, jak vytvořit klienta, nastavit tajný klíč, načíst tajný kód a odstranit tajný kód.
Tento kód používá následující třídy a metody tajných kódů služby Key Vault:
Nastavení architektury aplikace
Vytvořte nový textový soubor a vložte do index.js souboru následující kód.
const { SecretClient } = require("@azure/keyvault-secrets"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // DefaultAzureCredential automatically uses managed identity in Azure environments. // For local development, it uses credentials from Azure CLI, Azure PowerShell, or environment variables. // See: https://learn.microsoft.com/javascript/api/@azure/identity/defaultazurecredential const credential = new DefaultAzureCredential(); const keyVaultUrl = process.env["KEY_VAULT_URL"]; if(!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); const client = new SecretClient(keyVaultUrl, credential); // Create a secret // The secret can be a string of any kind. For example, // a multiline text block such as an RSA private key with newline characters, // or a stringified JSON object, like `JSON.stringify({ mySecret: 'MySecretValue'})`. const uniqueString = new Date().getTime(); const secretName = `secret${uniqueString}`; const result = await client.setSecret(secretName, "MySecretValue"); console.log("result: ", result); // Read the secret we created const secret = await client.getSecret(secretName); console.log("secret: ", secret); // Update the secret with different attributes const updatedSecret = await client.updateSecretProperties(secretName, result.properties.version, { enabled: false }); console.log("updated secret: ", updatedSecret); // Delete the secret immediately without ability to restore or purge. await client.beginDeleteSecret(secretName); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Spuštění ukázkové aplikace
Spuštění aplikace:
node index.jsMetody vytvoření a získání vrátí celý objekt JSON pro tajný kód:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606" } }Metoda update vrátí páry názvů a hodnot vlastností:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606"
Vytvořte nový textový soubor a vložte do index.ts souboru následující kód.
import { SecretClient, KeyVaultSecret, SecretProperties, } from "@azure/keyvault-secrets"; import { DefaultAzureCredential } from "@azure/identity"; import "dotenv/config"; // Passwordless credential const credential = new DefaultAzureCredential(); // Get Key Vault name from environment variables // such as `https://${keyVaultName}.vault.azure.net` const keyVaultUrl = process.env.KEY_VAULT_URL; if (!keyVaultUrl) throw new Error("KEY_VAULT_URL is empty"); function printSecret(secret: KeyVaultSecret): void { const { name, value, properties } = secret; const { enabled, expiresOn, createdOn } = properties; console.log("Secret: ", { name, value, enabled, expiresOn, createdOn }); } function printSecretProperties(secret: SecretProperties): void { const { name, enabled, expiresOn, createdOn } = secret; console.log("Secret: ", { name, enabled, expiresOn, createdOn }); } async function main(): Promise<void> { // Create a new SecretClient const client = new SecretClient(keyVaultUrl, credential); // Create a unique secret name const uniqueString = new Date().getTime().toString(); const secretName = `secret${uniqueString}`; // Create a secret const createSecretResult = await client.setSecret( secretName, "MySecretValue" ); printSecret(createSecretResult); // Get the secret by name const getSecretResult = await client.getSecret(secretName); printSecret(getSecretResult); // Update properties const updatedSecret = await client.updateSecretProperties( secretName, getSecretResult.properties.version, { enabled: false, } ); printSecretProperties(updatedSecret); // Delete secret (without immediate purge) const deletePoller = await client.beginDeleteSecret(secretName); await deletePoller.pollUntilDone(); } main().catch((error) => { console.error("An error occurred:", error); process.exit(1); });
Spuštění ukázkové aplikace
Sestavení aplikace TypeScript:
tscSpuštění aplikace:
node index.jsMetody vytvoření a získání vrátí celý objekt JSON pro tajný kód:
{ "value": "MySecretValue", "name": "secret1637692472606", "properties": { "createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606" } }Metoda update vrátí páry názvů a hodnot vlastností:
"createdOn": "2021-11-23T18:34:33.000Z", "updatedOn": "2021-11-23T18:34:33.000Z", "enabled": true, "recoverableDays": 90, "recoveryLevel": "Recoverable+Purgeable", "id": "https://<vault-name>.vault.azure.net/secrets/secret1637692472606/e13f3558b4ca4363a8e402e11e7b193c", "vaultUrl": "https://<vault-name>.vault.azure.net", "version": "e13f3558b4ca4363a8e402e11e7b193c", "name": "secret1637692472606"
Integrace se službou App Configuration
Sada Azure SDK poskytuje pomocnou metodu parseKeyVaultSecretIdentifier, která parsuje dané ID tajného klíče služby Key Vault. To je nezbytné v případě, že použijete odkazy na Službu App Configuration ve službě Key Vault. Konfigurace aplikace ukládá ID tajného klíče služby Key Vault. K analýze ID potřebujete metodu parseKeyVaultSecretIdentifier , abyste získali název tajného kódu. Jakmile budete mít název tajného kódu, můžete z tohoto rychlého startu získat aktuální hodnotu tajného kódu.
Další kroky
V tomto rychlém startu jste vytvořili trezor klíčů, uložili tajný kód a načetli jste tento tajný klíč. Další informace o službě Key Vault a její integraci s vašimi aplikacemi najdete v následujících článcích.
- Přehled služby Azure Key Vault
- Přečtěte si přehled tajných kódů služby Azure Key Vault.
- Zabezpečení přístupu k trezoru klíčů
- Kontrola osvědčených postupů zabezpečení specifických pro tajné kódy
- Prohlédni si průvodce vývojářem ve službě Azure Key Vault.
- Přehled zabezpečení služby Key Vault