Geliştirme ve çalışma zamanı ortamları için Azure 'da kimlik doğrulama

Azure 'da kimlik doğrulaması yapmak için JavaScript için Azure SDK 'larını kullanmak üzere bir hizmet sorumlusu oluşturun.

Azure platformunda kimlik doğrulama

Genellikle, çoğu hizmet ve işlevsellik için bir belirteç oluşturmak üzere kimlik bilgisi yöntemiyle kimlik doğrulaması yapmanız gerekir. Belirteç, kullanıma yetki vermek için SDK 'ya geçirilir. Birkaç kimlik bilgisi yöntemi vardır, bazıları daha kapsamlı kurulum gerektirir ancak üretim hizmeti kullanımı için oluşturulmuştur.

Her NPM Azure SDK paketindekimlik doğrulaması yapmak için pakete özgü yönergeleri bulun .

Hızlı başlangıç ve öğreticiler için etkileşimli kimlik doğrulaması

Azure hizmetleri için hızlı başlangıç veya öğretici kullanmak üzere, en hızlı kimlik bilgisi yöntemi etkileşimli oturum açmayöntemidir. Bu yöntemde birkaç hızlı adımı tamamlayabilirsiniz:

  1. Kodu çalıştırırsınız.
  2. Kimlik doğrulama URL 'SI ve belirteç içeren bir ileti görüntülenir.
  3. Bu URL 'ye bir tarayıcı açın ve belirteci girin. Azure kimlik doğrulama gereksinimlerinize bağlı olarak, ikinci bir kimlik doğrulama adımı gerekebilir.
  4. Kimlik doğrulamasını tamamladıktan sonra tarayıcıyı kapatabilirsiniz.
  5. Kod çalışmaya devam eder.

bir tarayıcıda etkileşimli oturum açma kimlik doğrulaması örneği, kimlik doğrulama yaptığınız Azure Active Directory uygulamasının kiracı ve istemci kimliği için yapılandırma ayarını gerektirir. Bu koda bir örnek:

function withInteractiveBrowserCredential() {
  const credential = new InteractiveBrowserCredential({
    tenantId: "<YOUR_TENANT_ID>",
    clientId: "<YOUR_CLIENT_ID>"
  });

  const client = new SecretClient("https://key-vault-name.vault.azure.net", credential);
}

Bu yöntem, kod her çalıştığında etkileşimli bir oturum açma gerektirdiğinden, Azure platformu için geliştirme çalışmalarınızı başlatmaya hazırsanız bu yöntemi etkileşimli olmayan bir kimlik bilgisi yöntemiyle değiştirmek isteyeceksiniz.

Bu kod herhangi bir kimlik doğrulama parolası kullanmadığından, bu kodu kaynak denetimine bakabilirsiniz.

Geliştirme ve üretim kullanımı için Azure kimlik doğrulaması

Geliştirme işinize başlamaya hazırsanız , aşağıdaki kimlik bilgilerini seçmenizi öneririz:

Yerel geliştirme Dağıtılan uygulama
Clientsecretcredential. Hizmet sorumlunuzu oluşturduktan ve istemci KIMLIĞINIZI, kiracı KIMLIĞINIZI ve gizli anahtarı aldıktan sonra, bu kimlik bilgisinin kullanımı hızlı olur ve ortam değişkenlerini gerektirmez. Üretime dağıtmayı planlarken, ortam değişkenlerini gerektiren DefaultAzureCredential kullanın. Bu kimlik bilgisi yöntemi, kaynak denetiminde gizli dizileri depolamanın veya kullanmanın avantajını sağlar.

Belirli amaçlar için kimlik doğrulamasını denetlemenizi sağlayan başka kimlik bilgisi sınıflarıvardır.

1. hizmet sorumlusu oluşturma

Bir hizmet sorumlusu oluşturun ve Azure kaynaklarına erişimini yapılandırın. Hizmet sorumlusu DefaultAzureCredential kullanmak için gereklidir .

  1. Azure CLı veya Cloud Shellile Azure az ad SP Create-for-RBAC komutuyla hizmet sorumlusu oluşturun.

    az ad sp create-for-rbac --name YOUR-SERVICE-PRINCIPAL-NAME --role Contributor
    
  2. Komuttan gelen yanıt, Azure Key Vaultgibi güvenli bir şekilde depolamanız gereken gizli dizileri içerir:

    {
      "appId": "YOUR-SERVICE-PRINCIPAL-ID",
      "displayName": "YOUR-SERVICE-PRINCIPAL-NAME",
      "name": "http://YOUR-SERVICE-PRINCIPAL-NAME",
      "password": "!@#$%",
      "tenant": "YOUR-TENANT-ID"
    }
    

