Začínáme s klíči služby Azure Key Vault v JavaScriptu
V tomto článku se dozvíte, jak se připojit ke službě Azure Key Vault pomocí klientské knihovny klíčů služby Azure Key Vault pro JavaScript. Po připojení může kód pracovat s klíči v trezoru.
Referenční | balíček rozhraní API (npm) | Ukázky | zdrojového kódu | knihovny – zpětnou vazbu
Požadavky
- Předplatné Azure – vytvořte si ho zdarma.
- Instance služby Azure Key Vault Zkontrolujte zásady přístupu ve službě Key Vault a zahrňte oprávnění potřebná pro konkrétní úlohy prováděné v kódu.
- Node.js verze LTS
Nastavení projektu
Otevřete příkazový řádek a přejděte do složky projektu. Změňte
YOUR-DIRECTORY
název složky:cd YOUR-DIRECTORY
Pokud soubor ještě nemáte
package.json
v adresáři, inicializujte projekt a vytvořte ho:npm init -y
Nainstalujte klientskou knihovnu klíčů služby Azure Key Vault pro JavaScript:
npm install @azure/keyvault-keys
Pokud chcete používat připojení bez hesla pomocí ID Microsoft Entra, nainstalujte klientskou knihovnu Azure Identity pro JavaScript:
npm install @azure/identity
Autorizace přístupu a připojení ke službě Key Vault
Microsoft Entra ID poskytuje nejbezpečnější připojení tím, že spravuje identitu připojení (spravovaná identita). Tato funkce bez hesla umožňuje vyvíjet aplikaci, která nevyžaduje žádné klíče uložené v kódu.
Před programovým ověřováním v Azure pro použití klíčů služby Azure Key Vault se ujistěte, že jste nastavili své prostředí.
Vývojář by měl nainstalovat Azure CLI a přihlásit se interaktivně pomocí příkazu az login pro přihlášení k Azure před použitím defaultAzureCredential v kódu.
az login
Sestavení aplikace
Při vytváření aplikace kód komunikuje se dvěma typy prostředků:
- KeyVaultKey, který zahrnuje:
- ID, název a hodnota
- Povolené operace.
- Typ jako
EC
, ,EC-HSM
RSA
,RSA-HSM
,oct
, .oct-HSM
- Vlastnosti jako KeyProperties
- KeyProperties, které zahrnují metadata klíčů, jako je název, verze, značky, data vypršení platnosti a jestli jsou povolená.
Pokud potřebujete hodnotu KeyVaultKey, použijte metody, které vrací klíč KeyVaultKey:
Objektový model
Klientská knihovna klíčů služby Azure Key Vault pro JavaScript zahrnuje následující klienty:
- KeyClient: Objekt KeyClient je hlavním objektem v sadě SDK. Tento klient umožňuje provádět úlohy správy klíčů, jako jsou vytváření, obměna, odstraňování a výpis klíčů.
- CryptographyClient umožňuje šifrovat, dešifrovat, podepsat, ověřit, zabalit a rozbalit klíče.
Vytvoření objektu KeyClient
Po nastavení místního prostředí a autorizace služby Key Vault vytvořte soubor JavaScriptu, který zahrnuje @azure/identitu a balíčky @azure/keyvault-keys . Vytvořte přihlašovací údaje, například DefaultAzureCredential, pro implementaci připojení bez hesla k vašemu trezoru. Pomocí tohoto pověření se ověřte pomocí objektu KeyClient .
// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';
import { KeyClient } from '@azure/keyvault-keys';
// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential();
const client = new KeyClient(
`https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
credential
);
// Get key
const key = await client.getKey("MyKeyName");
Vytvoření objektu CryptographyClient
Objekt CryptographyClient je provozním objektem v sadě SDK pomocí klíče k provádění akcí, jako je šifrování, dešifrování, podepsání a ověření, zabalení a rozbalení.
Pomocí přihlašovacích údajů identity z KeyClient spolu s názvem klíče vytvořte kryptografický klient k provádění operací.
// Include required dependencies
import { DefaultAzureCredential } from '@azure/identity';
import {
CryptographyClient,
KeyClient,
KnownEncryptionAlgorithms,
RsaEncryptParameters
} from '@azure/keyvault-keys';
// Authenticate to Azure
// Create KeyClient
const credential = new DefaultAzureCredential();
const client = new KeyClient(
`https://${process.env.AZURE_KEYVAULT_NAME}.vault.azure.net`,
credential
);
// Get key
const key = await client.getKey("MyKeyName");
if (key?.name) {
// get encryption client
const encryptClient = new CryptographyClient(key, credential);
// encrypt data
const encryptParams = {
algorithm: KnownEncryptionAlgorithms.RSAOaep256,
plaintext: Buffer.from("Hello world!")
}
const encryptResult = await encryptClient.encrypt(encryptParams);
}