Поделиться через


Руководство: Использование ссылок Key Vault в приложении Java Spring

В этом учебнике вы узнаете, как использовать службу "Конфигурация приложений Azure" с Azure Key Vault. Конфигурация приложений Azure и Key Vault — это дополняющие службы, которые используются параллельно в большинстве развертываний приложений.

Служба конфигурации приложений помогает использовать их вместе, создавая ключи, ссылающиеся на значения, хранящиеся в Key Vault. Когда служба "Конфигурация приложений Azure" создает такие ключи, она сохраняет URI значений Key Vault, а не сами значения.

С помощью поставщика клиента "Конфигурация приложений Azure" ваше приложение получает ссылки на Key Vault так же, как и любые другие ключи, хранящиеся в службе "Конфигурация приложений Azure". В этом случае значения, хранящиеся в Конфигурации приложений, являются URI, которые ссылаются на значения в Key Vault. Они не являются значениями Key Vault или учетными данными. Так как поставщик клиента распознает ключи как ссылки на Key Vault, для получения их значений он использует Key Vault.

Приложение отвечает за правильную проверку подлинности как в службе "Конфигурация приложений", так и в Key Vault. Две службы не обмениваются данными напрямую.

В этом учебнике показано, как можно реализовать ссылки на Key Vault в коде. Он основан на веб-приложении, представленном в кратком руководстве. Прежде чем продолжить, завершите Создание приложения Java Spring с помощью Конфигурации приложений.

Вы можете выполнять шаги в этом учебнике с помощью любого редактора кода. Например, Visual Studio Code — это кроссплатформенный редактор кода, доступный для операционных систем Windows, macOS и Linux.

В этом руководстве описано следующее:

  • Создайте ключ "App Configuration", который ссылается на значение, хранящееся в Key Vault.
  • доступ к значению этого ключа из веб-приложения Java Spring.

Предварительные условия

Создание хранилища ключей

  1. Войдите в портал Azure и нажмите кнопку "Создать ресурс".

  2. В поле поиска введите Key Vault. В списке результатов выберите Key Vault.

  3. На странице Key Vault нажмите кнопку "Создать".

  4. На странице "Создание хранилища ключей " введите следующие сведения:

    • Для подписки: выберите подписку.
    • Для группы ресурсов: введите имя существующей группы ресурсов или нажмите кнопку "Создать" и введите имя группы ресурсов.
    • В поле "Имя хранилища ключей" введите уникальное имя.
    • Для региона: выберите расположение.
  5. Для других параметров используйте значения по умолчанию.

  6. Выберите Review + create.

  7. После проверки системы и отображения входных данных нажмите кнопку "Создать".

На этом этапе доступ к этому новому хранилищу может получать только учетная запись Azure.

Добавление секрета в Key Vault

Добавьте секрет в хранилище, чтобы протестировать извлечение из Key Vault. Секрет называется Message, и его значением является "Hello from Key Vault".

  1. В меню ресурса Key Vault выберите Объекты>Секреты.

  2. Выберите Создать/импортировать.

  3. В диалоговом окне "Создание секрета" введите следующие значения:

    • Для параметров отправки: введите вручную.
    • Имя: введите сообщение.
    • Для значения секрета: введите Привет из Key Vault.
  4. Для других параметров используйте значения по умолчанию.

  5. Нажмите кнопку создания.

Добавьте ссылку на Key Vault в конфигурацию приложений Azure

  1. Войдите на портал Azure. Выберите все ресурсы и выберите хранилище конфигурации приложений.

  2. Выберите Обозреватель конфигураций.

  3. Выберите + Создать>Ссылку на хранилище ключей и укажите следующие значения:

    • Ключ: Введите /application/config.keyVaultMessage.
    • Метка: оставьте это значение пустым.
    • Подписка, группа ресурсов и хранилище ключей. Введите значения, соответствующие хранилищу ключей, созданному в предыдущем разделе.
    • Секрет. Выберите секрет с именем Message , созданное в предыдущем разделе.

Предоставление приложению доступа к Key Vault