Ayrıca, ile bir hizmet sorumlusu da oluşturabilirsiniz:

2. ortam değişkenlerinizi yapılandırın

Azure bulut ortamlarında, aşağıdaki ortam değişkenlerini yapılandırmanız gerekir. Azure Identity SDK bu tam ortam adlarını gerektirdiğinden adları değiştirmeyin. Bu ortam değişkenleri , bağlam Için DefaultAzureCredential kullanması gerekir.

  • AZURE_TENANT_ID: tenant Yukarıdaki hizmet sorumlusu çıktısından.
  • AZURE_CLIENT_ID: appId Yukarıdaki hizmet sorumlusu çıktısından.
  • AZURE_CLIENT_SECRET: password Yukarıdaki hizmet sorumlusu çıktısından.

3. hizmet sorumlusu ile Azure aboneliklerini listeleme

Azure ile kimlik doğrulamak ve aboneliklerinizi listelemek için yeni hizmet sorumlusunu kullanın.

  1. Bağımlılıkları yükler: kimlik Için Azure SDK, Azure abonelikleri SDK.

    npm install @azure/identity @azure/arm-subscriptions --save
    
  2. Aşağıdaki kodla list.jsadlı bir JavaScript dosyası oluşturun:

    const { ClientSecretCredential, DefaultAzureCredential } = require("@azure/identity");
    const { SubscriptionClient } = require("@azure/arm-subscriptions");
    
    let credentials = null;
    
    const tenantId = process.env["AZURE_TENANT_ID"] || "REPLACE-WITH-YOUR-TENANT-ID"; 
    const clientId = process.env["AZURE_CLIENT_ID"] || "REPLACE-WITH-YOUR-CLIENT-ID"; 
    const secret = process.env["AZURE_CLIENT_SECRET"] || "REPLACE-WITH-YOUR-CLIENT-SECRET";
    
    
    if(process.env.production){
    
      // production
      credentials = new DefaultAzureCredential();
    
    }else{
    
      // development
      credentials = new ClientSecretCredential(tenantId, clientId, secret);
      console.log("development");
    }
    
    // use credential to authenticate with Azure SDKs
    let client = new SubscriptionClient(credentials);
    
    const subscriptions = async() =>{
    
      // get list of Azure subscriptions
      const listOfSubscriptions = await client.subscriptions.list();
      
      // get details of each subscription
      for (const item of listOfSubscriptions) {
      
          const subscriptionDetails = await client.subscriptions.get(item.subscriptionId);
      
          /*
        
          Each item looks like:
        
          {
            id: '/subscriptions/123456',
            subscriptionId: '123456',
            displayName: 'YOUR-SUBSCRIPTION-NAME',
            state: 'Enabled',
            subscriptionPolicies: {
              locationPlacementId: 'Internal_2014-09-01',
              quotaId: 'Internal_2014-09-01',
              spendingLimit: 'Off'
            },
            authorizationSource: 'RoleBased'
          },
        
          */
      
          console.log(subscriptionDetails)
      }
    }
    
    subscriptions()
    .then(()=>console.log("done"))
    .catch(ex=>console.log(ex))
    
  3. Ortam değişkenlerini ayarlamadıysanız, kimlik bilgisi dizelerini değerlerinizle değiştirin.

    const tenantId = process.env["AZURE_TENANT_ID"] || "REPLACE-WITH-YOUR-TENANT-ID"; 
    const clientId = process.env["AZURE_CLIENT_ID"] || "REPLACE-WITH-YOUR-CLIENT-ID"; 
    const secret = process.env["AZURE_CLIENT_SECRET"] || "REPLACE-WITH-YOUR-CLIENT-SECRET";
    
  4. Kaynak grubu listesini görüntülemek için dosyayı çalıştırın:

    node list.js
    
  5. Örnek kodu ve Package. json ' ın tamamını görüntüleyin:

Sonraki adımlar