Hızlı Başlangıç: JavaScript için Azure Key Vault sertifika istemci kitaplığı

JavaScript için Azure Key Vault sertifika istemci kitaplığını kullanmaya başlayın. Azure Key Vault , sertifikalar için güvenli bir depo sağlayan bir bulut hizmetidir. Anahtarları, parolaları, sertifikaları ve diğer gizli dizileri güvenli bir şekilde depolayabilirsiniz. Azure anahtar kasaları Azure portalı aracılığıyla oluşturulup yönetilebilir. Bu hızlı başlangıçta, JavaScript istemci kitaplığını kullanarak azure anahtar kasasından sertifika oluşturmayı, almayı ve silmeyi öğreneceksiniz

Key Vault istemci kitaplığı kaynakları:

API başvuru belgeleri | Kitaplık kaynak kodu | Paketi (npm)

Key Vault ve sertifikalar hakkında daha fazla bilgi için bkz:

Önkoşullar

Bu hızlı başlangıçta Azure CLI çalıştırdığınız varsayılır.

Azure'da oturum açma

  1. login komutunu çalıştırın.

    az login
    

    CLI varsayılan tarayıcınızı açabiliyorsa bunu yapar ve bir Azure oturum açma sayfası yükler.

    Aksi takdirde adresinde bir tarayıcı sayfası https://aka.ms/devicelogin açın ve terminalinizde görüntülenen yetkilendirme kodunu girin.

  2. Tarayıcıda hesabınızın kimlik bilgileriyle oturum açın.

Yeni Node.js uygulaması oluşturma

Anahtar kasanızı kullanan bir Node.js uygulaması oluşturun.

  1. Terminalde adlı key-vault-node-app bir klasör oluşturun ve bu klasöre geçin:

    mkdir key-vault-node-app && cd key-vault-node-app
    
  2. Node.js projesini başlatın:

    npm init -y
    

Key Vault paketlerini yükleme

  1. Terminali kullanarak Node.js için Azure Key Vault gizli dizi kitaplığını @azure/keyvault-certificates yükleyin.

    npm install @azure/keyvault-certificates
    
  2. Key Vault'ta kimlik doğrulaması yapmak için azure kimlik istemci kitaplığını (@azure/kimlik) yükleyin.

    npm install @azure/identity
    

Anahtar kasanıza erişim izni verme

Rol Tabanlı Erişim Denetimi (RBAC) aracılığıyla uygulamanıza anahtar kasanıza izin vermek için az role assignment create Azure CLI komutunu kullanarak bir rol atayın.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

App-id>, subscription-id>, <resource-group-name> ve <your-unique-keyvault-name> değerlerini gerçek değerlerinizle değiştirin<<. <app-id> , Azure AD'de kayıtlı uygulamanızın Uygulama (istemci) kimliğidir.

Ortam değişkenlerini belirleme

Bu uygulama anahtar kasası adını adlı KEY_VAULT_NAMEbir ortam değişkeni olarak kullanıyor.

set KEY_VAULT_NAME=<your-key-vault-name>

Kimlik doğrulaması yapma ve istemci oluşturma

Çoğu Azure hizmeti için uygulama istekleri yetkilendirilmelidir. Azure Identity istemci kitaplığı tarafından sağlanan DefaultAzureCredential yöntemini kullanmak, kodunuzda Azure hizmetlerine parolasız bağlantılar uygulamak için önerilen yaklaşımdır. DefaultAzureCredential birden çok kimlik doğrulama yöntemini destekler ve çalışma zamanında hangi yöntemin kullanılacağını belirler. Bu yaklaşım, uygulamanızın ortama özgü kod uygulamadan farklı ortamlarda (yerel ve üretim) farklı kimlik doğrulama yöntemleri kullanmasını sağlar.

Bu hızlı başlangıçta, DefaultAzureCredential Azure CLI'da oturum açmış yerel geliştirme kullanıcısının kimlik bilgilerini kullanarak anahtar kasasında kimlik doğrulaması yapar. Uygulama Azure'a dağıtıldığında, aynı DefaultAzureCredential kod App Service, Sanal Makine veya diğer hizmetlere atanan yönetilen kimliği otomatik olarak bulabilir ve kullanabilir. Daha fazla bilgi için bkz . Yönetilen Kimliğe Genel Bakış.

Bu kodda, anahtar kasanızın adı biçiminde anahtar kasası URI'sini https://<your-key-vault-name>.vault.azure.netoluşturmak için kullanılır. Anahtar kasasında kimlik doğrulaması hakkında daha fazla bilgi için bkz . Geliştirici Kılavuzu.

Kod örneği

Bu kod aşağıdaki Key Vault Sertifika sınıflarını ve yöntemlerini kullanır:

