Wprowadzenie do kluczy usługi Azure Key Vault w języku JavaScript
W tym artykule pokazano, jak nawiązać połączenie z usługą Azure Key Vault przy użyciu biblioteki klienta kluczy usługi Azure Key Vault dla języka JavaScript. Po nawiązaniu połączenia kod może działać na kluczach w magazynie.
Przykłady kodu | | źródłowego biblioteki źródłowej pakietu referencyjnego | interfejsu API (npm) | Prześlij opinię
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Wystąpienie usługi Azure Key Vault . Przejrzyj zasady dostępu w usłudze Key Vault, aby uwzględnić uprawnienia niezbędne do wykonywania określonych zadań w kodzie.
- Node.js wersja LTS
konfigurowanie projektu
Otwórz wiersz polecenia i przejdź do folderu projektu. Zmień
YOUR-DIRECTORY
nazwę folderu na:cd YOUR-DIRECTORY
Jeśli nie masz
package.json
jeszcze pliku w katalogu, zainicjuj projekt w celu utworzenia pliku:npm init -y
Zainstaluj bibliotekę klienta kluczy usługi Azure Key Vault dla języka JavaScript:
npm install @azure/keyvault-keys
Jeśli chcesz używać połączeń bez hasła przy użyciu identyfikatora Entra firmy Microsoft, zainstaluj bibliotekę klienta tożsamości platformy Azure dla języka JavaScript:
npm install @azure/identity
Autoryzowanie dostępu i nawiązywanie połączenia z usługą Key Vault
Identyfikator entra firmy Microsoft zapewnia najbezpieczniejsze połączenie, zarządzając tożsamością połączenia (tożsamością zarządzaną). Ta funkcja bez hasła umożliwia tworzenie aplikacji, która nie wymaga żadnych kluczy przechowywanych w kodzie.
Przed programowym uwierzytelnieniem na platformie Azure w celu korzystania z kluczy usługi Azure Key Vault upewnij się, że skonfigurowaliśmy środowisko.
Deweloper powinien zainstalować interfejs wiersza polecenia platformy Azure i zalogować się interaktywnie za pomocą polecenia az login , aby zalogować się na platformie Azure przed użyciem polecenia DefaultAzureCredential w kodzie.
az login
Kompilowanie aplikacji
Podczas tworzenia aplikacji kod współdziała z dwoma typami zasobów:
- KeyVaultKey, który obejmuje:
- Identyfikator, nazwa i wartość.
- Dozwolone operacje.
- Typ, taki jak
EC
, ,EC-HSM
RSA
,RSA-HSM
, , .oct-HSM
oct
- Właściwości jako właściwości KeyProperties
- KeyProperties, które obejmują metadane kluczy, takie jak jego nazwa, wersja, tagi, dane wygasania i czy jest włączona.
Jeśli potrzebujesz wartości KeyVaultKey, użyj metod, które zwracają klucz KeyVaultKey:
Model obiektów
Biblioteka klienta kluczy usługi Azure Key Vault dla języka JavaScript obejmuje następujących klientów:
- KeyClient: obiekt KeyClient jest głównym obiektem w zestawie SDK. Ten klient umożliwia wykonywanie kluczowych zadań zarządzania, takich jak tworzenie, obracanie, usuwanie i wyświetlanie listy kluczy.
- Program CryptographyClient umożliwia szyfrowanie, odszyfrowywanie, podpisywanie, weryfikowanie, zawijanie i odpakowywanie kluczy.
Tworzenie obiektu KeyClient
Po skonfigurowaniu środowiska lokalnego i autoryzacji usługi Key Vault utwórz plik JavaScript zawierający @azure/tożsamość oraz pakiety @azure/keyvault-keys . Utwórz poświadczenie, takie jak DefaultAzureCredential, aby zaimplementować połączenia bez hasła z magazynem. Użyj tego poświadczenia, aby uwierzytelnić się za pomocą obiektu 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");
Tworzenie obiektu CryptographyClient
Obiekt CryptographyClient jest obiektem operacyjnym w zestawie SDK, używając klucza do wykonywania akcji, takich jak szyfrowanie, odszyfrowywanie, podpisywanie i weryfikowanie, opakowywanie i odpakowywanie.
Użyj poświadczeń tożsamości z klienta KeyClient wraz z nazwą klucza, aby utworzyć element CryptographyClient w celu wykonywania operacji.
// 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);
}