JavaScript로 Azure Key Vault 키 시작

이 문서에서는 JavaScript용 Azure Key Vault 키 클라이언트 라이브러리를 사용하여 Azure Key Vault에 연결하는 방법을 보여 줍니다. 연결되면 코드가 자격 증명 모음의 키에서 작동할 수 있습니다.

API 참조 | 패키지(npm) | 라이브러리 소스 코드 | 샘플 | 피드백 제공

필수 조건

프로젝트 설정

  1. 명령 프롬프트를 열고 프로젝트 폴더로 변경합니다. YOUR-DIRECTORY를 폴더 이름으로 변경합니다.

    cd YOUR-DIRECTORY
    
  2. 디렉터리에 이미 package.json 파일이 없으면 프로젝트를 초기화하여 파일을 만듭니다.

    npm init -y
    
  3. JavaScript용 Azure Key Vault 키 클라이언트 라이브러리 설치:

    npm install @azure/keyvault-keys
    
  4. Azure AD를 사용하여 암호 없는 연결을 사용하려면 JavaScript용 Microsoft Entra ID 클라이언트 라이브러리를 설치합니다.

    npm install @azure/identity
    

액세스 권한 부여 및 Key Vault에 연결

Microsoft Entra ID는 연결 ID(관리 ID)를 관리하여 가장 안전한 연결을 제공합니다. 암호 없는 기능을 사용하면 코드에 저장된 키가 필요하지 않은 애플리케이션을 개발할 수 있습니다.

Azure Key Vault 키를 사용하도록 프로그래밍 방식으로 Azure에 인증하기 전에 환경을 설정해야 합니다.

Diagram of Azure SDK for JavaScript credential flow.

개발자는 코드에서 DefaultAzureCredential을 사용하기 전에 Azure CLI를 설치하고 az login 명령을 사용하여 대화형으로 Azure에 로그인해야 합니다.

az login

애플리케이션 빌드

애플리케이션을 빌드할 때 코드는 다음과 같은 두 가지 유형의 리소스와 상호 작용합니다.

  • KeyVaultKey이며 다음을 포함합니다.
    • ID, 이름 및 값
    • 허용된 작업
    • EC, EC-HSM, RSA, RSA-HSM, oct, oct-HSM과 같은 형식
    • KeyProperties로서의 속성
  • KeyProperties이며 키의 메타데이터(예: 이름, 버전, 태그, 만료 데이터 및 사용 여부)를 포함합니다.

KeyVaultKey 값이 필요한 경우 KeyVaultKey를 반환하는 메서드를 사용합니다.

개체 모델

JavaScript용 Azure Key Vault 키 클라이언트 라이브러리에는 다음 클라이언트가 포함됩니다.

  • KeyClient: KeyClient 개체는 SDK의 최상위 개체입니다. 이 클라이언트를 사용하면 키 만들기, 회전, 삭제 및 나열과 같은 키 관리 작업을 수행할 수 있습니다.
  • CryptographyClient를 사용하면 키를 암호화, 암호 해독, 서명, 확인, 래핑 및 래핑 해제할 수 있습니다.

Conceptual diagram showing the relationship within the client library between the KeyClient and CryptographyClient.

KeyClient 개체 만들기

로컬 환경 및 Key Vault 권한 부여가 설정되면 @azure/identity@azure/keyvault-keys 패키지를 포함하는 JavaScript 파일을 만듭니다. DefaultAzureCredential과 같은 자격 증명을 만들어 자격 증명 모음에 대한 암호 없는 연결을 구현합니다. 해당 자격 증명을 사용하여 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");

CryptographyClient 개체 만들기

CryptographyClient 개체는 키를 사용하여 암호화, 암호 해독, 서명 및 확인, 래핑 및 래핑 해제와 같은 작업을 수행하는 SDK의 작업 개체입니다.

키 이름과 함께 KeyClient의 ID 자격 증명을 사용하여 작업을 수행할 CryptographyClient를 만듭니다.

// 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);
}

참고 항목

다음 단계