Ваше приложение использует DefaultAzureCredential для аутентификации как в App Configuration, так и в Key Vault. Эти учетные данные автоматически работают с управляемыми удостоверениями в Azure и с учетными данными разработчика локально.

  1. Предоставьте удостоверению доступ к Key Vault. Назначьте роль пользователя секретов Key Vault учетной записи пользователя или управляемому удостоверению:

    az role assignment create --role "Key Vault Secrets User" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name> --assignee <your-azure-ad-user-or-managed-identity>
    
  2. Предоставьте удостоверению доступ к конфигурации приложений. Назначьте роль читателя данных конфигурации приложений :

    az role assignment create --role "App Configuration Data Reader" --scope /subscriptions/<subscriptionId>/resourceGroups/<group-name>/providers/Microsoft.AppConfiguration/configurationStores/<your-app-configuration-store> --assignee <your-azure-ad-user-or-managed-identity>
    

Обновите код, чтобы использовать ссылку на Key Vault

  1. Создайте переменную среды с именем APP_CONFIGURATION_ENDPOINT. Установите её значение на конечную точку вашего хранилища конфигурации приложений. Конечную точку можно найти в колонке Ключи доступа на портале Azure. Перезапустите командную строку, чтобы изменение вступило в силу.

  2. Откройте файл конфигурации в папке ресурсов . Обновите этот файл, чтобы использовать значение APP_CONFIGURATION_ENDPOINT. Удалите все ссылки на строку подключения в этом файле.

spring:
    config:
        import: azureAppConfiguration
    cloud:
        azure:
            appconfiguration:
                stores:
                    - endpoint: ${APP_CONFIGURATION_ENDPOINT}

Примечание.

Вы также можете использовать глобальные конфигурации Azure Spring Cloud для подключения к Key Vault.

  1. Откройте MyProperties.java. Добавьте новую переменную с именем keyVaultMessage:

    private String keyVaultMessage;
    
    public String getKeyVaultMessage() {
        return keyVaultMessage;
    }
    
    public void setKeyVaultMessage(String keyVaultMessage) {
        this.keyVaultMessage = keyVaultMessage;
    }
    
  2. Откройте HelloController.java. Обновите метод getMessage, чтобы включить сообщение, полученное от Key Vault.

    @GetMapping
    public String getMessage() {
        return "Message: " + properties.getMessage() + "\nKey Vault message: " + properties.getKeyVaultMessage();
    }
    
  3. Создайте приложение Spring Boot с помощью Maven и запустите его, например, следующим образом:

    mvn clean package
    mvn spring-boot:run
    
  4. После запуска приложение можно протестировать с помощью средства curl, например:

    curl -X GET http://localhost:8080/
    

    Вы увидите сообщение, которое указали в хранилище конфигураций приложений. Вы также увидите сообщение, которое ввели в Key Vault.

Очистка ресурсов

Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.

Внимание

Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все содержащиеся в ней ресурсы удаляются без возможности восстановления. Будьте внимательны, чтобы случайно не удалить не те ресурсы или группу ресурсов. Если ресурсы для работы с этой статьей созданы в группе ресурсов, которая содержит другие нужные ресурсы, удалите каждый ресурс отдельно в соответствующей области ресурса, чтобы не удалять группу ресурсов.

  1. Войдите на портал Azure и выберитеГруппы ресурсов.
  2. Введите имя группы ресурсов в поле Фильтровать по имени.
  3. В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
  4. Выберите команду Удалить группу ресурсов.
  5. Подтвердите операцию удаления группы ресурсов. Введите имя группы ресурсов, которую необходимо удалить, и нажмите Удалить.

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.

Следующие шаги

В этом руководстве вы создали ключ в App Configuration, который ссылается на значение, хранящееся в Key Vault. Если возникнут дополнительные вопросы, см. справочную документацию, в ней подробно описан принцип работы библиотеки Spring Cloud для Конфигурации приложений Azure. Чтобы узнать, как использовать флаги функций в приложении Java Spring, перейдите к следующему руководству.