Проверка подлинности развертываний в Службе приложений Azure

Завершено

Для выполнения упражнений в этом модуле вы вошли в среду песочницы. Так как эта среда является интерактивной, все развертывания прошли проверку подлинности с помощью учетных данных, используемых при инициализации песочницы. Тем не менее, если вы автоматизируете процесс сборки, ваши развертывания не будут использовать эту интерактивную среду. В сценарии автоматизации необходимо настроить проект для использования одного из поддерживаемых методов проверки подлинности.

В этом уроке вы узнаете, как ваша компания может настроить Maven для использования проверки подлинности Azure.

Проверка подлинности веб-приложения

Azure предоставляет гибкость, чтобы решить, как вы хотите пройти проверку подлинности приложения. Выбранный вариант зависит от среды сборки вашей компании. Ниже перечислены три варианта проверки подлинности кода приложения с помощью Maven в порядке сложности (от наименьшего до большинства):

  • Проверка подлинности с помощью Azure CLI или использование Cloud Shell на портале Azure.

  • Создайте субъект-службу Azure, создайте JSON-файл с учетными данными субъекта-службы и измените файл pom.xml проекта.

  • Создайте сервисный принципал Azure, добавьте учетные данные сервисного принципала в файл Maven settings.xml и измените файл pom.xml вашего проекта, чтобы использовать настройки Maven.

Корпорация Майкрософт рекомендует третий вариант, так как он предоставляет наиболее надежный, гибкий и согласованный подход к проверке подлинности. В реальном мире существующие веб-приложения Java вашей компании могут работать на локальных серверах, на которых не установлены средства Azure CLI. Учитывая это, вы, вероятно, реализуете рекомендацию по добавлению проверки подлинности с помощью учетной записи службы и файла Maven settings.xml. Однако для этого упражнения песочница не имеет достаточных привилегий для создания учетных записей служб.

Проверка подлинности с помощью Azure CLI

Самый простой способ проверки подлинности Maven — войти с помощью Azure CLI. Плагин Maven для службы приложений Azure может развернуть приложение, используя ваши учетные данные, и при этом не потребуется дополнительная настройка.

Если вы используете Azure Cloud Shell, так как вы выполнили упражнения с песочницей Microsoft Learn в этом модуле, вы вошли в Azure по умолчанию; Вам больше не нужно выполнять команды. Однако если вы используете Azure CLI с отдельного компьютера, вам потребуется выполнить вход с помощью команды az login.

Аутентификация с помощью служебной учетной записи

Второй метод проверки подлинности веб-приложения включает создание субъекта-службы Azure и сохранение учетных данных субъекта-службы в файл, на который вы будете ссылаться из параметров проекта.

Чтобы создать учетную запись службы Azure с помощью Azure CLI, выполните следующие действия.

  1. Выполните следующую команду в интерфейсе командной строки Azure, чтобы создать учетную запись службы Azure.

    az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
    

    Где https://mywebapp-1234567890.azurewebsites.net/ — это URL-адрес веб-приложения.

    Эта команда возвращает ответ с объектом JSON, похожим на следующий пример:

    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. Измените файл pom.xml веб-приложения, чтобы использовать сведения в выходных данных JSON.

    1. Откройте файл pom.xml с помощью редактора кода:

      cd ~/MyWebApp
      code pom.xml
      
    2. Найдите раздел <configuration> для azure-webapp-maven-plugin.

    3. Добавьте следующий XML-код после строки, содержащей элемент <region>, и используйте сведения в выходных данных JSON:

      <auth>
          <type>service_principal</type>
          <client>value-of-appId</client>
          <tenant>value-of-tenant</tenant>
          <key>value-of-password</key>
          <environment>azure</environment>
      </auth>
      

      Теперь раздел azure-webapp-maven-plugin должен выглядеть следующим образом:

      <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. Сохраните изменения, введя CTRL+S.

    5. Закройте редактор кода, введя CTRL+Q.

  3. Используйте Maven для создания и развертывания веб-приложения в Службе приложений Azure:

    mvn azure-webapp:deploy
    

    Maven отображает ряд сообщений сборки, и окончательное сообщение должно указывать на успешное развертывание в Azure:

    [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 в ответе указывает, что учетная запись службы использовалась для публикации вашего веб-приложения в Azure.

Проверка подлинности с помощью файла Maven settings.xml

Третий метод проверки подлинности веб-приложения включает создание субъекта-службы Azure, создание файла Maven settings.xml, содержащего учетные данные субъекта-службы, и изменение файла pom.xml проекта для использования параметров Maven.

Шаги по созданию служебного принципала Azure с помощью Azure CLI такие же, как и в предыдущем разделе этого урока.

  1. Выполните следующую команду в Azure CLI, чтобы создать служебный принципал Azure.

    az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
    

    Где https://mywebapp-1234567890.azurewebsites.net/ — это URL-адрес веб-приложения.

    Эта команда возвращает ответ с объектом JSON, похожим на следующий пример:

    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. Создайте пользовательную версию файла settings.xml для использования Maven.

    1. Создайте XML-файл для параметров Maven с помощью редактора кода:

      code ~/.m2/settings.xml
      
    2. Вставьте следующий XML-код в файл:

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

      Где:

      Параметр Описание
      client Указывает значение appId субъекта-службы
      key Указывает значение password субъекта-службы
      tenant Указывает значение tenant субъекта-службы
    3. Сохраните изменения, введя CTRL+S.

    4. Закройте редактор кода, введя CTRL+Q.

  3. Измените файл pom.xml веб-приложения, чтобы ссылаться на файл проверки подлинности.

    1. Откройте файл pom.xml с помощью редактора кода:

      cd ~/MyWebApp
      code pom.xml
      
    2. Найдите раздел <configuration> для azure-webapp-maven-plugin.

    3. Добавьте следующий XML-код после строки, содержащей элемент <region>:

      <auth>
        <type>service_principal</type>
        <serverId>azure-auth</serverId>
      </auth>
      

      Теперь раздел azure-webapp-maven-plugin должен выглядеть следующим образом:

      <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. Сохраните изменения, введя CTRL+S.

    5. Закройте редактор кода, введя CTRL+Q.

  4. Используйте Maven для создания и развертывания веб-приложения в Службе приложений Azure:

    mvn azure-webapp:deploy
    

    Maven отображает ряд сообщений сборки, и окончательное сообщение должно указывать на успешное развертывание в Azure:

    [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 в ответе указывает, что учетные данные служебного принципала использовались для публикации этого веб-приложения в Azure.