Uygulama çerçevesini ayarlama

  1. Yeni metin dosyası oluşturun ve aşağıdaki kodu index.js dosyasına yapıştırın.

    const { CertificateClient, DefaultCertificatePolicy } = require("@azure/keyvault-certificates");
    const { DefaultAzureCredential } = require("@azure/identity");
    
    async function main() {
      // If you're using MSI, DefaultAzureCredential should "just work".
      // Otherwise, DefaultAzureCredential expects the following three environment variables:
      // - AZURE_TENANT_ID: The tenant ID in Azure Active Directory
      // - AZURE_CLIENT_ID: The application (client) ID registered in the AAD tenant
      // - AZURE_CLIENT_SECRET: The client secret for the registered application
      const credential = new DefaultAzureCredential();
    
      const keyVaultName = process.env["KEY_VAULT_NAME"];
      if(!keyVaultName) throw new Error("KEY_VAULT_NAME is empty");
      const url = "https://" + keyVaultName + ".vault.azure.net";
    
      const client = new CertificateClient(url, credential);
    
      const uniqueString = new Date().getTime();
      const certificateName = `cert${uniqueString}`;
    
      // Creating a self-signed certificate
      const createPoller = await client.beginCreateCertificate(
        certificateName,
        DefaultCertificatePolicy
      );
    
      const pendingCertificate = createPoller.getResult();
      console.log("Certificate: ", pendingCertificate);
    
      // To read a certificate with their policy:
      let certificateWithPolicy = await client.getCertificate(certificateName);
      // Note: It will always read the latest version of the certificate.
    
      console.log("Certificate with policy:", certificateWithPolicy);
    
      // To read a certificate from a specific version:
      const certificateFromVersion = await client.getCertificateVersion(
        certificateName,
        certificateWithPolicy.properties.version
      );
      // Note: It will not retrieve the certificate's policy.
      console.log("Certificate from a specific version:", certificateFromVersion);
    
      const updatedCertificate = await client.updateCertificateProperties(certificateName, "", {
        tags: {
          customTag: "value"
        }
      });
      console.log("Updated certificate:", updatedCertificate);
    
      // Updating the certificate's policy:
      await client.updateCertificatePolicy(certificateName, {
        issuerName: "Self",
        subject: "cn=MyOtherCert"
      });
      certificateWithPolicy = await client.getCertificate(certificateName);
      console.log("updatedCertificate certificate's policy:", certificateWithPolicy.policy);
    
      // delete certificate
      const deletePoller = await client.beginDeleteCertificate(certificateName);
      const deletedCertificate = await deletePoller.pollUntilDone();
      console.log("Recovery Id: ", deletedCertificate.recoveryId);
      console.log("Deleted Date: ", deletedCertificate.deletedOn);
      console.log("Scheduled Purge Date: ", deletedCertificate.scheduledPurgeDate);
    }
    
    main().catch((error) => {
      console.error("An error occurred:", error);
      process.exit(1);
    });
    

Örnek uygulamayı çalıştırın

  1. Uygulamayı çalıştırın:

    node index.js
    
  2. Oluşturma ve alma yöntemleri sertifika için tam bir JSON nesnesi döndürür:

    {
      "keyId": undefined,
      "secretId": undefined,
      "name": "YOUR-CERTIFICATE-NAME",
        "reuseKey": false,
        "keyCurveName": undefined,
        "exportable": true,
        "issuerName": 'Self',
        "certificateType": undefined,
        "certificateTransparency": undefined
      },
      "properties": {
        "createdOn": 2021-11-29T20:17:45.000Z,
        "updatedOn": 2021-11-29T20:17:45.000Z,
        "expiresOn": 2022-11-29T20:17:45.000Z,
        "id": "https://YOUR-KEY-VAULT-NAME.vault.azure.net/certificates/YOUR-CERTIFICATE-NAME/YOUR-CERTIFICATE-VERSION",
        "enabled": false,
        "notBefore": 2021-11-29T20:07:45.000Z,
        "recoveryLevel": "Recoverable+Purgeable",
        "name": "YOUR-CERTIFICATE-NAME",
        "vaultUrl": "https://YOUR-KEY-VAULT-NAME.vault.azure.net",
        "version": "YOUR-CERTIFICATE-VERSION",
        "tags": undefined,
        "x509Thumbprint": undefined,
        "recoverableDays": 90
      }
    }
    

Uygulama Yapılandırması ile tümleştirme

Azure SDK, Verilen Key Vault sertifika kimliğini ayrıştırmak için Key Vault'a Uygulama Yapılandırması başvuruları kullanırsanız gerekli olan parseKeyVaultCertificateIdentifier adlı bir yardımcı yöntem sağlar. Uygulama Yapılandırması, Key Vault sertifika kimliğini depolar. Sertifika adını almak için bu kimliği ayrıştırmak için parseKeyVaultCertificateIdentifier yöntemine ihtiyacınız vardır. Sertifika adını aldıktan sonra, bu hızlı başlangıçtaki kodu kullanarak geçerli sertifikayı alabilirsiniz.

Sonraki adımlar

Bu hızlı başlangıçta, bir anahtar kasası oluşturdunuz, bir sertifika depoladunuz ve bu sertifikayı aldıysanız. Key Vault ve uygulamalarınızla tümleştirme hakkında daha fazla bilgi edinmek için bu makalelere geçin.