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 Key Vault daha fazla güvenlikle kimlik bilgilerini ve diğer gizli dizileri depolamak için bir yol sağlar. Ancak kodunuzun, kimlik bilgilerini almak için Key Vault'a kimlik doğrulaması yapması gerekir. Azure kaynakları için yönetilen kimlikler Azure hizmetlere Microsoft Entra ID otomatik olarak yönetilen bir kimlik vererek bu sorunu çözmeye yardımcı olur. Kodunuzda kimlik bilgilerini görüntülemek zorunda kalmadan Key Vault dahil olmak üzere Microsoft Entra kimlik doğrulamasını destekleyen herhangi bir hizmette kimlik doğrulaması yapmak için bu kimliği kullanabilirsiniz.
Bu öğreticide Azure web uygulaması oluşturacak ve Azure App Service'a dağıtacaksınız. Azure web uygulamanızı bir Azure key vault ile kimlik doğrulama yaparken .NET için Azure Key Vault gizli istemci kitaplığını ve Azure CLI'yi kullanarak yönetilen bir kimlik kullanacaksınız. Seçtiğiniz geliştirme dilini, Azure PowerShell ve/veya Azure portalını kullandığınızda da aynı temel ilkeler geçerlidir.
Bu öğreticide sunulan Azure Uygulaması hizmet web uygulamaları ve dağıtımı hakkında daha fazla bilgi için bkz:
- App Service’e genel bakış
- Azure App Service'te ASP.NET Core web uygulaması oluşturun
- Azure App Service'e Local Git dağıtımı
Önkoşullar
Bu eğitimi tamamlamak için aşağıdakiler gerekir:
- Azure aboneliği. Ücretsiz bir tane oluşturun.
- .NET 8.0 SDK (veya üzeri).
- 2.28.0 veya üzeri bir Git yüklemesi.
- Azure CLI veya Azure PowerShell.
- Azure Key Vault. Azure portal, Azure CLI veya Azure PowerShell kullanarak anahtar kasası oluşturabilirsiniz.
- Bir Key Vault gizli. Azure portal, PowerShell veya Azure CLI kullanarak bir gizli oluşturabilirsiniz.
Web uygulamanızı zaten Azure App Service üzerinde dağıttıysanız, web uygulaması erişimini bir anahtar kasasına yapılandırma ve web uygulama kodunu değiştirme bölümlerine atlayabilirsiniz.
.NET Core uygulaması oluşturma
Bu adımda yerel .NET Core projesini ayarlayacaksınız.
Makinenizdeki bir terminal penceresinde adlı akvwebapp bir dizin oluşturun ve bunu geçerli dizin yapın:
mkdir akvwebapp
cd akvwebapp
dotnet new web komutunu kullanarak bir .NET Core uygulaması oluşturun:
dotnet new web
Uygulamayı Azure dağıttığınızda nasıl görünmesi gerektiğini öğrenmek için uygulamayı yerel olarak çalıştırın:
dotnet run
Web tarayıcısında konumundaki http://localhost:5000uygulamaya gidin.
Sayfada görüntülenen örnek uygulamadan "Merhaba Dünya!" iletisini görürsünüz.
Azure için web uygulamaları oluşturma hakkında daha fazla bilgi için bkz.
Uygulamayı Azure dağıtma
Bu adımda, .NET Core uygulamanızı yerel Git kullanarak Azure App Service dağıtacaksınız. Uygulama oluşturma ve dağıtma hakkında daha fazla bilgi için bkz. Azure'da ASP.NET Core web uygulaması oluşturma.
Yerel Git dağıtımını yapılandırma
Web sunucusunu kapatmak için terminal penceresinde Ctrl+C tuşlarına basın. .NET Core projesi için bir Git deposu başlatın:
git init --initial-branch=main
git add .
git commit -m "first commit"
deployment kullanıcısı kullanarak bir Azure web uygulaması dağıtmak için FTP ve yerel Git kullanabilirsiniz. Dağıtım kullanıcınızı yapılandırdıktan sonra, bunu tüm Azure dağıtımlarınız için kullanabilirsiniz. Hesap düzeyinde dağıtım kullanıcı adınız ve parolanız Azure abonelik kimlik bilgilerinizden farklıdır.
Dağıtım kullanıcısını yapılandırmak için az webapp deployment user set komutunu çalıştırın. Bu yönergelere uygun bir kullanıcı adı ve parola seçin:
- Kullanıcı adı Azure içinde benzersiz olmalıdır. Yerel Git gönderimleri için at işareti simgesini (@) içeremez.
- Parola en az sekiz karakter uzunluğunda olmalı ve şu üç öğeden ikisini içermelidir: harfler, sayılar ve simgeler.
az webapp deployment user set --user-name "<username>" --password "<password>"
JSON çıktısı parolayı şu şekilde nullgösterir: . Hata 'Conflict'. Details: 409 alırsanız kullanıcı adını değiştirin. Bir 'Bad Request'. Details: 400 hatası alırsanız, daha güçlü bir şifre kullanın.
Web uygulamalarınızı dağıtmak için kullanabilmeniz için kullanıcı adınızı ve parolanızı kaydedin.
Bir kaynak grubu oluşturun
Kaynak grubu, Azure kaynakları dağıtıp yönettiğiniz mantıksal bir kapsayıcıdır. az group create komutunu kullanarak hem anahtar kasanızı hem de web uygulamanızı içerecek bir kaynak grubu oluşturun :
az group create --name "<resource-group>" -l "EastUS"
App Service planı oluştur
Azure CLI az appservice plan create komutunu kullanarak App Service planı oluşturun. Aşağıdaki örnek, fiyatlandırma katmanında myAppServicePlan adlı FREE bir App Service planı oluşturur:
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
App Service planı oluşturulduğunda, Azure CLI burada gördüklerinize benzer bilgiler görüntüler:
{
"adminSiteName": null,
"appServicePlanName": "myAppServicePlan",
"geoRegion": "West Europe",
"hostingEnvironmentProfile": null,
"id": "/subscriptions/0000-0000/resourceGroups/<resource-group>/providers/Microsoft.Web/serverfarms/myAppServicePlan",
"kind": "app",
"location": "West Europe",
"maximumNumberOfWorkers": 1,
"name": "myAppServicePlan",
< JSON data removed for brevity. >
"targetWorkerSizeId": 0,
"type": "Microsoft.Web/serverfarms",
"workerTierName": null
}
Daha fazla bilgi için bkz Azure'da bir App Service planını yönetme.
Web uygulaması oluştur
App Service planında myAppServicePlan oluşturun.
Önemli
Anahtar kasası gibi Azure web uygulamasının da benzersiz bir adı olmalıdır. Örneklerde <webapp-name> ile web uygulamanızın adını değiştirin.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>" --deployment-local-git
Web uygulaması oluşturulduğunda, Azure CLI burada gördüğünüze benzer bir çıktı gösterir:
Local git is configured with url of 'https://<username>@<your-webapp-name>.scm.azurewebsites.net/<ayour-webapp-name>.git'
{
"availabilityState": "Normal",
"clientAffinityEnabled": true,
"clientCertEnabled": false,
"clientCertExclusionPaths": null,
"cloningInfo": null,
"containerSize": 0,
"dailyMemoryTimeQuota": 0,
"defaultHostName": "<your-webapp-name>.azurewebsites.net",
"deploymentLocalGitUrl": "https://<username>@<your-webapp-name>.scm.azurewebsites.net/<your-webapp-name>.git",
"enabled": true,
< JSON data removed for brevity. >
}
Git uzak depo URL'si, deploymentLocalGitUrl özelliğinde https://<username>@<webapp-name>.scm.azurewebsites.net/<webapp-name>.git biçiminde gösterilir. Bu URL'yi kaydedin. Buna daha sonra ihtiyacınız olacak.
Web uygulamanızı, main şubesinden dağıtımı yapılacak şekilde yapılandırın.
az webapp config appsettings set -g MyResourceGroup --name "<webapp-name>" --settings deployment_branch=main
Aşağıdaki komutu kullanarak yeni uygulamanıza gidin.
<webapp-name> etiketini uygulama adınızla değiştirin.
https://<webapp-name>.azurewebsites.net
Yeni bir Azure web uygulaması için varsayılan web sayfasını görürsünüz.
Yerel uygulamanızı dağıtın
Yerel terminal penceresine geri dönüp yerel Git deponuza bir Azure uzak konumu ekleyin. Aşağıdaki komutta, <deployment-url> yerini Bir web uygulaması oluştur bölümünde kaydettiğiniz Git uzak deposunun URL'si ile değiştirin.
git remote add azure <deployment-url>
Uygulamanızı dağıtmak için Azure uzak sunucusuna göndermek üzere aşağıdaki komutu kullanın. Git Kimlik Bilgileri Yöneticisi sizden kimlik bilgilerini istendiğinde, Yerel Git dağıtımını yapılandırma bölümünde oluşturduğunuz kimlik bilgilerini kullanın.
git push azure main
Bu komutun çalıştırılması birkaç dakika sürebilir. Çalışırken, burada gördüğünüze benzer bilgiler görüntüler:
Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 285 bytes | 95.00 KiB/s, done. Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 remote: Deploy Async remote: Updating branch 'main'. remote: Updating submodules. remote: Preparing deployment for commit id 'd6b54472f7'. remote: Repository path is /home/site/repository remote: Running oryx build... remote: Build orchestrated by Microsoft Oryx, https://github.com/Microsoft/Oryx remote: You can report issues at https://github.com/Microsoft/Oryx/issues remote: remote: Oryx Version : 0.2.20200114.13, Commit: 204922f30f8e8d41f5241b8c218425ef89106d1d, ReleaseTagName: 20200114.13 remote: Build Operation ID: |imoMY2y77/s=.40ca2a87_ remote: Repository Commit : d6b54472f7e8e9fd885ffafaa64522e74cf370e1 . . . remote: Deployment successful. remote: Deployment Logs : 'https://<your-webapp-name>.scm.azurewebsites.net/newui/jsonviewer?view_url=/api/deployments/d6b54472f7e8e9fd885ffafaa64522e74cf370e1/log' To https://<your-webapp-name>.scm.azurewebsites.net:443/<your-webapp-name>.git d87e6ca..d6b5447 main -> main
Web tarayıcınızı kullanarak dağıtılan uygulamaya gidin (veya yenileyin):
http://<webapp-name>.azurewebsites.net
daha önce http://localhost:5000 ziyaret ettiğinizde gördüğünüz "Merhaba Dünya!" iletisini görürsünüz.
Git kullanarak web uygulaması dağıtma hakkında daha fazla bilgi için bkz. Local Git deployment to Azure App Service
Web uygulamasını Key Vault bağlanacak şekilde yapılandırma
Bu bölümde, Key Vault web erişimini yapılandıracak ve uygulama kodunuzu Key Vault'tan bir gizli anahtar alacak şekilde güncelleyeceksiniz.
Yönetilen kimlik oluşturma ve bu kimliğe erişim atama
Bu öğreticide, Key Vault kimlik doğrulaması yapmak için managed identity kullanacağız. Yönetilen kimlik, uygulama kimlik bilgilerini otomatik olarak yönetir.
Azure CLI, uygulamanın kimliğini oluşturmak için az webapp-identity assign komutunu çalıştırın:
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
Komut şu JSON parçacığını döndürür:
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
Role-Based Access Control (RBAC) aracılığıyla anahtar kasanıza izinler almak için Azure CLI komutunu az role assignment create kullanarak "Kullanıcı Asıl Adı"na (UPN) bir rol atayın.
az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
, <upn>ve <subscription-id> değerlerini gerçek değerlerinizle değiştirin<vault-name>. Eğer farklı bir kaynak grubu adı kullandıysanız, "myResourceGroup" yerine bunu koyun. UPN'niz genellikle bir e-posta adresi biçiminde olur (ör. username@domain.com).
Uygulamayı anahtar kasanıza erişecek şekilde değiştirin.
Bu öğreticide, tanıtım amacıyla Azure Key Vault gizli istemci kitaplığı kullanacaksınız. ayrıca Azure Key Vault sertifika istemci kitaplığı veya Azure Key Vault anahtar istemci kitaplığı kullanabilirsiniz.
Paketleri yükleme
Terminal penceresinden .NET ve Azure Identity istemci kitaplığı paketleri için Azure Key Vault gizli istemci kitaplığını yükleyin:
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
Kodu güncelleştirme
akvwebapp projenizde .NET 5.0 veya öncesi için Startup.cs dosyasını veya .NET 6.0 için Program.cs dosyasını bulun ve açın.
Üst bilgisine şu satırları ekleyin:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Aşağıdaki satırları, anahtar kasanızın vaultUri'sini yansıtacak şekilde URI'yi güncelleyerek app.UseEndpoints çağrısından (.NET 5.0 veya daha önceki) veya app.MapGet çağrısından (.NET 6.0) önce ekleyin. Bu kod, yönetilen kimlikten bir belirteç kullanarak kimlik doğrulayan Key Vault'a kimlik doğrulaması yapmak için DefaultAzureCredential() kullanır. Key Vault kimlik doğrulaması hakkında daha fazla bilgi için bkz. Geldirici Kılavuzu. Kod, Key Vault'un kısıtlanması durumunda yeniden denemeler için üstel geri çekilme de kullanır. Key Vault işlem sınırları hakkında daha fazla bilgi için bkz. Azure Key Vault kısıtlama kılavuzu.
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
var client = new SecretClient(new Uri("https://<vault-name>.vault.azure.net/"), new DefaultAzureCredential(),options);
KeyVaultSecret secret = client.GetSecret("<secret-name>");
string secretValue = secret.Value;
.NET 5.0 veya öncesi
await context.Response.WriteAsync("Merhaba Dünya!"); satırını şu satır gibi görünecek şekilde güncelleştirin:
await context.Response.WriteAsync(secretValue);
.NET 6.0
app.MapGet("/", () => "Merhaba Dünya!"); satırını şu satır gibi görünecek şekilde güncelleştirin:
app.MapGet("/", () => secretValue);
Sonraki adıma geçmeden önce değişikliklerinizi kaydettiğinizden emin olun.
Web uygulamanızı yeniden dağıtma
Kodunuzu güncelleştirdiğinize göre, şu Git komutlarını kullanarak kodu Azure yeniden dağıtabilirsiniz:
git add .
git commit -m "Updated web app to access my key vault"
git push azure main
Tamamlanmış web uygulamanıza gidin
http://<webapp-name>.azurewebsites.net
Daha önce "Merhaba Dünya!" ifadesini gördüğünüz yerde, şimdi gizlinizin değerini görmelisiniz.