JavaScript için Azure SDK'sını kullanarak Azure hizmetlerinde JavaScript uygulamalarının kimliğini doğrulama

Bir uygulamanın bir Azure kaynağına (Depolama, Anahtar kasası veya Bilişsel hizmetler gibi) erişmesi gerektiğinde uygulamanın Azure'da kimliği doğrulanmalıdır. Azure'a dağıtılan, şirket içinde dağıtılan veya yerel geliştirici iş istasyonunda geliştirme aşamasında olan tüm uygulamalar için bu durum geçerlidir. Bu makalede, JavaScript için Azure SDK'sını kullanırken Azure'da bir uygulamanın kimliğini doğrulamak için önerilen yaklaşımlar açıklanmaktadır.

Önerilen işlem, uygulamalarınızın Azure kaynaklarında kimlik doğrulaması yaparken bağlantı dizesi veya anahtarlar yerine belirteç tabanlı kimlik doğrulaması kullanmasını sağlamaktır. Azure SDK belirteç tabanlı kimlik doğrulaması sağlar ve uygulamanın yerel geliştirme aşamasında, Azure'a dağıtıldığında veya şirket içi bir sunucuya dağıtıldığında azure kaynaklarında sorunsuz bir şekilde kimlik doğrulaması yapmasına olanak tanır.

Bir uygulamanın Azure kaynaklarında kimlik doğrulaması yapmak için kullanması gereken belirteç tabanlı kimlik doğrulaması türü, uygulamanın çalıştığı yere bağlıdır ve aşağıdaki diyagramda gösterilmiştir.

Ortam Kimlik Doğrulaması
Yerel Bir geliştirici yerel geliştirme sırasında bir uygulama çalıştırıyorsa - Uygulama, yerel geliştirme için bir uygulama hizmet sorumlusu kullanarak veya geliştiricinin Azure kimlik bilgilerini kullanarak Azure'da kimlik doğrulaması yapabilir. Bu seçeneklerin her biri, yerel geliştirme sırasında kimlik doğrulaması bölümünde daha ayrıntılı olarak ele alınmıştı.
Azure Bir uygulama Azure'da barındırıldığında - Uygulamanın yönetilen kimlik kullanarak Azure kaynaklarında kimlik doğrulaması yapması gerekir. Bu seçenek, sunucu ortamlarında kimlik doğrulaması bölümünde aşağıda daha ayrıntılı olarak açıklanmıştır.
Şirket içi Bir uygulama şirket içinde barındırıldığında ve dağıtıldığında - Uygulamanın bir uygulama hizmet sorumlusu kullanarak Azure kaynaklarında kimlik doğrulaması yapması gerekir. Bu seçenek, sunucu ortamlarında kimlik doğrulaması bölümünde aşağıda daha ayrıntılı olarak açıklanmıştır.

Bir uygulamanın çalıştığı yere bağlı olarak önerilen belirteç tabanlı kimlik doğrulama stratejilerini gösteren diyagram.

Belirteç tabanlı kimlik doğrulamasının avantajları

Azure için uygulama oluştururken, gizli diziler (bağlantı dizesi veya anahtarlar) üzerinden belirteç tabanlı kimlik doğrulaması kesinlikle önerilir. Belirteç tabanlı kimlik doğrulaması DefaultAzureCredential ile sağlanır.

Belirteç tabanlı kimlik doğrulaması Gizli diziler (bağlantı dizesi ve anahtarlar)
En düşük ayrıcalık ilkesi, Azure kaynağında uygulamanın ihtiyaç duyduğu belirli izinleri belirleyin. bağlantı dizesi veya anahtar, Azure kaynağına tam haklar verir.
Depolamak için bir uygulama gizli dizisi yoktur. Gizli dizileri uygulama ayarında veya ortam değişkeninde depolamalı ve döndürmelidir.
Azure Kimlik SDK'sı arka planda sizin için belirteçleri yönetir. Bu, belirteç tabanlı kimlik doğrulamasının kullanımını bağlantı dizesi kadar kolaylaştırır. Gizli diziler yönetilmiyor.

bağlantı dizesi kullanımı, üretim veya hassas verilere erişmeyen ilk kavram kanıtı uygulamaları veya geliştirme prototipleriyle sınırlı olmalıdır. Aksi takdirde, Azure kaynaklarında kimlik doğrulaması yapılırken Azure SDK'da bulunan belirteç tabanlı kimlik doğrulama sınıfları her zaman tercih edilmelidir.

Aşağıdaki SDK'yi kullanın:

DefaultAzureCredential

Azure SDK DefaultAzureCredential yöntemi, uygulamaların çalıştırdıkları ortama bağlı olarak farklı kimlik doğrulama yöntemleri kullanmasına olanak tanır. Bu, uygulamaların kod değişikliği olmadan yerel, test ve üretim ortamlarında dağıtım yapmasına olanak tanır. Her ortam DefaultAzureCredential için uygun kimlik doğrulama yöntemini yapılandırıp bu kimlik doğrulama yöntemini otomatik olarak algılar ve kullanırsınız. kullanımı DefaultAzureCredential , farklı ortamlarda farklı kimlik doğrulama yöntemlerini kullanmak için koşullu mantığı veya özellik bayraklarını el ile kodlamak yerine tercih edilir.

DefaultAzureCredential sınıfını kullanma hakkındaki ayrıntılar, bu makalenin devamında Bir uygulamada DefaultAzureCredential kullanma bölümünde ele alınmıştır.

Sunucu ortamlarında kimlik doğrulaması

