Öğretici: JavaScript'te sanal makineyle Azure Key Vault kullanma

Azure Key Vault anahtarları, gizli dizileri ve API anahtarları ve veritabanı bağlantı dizeleri gibi sertifikaları korumanıza yardımcı olur.

Bu öğreticide, Azure kaynakları için yönetilen kimlik kullanarak Azure Key Vault’tan bilgi okumak üzere bir Node.js uygulaması kurarsınız. Şunları yapmayı öğreneceksiniz:

  • Anahtar kasası oluştur
  • Gizli bir bilgiyi Key Vault'ta depolama
  • Azure Linux sanal makinesi oluşturma
  • Sanal makine için yönetilen kimliği etkinleştirme
  • Konsol uygulamasının Key Vault verilerini okuması için gerekli izinleri verme
  • Key Vault'tan bir gizli almak

Başlamadan önce Key Vault temel kavramları okuyun.

Azure aboneliğiniz yoksa free hesabı oluşturun.

Prerequisites

Windows, Mac ve Linux için:

  • Git
  • Azure CLI'nin geçerli bir sürümü. Yüklü sürümü denetlemek için komutunu çalıştırın az --version .

Azure'a Giriş Yap

Azure CLI ile Azure'da oturum açın:

az login

Bir kaynak grubu ve anahtar kasası oluşturun

Bu hızlı başlangıç kılavuzunda önceden oluşturulmuş bir Azure anahtar kasası kullanılır. Bu hızlı başlangıçlarda yer alan adımları izleyerek bir anahtar kasası oluşturabilirsiniz:

Alternatif olarak, bu Azure CLI komutlarını çalıştırabilirsiniz.

Important

Her anahtar kasasının benzersiz bir adı olmalıdır. Aşağıdaki örneklerde <vault-name>'yi anahtar kasanızın adıyla değiştirin.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Anahtar kasanızı bir sırla doldurun

Şimdi mySecret adlı ve Success! değerine sahip bir gizli anahtar oluşturalım. Gizli bir bilgi, bir parola, SQL bağlantı dizesi veya hem güvenli hem de uygulamanızın kullanımına açık tutmanız gereken diğer bilgiler olabilir.

Yeni oluşturduğunuz anahtar kasanıza bir gizli eklemek için aşağıdaki komutu kullanın:

az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"

Sanal makine oluşturun

Aşağıdaki yöntemlerden birini kullanarak myVM adlı bir VM oluşturun:

Linux Windows
Azure CLI Azure CLI
PowerShell PowerShell
Azure portalı Azure portalı

Azure CLI kullanarak bir Linux VM oluşturmak için az vm create komutunu kullanın. Aşağıdaki örnek adlı azureuserbir kullanıcı hesabı ekler. --generate-ssh-keys parametresi bir SSH anahtarı oluşturur ve bunu varsayılan anahtar konumunda (~/.ssh ) depolar.

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Çıktıda publicIpAddress değerine dikkat edin.

VM'ye kimlik atayın

az vm identity assign komutunu kullanarak VM için sistem tarafından atanan bir yönetilen kimlik oluşturun:

az vm identity assign --name "myVM" --resource-group "<resource-group>"

Çıkışta sistem tarafından atanan kimliği not edin:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

VM kimliğine izin atama

VM'nin yönetilen kimliğine anahtar kasasında Key Vault Secrets User rolünü verin:

az role assignment create --role "Key Vault Secrets User" --assignee "<system-assigned-identity>" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>

VM'de oturum açma

VM'de oturum açmak için Linux çalıştıran bir Azure sanal makinesine bağlanma ve oturum açma veya Bağlan ve Windows çalıştıran Azure bir sanal makinede oturum açma başlığı altındaki yönergeleri izleyin.

Bir Linux VM’de oturum açmak için, Sanal makine oluşturma adımındaki <public-ip-address> ile ssh kullanın:

ssh azureuser@<public-ip-address>

VM'ye Node.js ve npm kitaplıklarını yükleme

VM'de örnek betiğin kullandığı iki npm kitaplığını yükleyin: @azure/keyvault-secrets ve @azure/identity.

  1. SSH terminalinde Node.js ve npm'yi yükleyin:

    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \
        sudo apt-get install -y nodejs
    
  2. Bir uygulama dizini oluşturun ve Node.js paketini başlatın:

    mkdir app && cd app && npm init -y
    
  3. ile npmAzure paketlerini yükleyin:

    npm install @azure/keyvault-secrets @azure/identity
    

Örnek JavaScript dosyasını oluşturma ve düzenleme

  1. Dizinindeki VM'de app adlı index.jsbir JavaScript dosyası oluşturun:

    touch index.js
    
  2. Nano metin düzenleyicisiyle dosyayı açın:

    nano index.js
    
  3. Aşağıdaki kodu düzenleyiciye yapıştırın ve <vault-name> ifadesini anahtar kasanızın adıyla değiştirin:

    // index.js
    
    const { SecretClient } = require("@azure/keyvault-secrets");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    // Your Azure Key Vault name and secret name
    const keyVaultName = "<vault-name>";
    const keyVaultUri = `https://${keyVaultName}.vault.azure.net`;
    const secretName = "mySecret";
    
    // Authenticate to Azure
    const credential = new DefaultAzureCredential();
    const client = new SecretClient(keyVaultUri, credential);
    
    // Get Secret with Azure SDK for JS
    const getSecret = async (secretName) => {
    
        return (await client.getSecret(secretName)).value;
    }
    
    getSecret(secretName).then(secretValue => {
        console.log(`The value of secret '${secretName}' in '${keyVaultName}' is: '${secretValue}'`);
    }).catch(err => {
        console.log(err);
    })
    
  4. Ctrl+X ile dosyayı kaydedin.

  5. İstemde Save modified buffer?y girin.

  6. File Name to Write: index.js isteminde Enter tuşuna basın.

Örnek Node.js uygulamasını çalıştırma

index.js'i çalıştırın. Her şey doğru yapılandırılmışsa uygulama gizli değeri yazdırır:

node index.js

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

Kaynakları temizle

Artık ihtiyacınız kalmadığında VM'yi ve anahtar kasasını silin. En hızlı yol, ait oldukları kaynak grubunu silmektir:

az group delete -g "myResourceGroup"

Sonraki Adımlar

Azure Key Vault REST API