Azure App Service dağıtımlarının kimliğini doğrulama
Bu modüldeki alıştırmaları tamamlayabilmeniz için korumalı alan ortamında oturum açtınız. Bu ortam etkileşimli olduğundan tüm dağıtımlarınızın kimliği, korumalı alanı başlattığınızda kullandığınız kimlik bilgileri kullanılarak doğrulanmıştır. Ancak derleme işleminizi otomatikleştirirseniz dağıtımlarınız bu etkileşimli ortamı kullanmaz. Otomasyon senaryolarında projenizi desteklenen kimlik doğrulama yöntemlerinden birini kullanacak şekilde yapılandırmanız gerekir.
Bu ünitede şirketinizin Maven'ı Azure kimlik doğrulamasını kullanacak şekilde nasıl yapılandırabileceğini öğreneceksiniz.
Web uygulamanızın kimliğini doğrulama
Azure, uygulamanızın kimliğini doğrulama konusunda farklı seçenekler sunar. Tercih edeceğiniz seçenek, şirketinizin derleme ortamına göre değişir. Maven ile uygulama kodunuzun kimliğini doğrulamaya ilişkin üç seçenek, karmaşıklık açısından (en azından en fazla) burada listelenmiştir:
Azure CLI kullanarak kimlik doğrulaması yapın veya Azure portalında Cloud Shell'i kullanın.
Azure hizmet sorumlusu oluşturun, hizmet sorumlusu kimlik bilgilerinizle bir JSON dosyası oluşturun ve projenizin
pom.xml
dosyasını değiştirin.Bir Azure hizmet sorumlusu oluşturun, hizmet sorumlusu kimlik bilgilerinizi bir Maven
settings.xml
dosyasına ekleyin ve projenizinpom.xml
dosyasını Maven ayarlarını kullanacak şekilde değiştirin.
Microsoft, kimlik doğrulaması konusunda en güvenilir, esnek ve tutarlı yaklaşım olan üçüncü seçeneği önerir. Gerçek dünya ayarında, şirketinizin mevcut Java web uygulamaları Azure CLI araçlarının yüklü olmadığı yerel sunucularda çalışıyor olabilir. Bunu göz önünde bulundurarak, büyük olasılıkla hizmet sorumlusu ve Maven settings.xml
dosyası kullanarak kimlik doğrulaması ekleme önerisini uygularsınız. Ancak bu alıştırmada korumalı alanın hizmet sorumluları oluşturmak için yeterli ayrıcalığı yoktur.
Azure CLI ile kimlik doğrulama
Maven için en kolay kimlik doğrulama yöntemi, Azure CLI ile oturum açmaktır. Bunu yaptığınızda Azure App Service için Maven eklentisi, uygulamayı kimlik bilgilerinizi kullanarak dağıtabilir ve başka bir yapılandırmaya ihtiyaç duyulmaz.
Bu modülde Microsoft Learn Korumalı Alanı ile alıştırmaları tamamladığınız gibi Azure Cloud Shell kullanıyorsanız, varsayılan olarak Azure'da oturum açmış olursunuz; daha fazla komut çalıştırmanız gerekmez. Ancak Azure CLI'yi farklı bir bilgisayardan kullanıyorsanız az login
komutunu kullanarak oturum açmanız gerekir.
Hizmet sorumlusuyla kimlik doğrulaması
Web uygulamanızın kimliğini doğrulamak için ikinci yöntem, azure hizmet sorumlusu oluşturma ve hizmet sorumlusu kimlik bilgilerinizi proje ayarlarınızdan başvurabileceğiniz bir dosyaya kaydetmeyi içerir.
Azure CLI ile bir Azure hizmet sorumlusu oluşturmak için aşağıdaki adımları kullanın.
Azure hizmet sorumlusu oluşturmak için aşağıdaki komutu Azure CLI içinden çalıştırın:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Burada
https://mywebapp-1234567890.azurewebsites.net/
, web uygulamanızın URL'sidir.Bu komut, aşağıdaki örneğe benzer bir JSON nesnesine sahip bir yanıt döndürür:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Web uygulamanızın
pom.xml
dosyasını JSON çıkışındaki bilgileri kullanacak şekilde değiştirin.Dosyanızı
pom.xml
kod düzenleyicisiyle açın:cd ~/MyWebApp code pom.xml
azure-webapp-maven-plugin
için<configuration>
bölümünü bulun.öğesini içeren satırın arkasına aşağıdaki XML'yi
<region>
ekleyin ve JSON çıkışındaki bilgileri kullanın:<auth> <type>service_principal</type> <client>value-of-appId</client> <tenant>value-of-tenant</tenant> <key>value-of-password</key> <environment>azure</environment> </auth>
Dosyanızın
azure-webapp-maven-plugin
bölümü aşağıdaki örnek gibi olmalıdır:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>v2</schemaVersion> <resourceGroup>MyWebApp-1714654093047-rg</resourceGroup> <appName>MyWebApp-1714654093047</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>abcdefghijklmnopqrstuvwxyz1234567890</key> <environment>azure</environment> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Yaptığınız değişiklikleri Ctrl+S ile kaydedin.
Ctrl+Q ile kod düzenleyicisini kapatın.
Web uygulamanızı derlemek ve Azure Uygulaması Hizmeti'ne dağıtmak için Maven kullanın:
mvn azure-webapp:deploy
Maven bir dizi derleme iletisi görüntüler ve son ileti Azure'a başarılı dağıtımı göstermelidir:
[INFO] Scanning for projects... [INFO] [INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: 74d82376-184f-400e-a08e-27cd522d7559 [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 47.052 s [INFO] Finished at: 2024-05-02T13:10:54Z [INFO] ------------------------------------------------------------------------
Auth type: SERVICE_PRINCIPAL
Yanıttaki satır, web uygulamanızı Azure'da yayımlamak için hizmet sorumlusunun kullanıldığını gösterir.
Maven settings.xml
dosyasıyla kimlik doğrulama
Web uygulamanızın kimliğini doğrulamak için kullanılan üçüncü yöntem azure hizmet sorumlusu oluşturmayı, hizmet sorumlusu kimlik bilgilerinizi içeren bir Maven settings.xml
dosyası oluşturmayı ve projenizin pom.xml
dosyasını Maven ayarlarını kullanacak şekilde değiştirmeyi içerir.
Azure CLI ile Azure hizmet sorumlusu oluşturma adımları, bu ünitenin bir önceki bölümünde yer alan adımlarla aynıdır.
Azure hizmet sorumlusu oluşturmak için aşağıdaki komutu Azure CLI içinden çalıştırın:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Burada
https://mywebapp-1234567890.azurewebsites.net/
, web uygulamanızın URL'sidir.Bu komut, aşağıdaki örneğe benzer bir JSON nesnesine sahip bir yanıt döndürür:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Maven için
settings.xml
dosyasının kullanıcı sürümünü oluşturun.Kod düzenleyicisiyle Maven ayarlarınız için yeni bir XML dosyası oluşturun:
code ~/.m2/settings.xml
Aşağıdaki XML kodunu dosyaya yapıştırın:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>azure-auth</id> <configuration> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>pppppppp-pppp-pppp-pppp-pppppppppppp</key> </configuration> </server> </servers> </settings>
Where:
Parametre Açıklama client
Hizmet sorumlusunun appId
değerini belirtirkey
Hizmet sorumlusunun password
değerini belirtirtenant
Hizmet sorumlusunun tenant
değerini belirtirYaptığınız değişiklikleri Ctrl+S ile kaydedin.
Ctrl+Q ile kod düzenleyicisini kapatın.
Kimlik doğrulama dosyasına başvurmak için web uygulamanızın
pom.xml
dosyasını değiştirin.Dosyanızı
pom.xml
kod düzenleyicisiyle açın:cd ~/MyWebApp code pom.xml
azure-webapp-maven-plugin
için<configuration>
bölümünü bulun.<region>
öğesini içeren satırın altında aşağıdaki XML bölümünü ekleyin:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>
Dosyanızın
azure-webapp-maven-plugin
bölümü aşağıdaki örnek gibi olmalıdır:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>maven-publish</resourceGroup> <appName>MyWebApp-1234567890</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Yaptığınız değişiklikleri Ctrl+S ile kaydedin.
Ctrl+Q ile kod düzenleyicisini kapatın.
Web uygulamanızı derlemek ve Azure Uygulaması Hizmeti'ne dağıtmak için Maven kullanın:
mvn azure-webapp:deploy
Maven bir dizi derleme iletisi görüntüler ve son ileti Azure'a başarılı dağıtımı göstermelidir:
[INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 53.611 s [INFO] Finished at: 2024-05-02T13:53:31Z [INFO] ------------------------------------------------------------------------
Auth type: SERVICE_PRINCIPAL
Yanıttaki satır, hizmet sorumlusu kimlik bilgilerinizin web uygulamanızı Azure'da yayımlamak için kullanıldığını gösterir.