Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak nawiązać połączenie z Azure Key Vault przy użyciu biblioteki klienta kluczy Azure Key Vault dla języka JavaScript. Po nawiązaniu połączenia kod może działać na kluczach w magazynie.
Dokumentacja API | Pakiet (npm) | Biblioteka kod źródłowy | Przykłady | Prześlij opinię
Wymagania wstępne
- Subskrypcja Azure — utwórz ją bezpłatnie.
- Azure Key Vault wystąpienie. Upewnij się, że masz przypisaną odpowiednią rolę Azure RBAC 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.jsonjeszcze pliku w katalogu, zainicjuj projekt w celu utworzenia pliku:npm init -yZainstaluj bibliotekę klienta kluczy Azure Key Vault dla języka JavaScript:
npm install @azure/keyvault-keysJeśli chcesz używać połączeń bez hasła przy użyciu Microsoft Entra ID, zainstaluj bibliotekę klienta Azure Identity dla języka JavaScript:
npm install @azure/identity
Autoryzowanie dostępu i nawiązywanie połączenia z Key Vault
Microsoft Entra ID zapewnia najbezpieczniejsze połączenie, zarządzając tożsamością połączenia (zarządzaną tożsamością). Ta funkcja bez hasła umożliwia tworzenie aplikacji, która nie wymaga żadnych kluczy przechowywanych w kodzie.
Przed programowym uwierzytelnianiem w Azure do używania kluczy Azure Key Vault upewnij się, że środowisko zostało skonfigurowane.
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,oct-HSM. - 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 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 Key Vault utwórz plik JavaScript zawierający pakiety @azure/identity i @azure/keyvault-keys. Utwórz poświadczenie, takie jak DefaultAzureCredential, aby zaimplementować połączenia bezhasłowe z twoim sejfem. 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świadczenia tożsamości z KeyClient, wraz z nazwą klucza, aby utworzyć CryptographyClient do 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);
}