Bir sunucu ortamında barındırırken, her uygulamaya ortam başına benzersiz bir uygulama kimliği atanmalıdır. Azure'da bir uygulama kimliği, Azure'da uygulamaları tanımlamayı ve kimlik doğrulamayı amaçlayan özel bir güvenlik sorumlusu türü olan hizmet sorumlusuylatemsil edilir. Uygulamanız için kullanılacak hizmet sorumlusunun türü, uygulamanızın çalıştığı yere bağlıdır.

Yerel geliştirme sırasında kimlik doğrulaması

Yerel geliştirme sırasında bir uygulama geliştiricinin iş istasyonunda çalıştırıldığında, yerel ortamın uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapmaya devam etmesi gerekir.

Uygulamada DefaultAzureCredential kullanma

JavaScript uygulamasında DefaultAzureCredential kullanmak için uygulamanıza @azure/kimlik paketini ekleyin.

npm install @azure/identity

Ardından, aşağıdaki kod örneğinde bir DefaultAzureCredential nesnenin örneğini oluşturma ve bir Azure SDK istemci sınıfıyla kullanma işlemi gösterilmektedir. Bu örnekte Blob depolamaya erişmek için kullanılan bir BlobServiceClient kullanılmıştır.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

DefaultAzureCredential uygulama için yapılandırılan kimlik doğrulama mekanizmasını otomatik olarak algılar ve uygulamanın Kimliğini Azure'da doğrulamak için gerekli belirteçleri alır. Bir uygulama birden fazla SDK istemcisi kullanıyorsa, her SDK istemci nesnesiyle aynı kimlik bilgisi nesnesi kullanılabilir.

DefaultAzureCredential kullanılırken kimlik doğrulama yöntemlerini seçme sırası

Dahili olarak, DefaultAzureCredential Azure kaynaklarında uygulamaların kimliğini doğrulamak için kimlik bilgileri sağlayıcılarını seçme zinciri uygular. Her kimlik bilgisi sağlayıcısı, bu tür kimlik bilgilerinin uygulama için yapılandırılıp yapılandırılmadığını algılayabilir. DefaultAzureCredential sırayla her sağlayıcıyı denetler ve kimlik bilgilerinin yapılandırıldığı ilk sağlayıcının kimlik bilgilerini kullanır.

Birden fazla kimlik bilgisi yapılandırdıysanız, kimlik bilgilerini zincir üzerinden bulma sırası önemlidir.

JavaScript kimlik bilgilerini arayabilme DefaultAzureCredential sırası aşağıdaki diyagramda ve tabloda gösterilmiştir.

DefaultAzureCredential'ın bir uygulama için hangi kimlik doğrulama kaynağının yapılandırıldığını görmek için denetlediği sırayı gösteren diyagram.

İki yol vardır:

  • Dağıtılmış hizmet (Azure veya şirket içi): sıra ortam değişkenleri, ardından yönetilen kimlik ve ardından bir kimlik bilgisi için kalan konumlarla (Visual Studio Code, Azure CLI, Azure PowerShell) başlar.
  • Geliştiricinin yerel ortamı: Yerel geliştirici iş istasyonunun zinciri, Visual Studio Code'un Azure kullanıcısında oturum açmasıyla başlar, IDE'nin alt çubuğunda gösterilir, ardından Azure CLI'ya ve ardından Azure PowerShell'e geçer. Yerel ortam değişkenlerinizi tüm ortamınız veya projenin sanal ortamı (DOTENV gibi) için yapılandırıp yapılandırmadığınızı anlamanız önemlidir; bu değişkenler zincirde denetlenen ilk kimlik bilgisi olduğundan Visual Studio Code -> Azure CLI -> PowerShell zincirini geçersiz kılar.
Kimlik bilgisi türü Açıklama
Ortam DefaultAzureCredential, uygulama için bir uygulama hizmet sorumlusunun (uygulama kullanıcısı) ayarlandığını belirlemek üzere bir dizi ortam değişkeni okur. Öyleyse, DefaultAzureCredential uygulamanın kimliğini Azure'da doğrulamak için bu değerleri kullanır.

Bu yöntem genellikle sunucu ortamlarında kullanılır, ancak yerel olarak geliştirirken de kullanılabilir.
Yönetilen Kimlik Uygulama Yönetilen Kimlik etkin bir Azure konağına dağıtılırsa, DefaultAzureCredential bu Yönetilen Kimliği kullanarak uygulamanın kimliğini Azure'da doğrular. Yönetilen Kimlik kullanarak kimlik doğrulaması, bu belgenin Sunucu ortamlarında kimlik doğrulaması bölümünde açıklanmıştır.

Bu yöntem yalnızca bir uygulama yönetilen kimlik özellikli bir hizmet kullanılarak Azure'da barındırıldığında kullanılabilir.
Visual Studio Code Geliştirici, Visual Studio Code Azure Hesabı eklentisini kullanarak Azure'da kimlik doğrulaması yapmışsa, DefaultAzureCredential aynı hesabı kullanarak uygulamanın kimliğini Azure'da doğrular.
Azure CLI Bir geliştirici Azure CLI'daki komutu kullanarak az login Azure'da kimlik doğrulaması yapmışsa, DefaultAzureCredential aynı hesabı kullanarak uygulamanın kimliğini Azure'da doğrular.
Azure PowerShell Bir geliştirici Azure PowerShell'den cmdlet'ini Connect-AzAccount kullanarak Azure'da kimlik doğrulaması yapmışsa, DefaultAzureCredential aynı hesabı kullanarak uygulamanın kimliğini Azure'da doğrular.
Etkileşimli Etkinleştirilirse, DefaultAzureCredential geçerli sistemin varsayılan tarayıcısı aracılığıyla geliştiricinin kimliğini etkileşimli olarak doğrular. Varsayılan olarak, bu seçenek devre dışıdır.