Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure'da barındırılan bir uygulamanın kimliğini diğer Azure kaynaklarda doğrulamak için önerilen yaklaşım , yönetilen kimlik kullanmaktır. Bu yaklaşım, Azure App Service, Azure Container Apps ve Azure Sanal Makinelerinde barındırılan uygulamalar da dahil olmak üzere çoğu Azure hizmeti için desteklenir. Kimlik doğrulamasına genel bakış sayfasında farklı kimlik doğrulama teknikleri ve yaklaşımları hakkında daha fazla bilgi edinin. İlerideki bölümlerde şunları öğreneceksiniz:
- Temel yönetilen kimlik kavramları
- Uygulamanız için kullanıcı tarafından atanan yönetilen kimlik oluşturma
- Kullanıcı tarafından atanan yönetilen kimliğe rol atama
- Uygulama kodunuzdan kullanıcı tarafından atanan yönetilen kimliği kullanarak kimlik doğrulaması
Temel yönetilen kimlik kavramları
Yönetilen kimlik, gizli anahtarlar veya diğer uygulama gizli dizileri kullanılmadan uygulamanızın diğer Azure kaynaklarına güvenli bir şekilde bağlanmasını sağlar. Azure, kimliği ve bağlanmasına izin verilen kaynakları dahili olarak izler. Azure, uygulamanın diğer Azure kaynaklarına bağlanmasına izin vermek üzere Microsoft Entra belirteçlerini otomatik olarak almak için bu bilgileri kullanır.
Barındırılan uygulamanızı yapılandırırken göz önünde bulundurmanız gereken iki tür yönetilen kimlik vardır:
- Sistem tarafından atanan yönetilen kimlikler doğrudan bir Azure kaynağında etkinleştirilir ve yaşam döngüsüne bağlıdır. Kaynak silindiğinde Azure sizin için kimliği otomatik olarak siler. Sistem tarafından atanan kimlikler, yönetilen kimlikleri kullanmaya yönelik minimalist bir yaklaşım sağlar.
- Kullanıcı tarafından atanan yönetilen kimlikler tek başına Azure kaynakları olarak oluşturulur ve daha fazla esneklik ve yetenek sunar. Bunlar, aynı kimliği ve izinleri paylaşması gereken birden çok Azure kaynağı içeren çözümler için idealdir. Örneğin, birden çok sanal makinenin aynı Azure kaynakları kümesine erişmesi gerekiyorsa, kullanıcı tarafından atanan yönetilen kimlik yeniden kullanılabilirlik ve iyileştirilmiş yönetim sağlar.
Tip
Yönetilen kimlik en iyi uygulama önerileri makalesinde sistem tarafından atanan ve kullanıcı tarafından atanan yönetilen kimlikleri seçme ve yönetme hakkında daha fazla bilgi edinin.
Aşağıdaki bölümlerde, Azure tarafından barındırılan bir uygulama için kullanıcı tarafından atanan yönetilen kimliği etkinleştirme ve kullanma adımları açıklanmaktadır. Sistem tarafından atanan bir yönetilen kimlik kullanmanız gerekiyorsa daha fazla bilgi için sistem tarafından atanan yönetilen kimlikler makalesini ziyaret edin.
Kullanıcının atadığı yönetilen kimliği oluşturun
Kullanıcı tarafından atanan yönetilen kimlikler, Azure portalı veya Azure CLI kullanılarak Azure aboneliğinizde tek başına kaynaklar olarak oluşturulur. Azure CLI komutları Azure Cloud Shell'de veya AzureCLI yüklü bir iş istasyonunda çalıştırılabilir.
Azure portalında ana arama çubuğuna Yönetilen kimlikler yazın ve Hizmetler bölümünde eşleşen sonucu seçin.
Yönetilen Kimlikler sayfasında + Oluştur'u seçin.
Kullanıcı Tarafından Atanan Yönetilen Kimlik Oluştur sayfasında, kullanıcı tarafından atanan yönetilen kimlik için bir abonelik, kaynak grubu ve bölge seçin ve bir ad sağlayın.
Girişlerinizi gözden geçirmek ve doğrulamak için Gözden geçir + oluştur'u seçin.
Kullanıcı tarafından atanan yönetilen kimliği oluşturmak için Oluştur'u seçin.
Kimlik oluşturulduktan sonra Kaynağa git'i seçin.
Yeni kimliğin Genel Bakış sayfasında, uygulama kodunu yapılandırırken kullanmak üzere İstemci Kimliği değerini kopyalayın.
Yönetilen kimliği uygulamanıza atama
Kullanıcı tarafından atanan yönetilen kimlik bir veya daha fazla Azure kaynağıyla ilişkilendirilebilir. Bu kimliği kullanan tüm kaynaklar, kimliğin rolleri aracılığıyla uygulanan izinleri alır.
Azure portalında, uygulama kodunuzu barındıran azure app service veya Azure Container App örneği gibi bir kaynağa gidin.
Kaynağın Genel Bakış sayfasında Ayarlar'ı genişletin ve gezintiden Kimlik'i seçin.
Kimlik sayfasında Kullanıcı tarafından atanan sekmesine geçin.
Kullanıcı tarafından atanan yönetilen kimlik ekle panelini açmak için + Ekle'yi seçin.
Kullanıcı tarafından atanan yönetilen kimlik ekle panelinde Abonelik açılan listesini kullanarak kimliklerinizin arama sonuçlarını filtreleyin. Uygulamanızı barındıran Azure kaynağı için etkinleştirdiğiniz kullanıcı tarafından atanan yönetilen kimliği bulmak için Kullanıcı tarafından atanan yönetilen kimlikler arama kutusunu kullanın.
Devam etmek için kimliği seçin ve panelin alt kısmındaki Ekle'yi seçin.
Yönetilen kimliğe roller atayın
Ardından, uygulamanızın hangi rollere ihtiyacı olduğunu belirleyin ve bu rolleri yönetilen kimliğe atayın. Yönetilen kimliğe aşağıdaki kapsamlarda rol atayabilirsiniz:
- Kaynak: Atanan roller yalnızca ilgili kaynağa uygulanır.
- Kaynak grubu: Atanan roller, kaynak grubunda yer alan tüm kaynaklara uygulanır.
- Abonelik: Atanan roller, abonelikte yer alan tüm kaynaklar için geçerlidir.
Aşağıdaki örnekte, birçok uygulama tüm ilgili Azure kaynaklarını tek bir kaynak grubu kullanarak yönettiğinden kaynak grubu kapsamında rollerin nasıl atandığı gösterilmektedir.
Kullanıcı tarafından atanan yönetilen kimliğe sahip uygulamayı içeren kaynak grubunun Genel Bakış sayfasına gidin.
Sol gezinti bölmesinde Erişim denetimi (IAM) öğesini seçin.
Erişim denetimi (IAM) sayfasında üstteki menüde + Ekle'yi seçin ve ardından Rol ataması ekle'yi seçerek Rol ataması ekle sayfasına gidin.
Rol ataması ekle sayfası, kimliklere rol atamak için sekmeli, çok adımlı bir iş akışı sunar. İlk Rol sekmesinde, kimliğe atamak istediğiniz rolü bulmak için üstteki arama kutusunu kullanın.
Sonuçlardan rolü seçin ve ardından İleri'yi seçerek Üyeler sekmesine gidin.
Erişim ata seçeneği içinYönetilen kimlik'i seçin.
Üyeler seçeneği için + Üyeleri seç'i seçerek Yönetilen kimlikleri seçin panelini açın.
Yönetilen kimlikleri seçin panelinde Abonelik ve Yönetilen kimlik açılan listelerini kullanarak kimliklerinizin arama sonuçlarını filtreleyin. Uygulamanızı barındıran Azure kaynağı için etkinleştirdiğiniz kullanıcı tarafından atanan yönetilen kimliği bulmak için Arama seçin kutusunu kullanın.
Devam etmek için kimliği seçin ve panelin alt kısmındaki Seç'i seçin.
Sayfanın alt kısmındaki Gözden geçir ve ata'yı seçin.
İş akışını tamamlamak için son Gözden Geçir + ata sekmesinde Gözden Geçir + ata'yı seçin.
Uygulamanızdan Azure hizmetlerinde kimlik doğrulaması
Azure Kimlik kitaplığı, farklı senaryoları ve Microsoft Entra kimlik doğrulama akışlarını TokenCredential desteklemeye uyarlanmış çeşitli kimlik bilgileri sağlar. Yönetilen kimlik yerel olarak çalıştırılırken kullanılamadığından, sonraki adımlar hangi senaryoda hangi kimlik bilgilerinin kullanılacağını gösterir:
-
Yerel geliştirme ortamı: Yalnızca yerel geliştirme sırasında, önceden yapılandırılmış, önceden yapılandırılmış bir kimlik bilgileri zinciri için DefaultAzureCredential adlı bir sınıf kullanın.
DefaultAzureCredentialAzure CLI veya Visual Studio Code gibi yerel araçlarınızdan veya IDE'nizden kullanıcı kimlik bilgilerini bulur. Ayrıca yeniden denemeler, yanıtlar için bekleme süreleri ve birden çok kimlik doğrulama seçeneği için destek için esneklik ve kolaylık sağlar. Daha fazla bilgi edinmek için Yerel geliştirme sırasında Azure hizmetlerinde kimlik doğrulaması yapma makalesini ziyaret edin. -
Azure'da barındırılan uygulamalar: Uygulamanız Azure'da çalışırken, uygulamanız için yapılandırılan yönetilen kimliği güvenli bir şekilde bulmak için kullanın
ManagedIdentityCredential. Bu tam kimlik bilgisi türünün belirtilmesi, diğer kullanılabilir kimlik bilgilerinin beklenmedik bir şekilde alınmasını engeller.
Kodu uygulama
JavaScript projesinde @azure/kimlik paketini ekleyin. Seçtiğiniz bir terminalde uygulama projesi dizinine gidin ve aşağıdaki komutları çalıştırın:
npm install @azure/identity
Azure hizmetlerine çeşitli Azure SDK istemci kitaplıklarından özel istemci sınıfları kullanılarak erişilir. içinde index.js, belirteç tabanlı kimlik doğrulamasını yapılandırmak için aşağıdaki adımları tamamlayın:
- Paketi içeri aktarın
@azure/identity. - İstemciye uygun
TokenCredentialbir örnek geçirin:- Uygulamanız yerel olarak çalışırken kullanın
DefaultAzureCredential. - Uygulamanız Azure'da çalışırken kullanın
ManagedIdentityCredentialve istemci kimliğini, kaynak kimliğini veya nesne kimliğini yapılandırın.
- Uygulamanız yerel olarak çalışırken kullanın
İstemci kimliği, bu kimliği kullanarak kimlik doğrulaması gereken uygulamaları veya hizmetleri yapılandırırken yönetilen kimliği tanımlamak için kullanılır.
Aşağıdaki komutu kullanarak kullanıcı tarafından atanan yönetilen kimliğe atanan istemci kimliğini alın:
az identity show \ --resource-group <resource-group-name> \ --name <identity-name> \ --query 'clientId'İstemci kimliğiyle yapılandırın
ManagedIdentityCredential:import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; console.log(process.env); function createBlobServiceClient() { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { const clientId = process.env.AZURE_CLIENT_ID; if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity'); return new BlobServiceClient(url, new ManagedIdentityCredential(clientId)); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main() { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME); // do something with client const properties = await containerClient.getProperties(); console.log(properties); } catch (err) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err) => { console.error("Error running sample:", err.message); process.exit(1); });
Kodu uygulama
TypeScript projesinde @azure/kimlik paketini ekleyin. Seçtiğiniz bir terminalde uygulama projesi dizinine gidin ve aşağıdaki komutları çalıştırın:
npm install typescript @azure/identity @types/node
Azure hizmetlerine çeşitli Azure SDK istemci kitaplıklarından özel istemci sınıfları kullanılarak erişilir. içinde index.js, belirteç tabanlı kimlik doğrulamasını yapılandırmak için aşağıdaki adımları tamamlayın:
- Paketi içeri aktarın
@azure/identity. - İstemciye uygun
TokenCredentialbir örnek geçirin:- Uygulamanız yerel olarak çalışırken kullanma
DefaultAzureCredential - Uygulamanız Azure'da çalışırken kullanın
ManagedIdentityCredentialve istemci kimliğini, kaynak kimliğini veya nesne kimliğini yapılandırın.
- Uygulamanız yerel olarak çalışırken kullanma
İstemci kimliği, bu kimliği kullanarak kimlik doğrulaması gereken uygulamaları veya hizmetleri yapılandırırken yönetilen kimliği tanımlamak için kullanılır.
Aşağıdaki komutu kullanarak kullanıcı tarafından atanan yönetilen kimliğe atanan istemci kimliğini alın:
az identity show \ --resource-group <resource-group-name> \ --name <identity-name> \ --query 'clientId'İstemci kimliğiyle yapılandırın
ManagedIdentityCredential:import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; function createBlobServiceClient(): BlobServiceClient { const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME; if (!accountName) throw Error('Azure Storage accountName not found'); const url = `https://${accountName}.blob.core.windows.net`; if (process.env.NODE_ENV === "production") { const clientId = process.env.AZURE_CLIENT_ID; if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity'); return new BlobServiceClient(url, new ManagedIdentityCredential(clientId)); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main(): Promise<void> { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME!); const properties = await containerClient.getProperties(); console.log(properties); } catch (err: any) { console.error("Error retrieving container properties:", err.message); throw err; } } main().catch((err: Error) => { console.error("Error running sample:", err.message); process.exit(1); });
Yukarıdaki kod, çalıştığı ortama bağlı olarak farklı davranır:
- Yerel geliştirme iş istasyonunuzda,
DefaultAzureCredentialbir uygulama hizmet sorumlusunun ortam değişkenlerini veya bir dizi geliştirici kimlik bilgisi için Visual Studio Code gibi yerel olarak yüklenen geliştirici araçlarını arar. - Azure'a dağıtıldığında,
ManagedIdentityCredentialdiğer hizmetlerde otomatik olarak kimlik doğrulaması yapmak için yönetilen kimlik yapılandırmalarınızı bulur.