Azure App Service dağıtımlarının kimliğini doğrulama

Tamamlandı

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 projenizin pom.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.

  1. 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"
    }
    
  2. Web uygulamanızın pom.xml dosyasını JSON çıkışındaki bilgileri kullanacak şekilde değiştirin.

    1. Dosyanızı pom.xml kod düzenleyicisiyle açın:

      cd ~/MyWebApp
      code pom.xml
      
    2. azure-webapp-maven-plugin için <configuration> bölümünü bulun.

    3. öğ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>
      
      
    4. Yaptığınız değişiklikleri Ctrl+S ile kaydedin.

    5. Ctrl+Q ile kod düzenleyicisini kapatın.

  3. 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.

  1. 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"
    }
    
  2. Maven için settings.xml dosyasının kullanıcı sürümünü oluşturun.

    1. Kod düzenleyicisiyle Maven ayarlarınız için yeni bir XML dosyası oluşturun:

      code ~/.m2/settings.xml
      
    2. 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 belirtir
      key Hizmet sorumlusunun password değerini belirtir
      tenant Hizmet sorumlusunun tenant değerini belirtir
    3. Yaptığınız değişiklikleri Ctrl+S ile kaydedin.

    4. Ctrl+Q ile kod düzenleyicisini kapatın.

  3. Kimlik doğrulama dosyasına başvurmak için web uygulamanızın pom.xml dosyasını değiştirin.

    1. Dosyanızı pom.xml kod düzenleyicisiyle açın:

      cd ~/MyWebApp
      code pom.xml
      
    2. azure-webapp-maven-plugin için <configuration> bölümünü bulun.

    3. <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> 
      
    4. Yaptığınız değişiklikleri Ctrl+S ile kaydedin.

    5. Ctrl+Q ile kod düzenleyicisini kapatın.

  4. 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.

Bilginizi ölçün

1.

Azure Uygulaması Hizmeti için Maven Eklentisi kullanılarak dağıtımların kimliğini doğrulamak için aşağıdaki yöntemlerden hangisi desteklenmez?

2.

Doğru veya yanlış: Azure hizmet sorumlusu oluşturduğunuzda döndürülen JSON dosyasını bir dosyaya kaydedebilir ve bu dosyayı Azure Uygulaması Hizmeti için Maven Eklentisi ile kimlik doğrulaması için kullanabilirsiniz.

3.

Aşağıdaki yöntemlerden hangisi Azure App Service için Maven eklentisini kullandığınızda dağıtımların kimliğini doğrulamak için önerilir?