Aracılığıyla paylaş


Azure Kimlik kitaplığını kullanarak Azure hizmetlerinde JavaScript uygulamalarının kimliğini doğrulama

Bir uygulamanın Depolama, Key Vault veya Bilişsel Hizmetler gibi bir Azure kaynağına 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 yaklaşım, uygulamalarınızın Azure kaynaklarında kimlik doğrulaması yaparken bağlantı dizeleri veya anahtarlar yerinebelirteç tabanlı kimlik doğrulaması kullanmasını sağlamaktır. Azure Kimlik kitaplığı 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 uygulamaların 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.

Çevre Kimlik doğrulama
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ştirmesırasında kimlik doğrulaması bölümünde daha ayrıntılı olarak açıklanmıştır.
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.

Çalıştığı yere bağlı olarak bir uygulama için ö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ı dizeleri veya anahtarlar) yerine belirteç tabanlı kimlik doğrulaması şiddetle önerilir. Belirteç tabanlı kimlik doğrulaması, DefaultAzureCredentialile sağlanır.

Belirteç tabanlı kimlik doğrulaması Gizli bilgiler (bağlantı dizileri ve anahtarlar)
en düşük ayrıcalık ilkesi, Azure kaynağında uygulamanın ihtiyaç duyduğu belirli izinleri oluşturun. Bağlantı dizesi veya anahtarı, Azure kaynağına tam haklar verir.
Depolanacak bir uygulama sırrı yoktur. Gizli bilgiler uygulama ayarında veya ortam değişkeninde saklanmalı ve yenilenmelidir.
Azure Kimlik kitaplığı, arka planda sizin için belirteçleri yönetir. Bu, belirteç tabanlı kimlik doğrulamasını bağlantı dizesi olarak kullanmayı kolaylaştırır. Sırlar yönetilmiyor.

Bağlantı dizelerinin kullanımı, üretim veya hassas verilere erişmeyen ilk kavram kanıtı uygulamaları veya geliştirme prototipleriyle sınırlandırılmalıdır. Aksi takdirde, Azure kaynaklarında kimlik doğrulaması yapılırken Azure Kimlik kitaplığında bulunan belirteç tabanlı kimlik doğrulama sınıfları her zaman tercih edilmelidir.

Aşağıdaki kitaplığı kullanın:

DefaultAzureCredential

Azure Identity kitaplığı tarafından sağlanan DefaultAzureCredential sınıfı, uygulamaların çalıştırıldığı ortama bağlı olarak farklı kimlik doğrulama yöntemleri kullanmasına olanak tanır. Bu davranış, uygulamaların yerel geliştirmeden test ortamlarına, kod değişikliği olmadan üretime yükseltilmesini sağlar. Her ortam için uygun kimlik doğrulama yöntemini yapılandırdığınızda DefaultAzureCredential bu kimlik doğrulama yöntemini otomatik olarak algılar ve kullanır. DefaultAzureCredential kullanımı, farklı ortamlarda farklı kimlik doğrulama yöntemlerini kullanmak için koşullu mantığı veya özellik bayraklarını el ile kodlamak yerine tercih edilmelidir.

DefaultAzureCredential kullanımıyla ilgili ayrıntılar bölümünde ele alınmıştır. DefaultAzureCredential ise bir uygulamada nasıl kullanılacağıbölümünde açıklanmıştır.

Sunucu ortamlarında kimlik doğrulaması

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ımlamak ve kimlik doğrulamak için tasarlanmış özel bir güvenlik lideri türü olanhizmet lideriile temsil 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

DefaultAzureCredential, Microsoft Entra ID'de kimlik doğrulaması için belirlenmiş sıralı bir mekanizma dizisidir. Her kimlik doğrulama mekanizması, TokenCredential sınıfından türetilen bir sınıftır vekimlik bilgisi olarak bilinir. çalışma zamanında, DefaultAzureCredential ilk kimlik bilgilerini kullanarak kimlik doğrulamayı dener. Bu kimlik bilgisi bir erişim belirteci alamazsa, bir erişim belirteci başarıyla alınana kadar dizideki bir sonraki kimlik bilgisi denenir ve bu şekilde devam edilir. Bu şekilde, uygulamanız ortama özgü kod yazmadan farklı ortamlarda farklı kimlik bilgilerini kullanabilir.

DefaultAzureCredentialkullanmak için @azure/identity paketini uygulamanıza ekleyin.

npm install @azure/identity

Daha sonra aşağıdaki kod örneği, bir DefaultAzureCredential nesnesinin örneğini oluşturma ve bunu Azure SDK hizmeti istemci sınıfıyla (bu örnekte Azure Blob Depolama'ya erişmek için kullanılan bir BlobServiceClient) nasıl kullanacağınız gösterilmektedir.

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 Azure'da kimliğini 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.