Подписывание пакетов с помощью Azure Key Vault

В Visual Studio 2022 версии 17.8 ( предварительная версия 2) и более поздних версий вы можете подписать пакеты UWP и классических приложений с помощью сертификата из Azure Key Vault. Это средство отправляет дайджест пакета приложения (хэш) в Azure Key Vault для шифрования подписывания с выбранным сертификатом. Затем подписанный дайджест возвращается и присоединяется к пакету локально.

Важно!

Этот процесс является безопасным. Закрытый ключ сертификата никогда не покидает Azure Key Vault.

Необходимые компоненты

  • Учетная запись Azure. Если у вас еще нет учетной записи, зарегистрируйте ее здесь.
  • Azure Key Vault. Дополнительные сведения см. в разделе Создание хранилища.
  • Действительный сертификат для подписывания пакета, импортированный в Azure Key Vault. Сертификат, который создается в Azure Key Vault по умолчанию, не подходит для этого. Дополнительные сведения см. в статье Создание сертификата для подписывания пакета.

Импорт сертификата в Key Vault

Добавить сертификат в Key Vault очень просто. В этом примере мы добавим действительный сертификат для подписывания кода UWP с именем UwpSigningCert.pfx.

  1. На странице свойств Key Vault выберите Сертификаты.
  2. Щелкните Generate/Import (Создать или импортировать).
  3. На экране "Создание сертификата" выберите следующие значения:
    • Метод создания сертификата: импорт
    • Имя сертификата: UwpSigningCert
    • Отправка файла сертификата: UwpSigningCert.pfx
    • Расшифровка сертификата: если сертификат защищен паролем, укажите его в поле "Пароль ".
  4. Нажмите кнопку Создать.

Примечание.

Чтобы этот самозаверяющий сертификат стал доверенным для Windows, импортировать и сделать его доверенным следует администратору. Обеспечьте безопасность всех сертификатов, включая самозаверяющие.

Настройка политик доступа для Key Vault

Вы можете управлять доступом к содержимому Key Vault с помощью политик доступа. Политики доступа Key Vault предоставляют разрешения отдельно для ключей, секретов и сертификатов. Можно предоставить пользователю доступ только к ключам, но не к секретам. Разрешения к ключам, секретам и сертификатам управляются на уровне хранилища. Дополнительные сведения см. в статье Безопасность Azure Key Vault.

Примечание.

При создании Key Vault в подписке Azure решение автоматически связывается с клиентом Azure Active Directory этой подписки. Любому пользователю, пытающемуся управлять содержимым в Key Vault или извлекать его из Key Vault, следует пройти аутентификацию в Azure AD.

  1. На страницах свойств Key Vault выберите Политики доступа.
  2. Щелкните элемент + Добавить политику доступа.
  3. Разверните раскрывающийся список Разрешения сертификатов и в разделе Операции управления сертификатами установите флажки Получить и Список.
  4. Разверните раскрывающийся список Разрешения секретов и в разделе Операции управления секретами установите флажки Получить и Список.
  5. Щелкните Выбор субъекта. Найдите пользователя, которому предоставляется доступ, и нажмите кнопку Выбрать.
  6. Нажмите кнопку Добавить.
  7. Обязательно нажмите кнопку Сохранить, чтобы сохранить изменения.

Примечание.

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

Выбор сертификата из Key Vault в Visual Studio

Доступный в Visual Studio мастер Создание пакетов приложения позволяет выбрать сертификат, который будет использоваться для подписывания пакета приложения. Сертификат для подписывания пакета можно выбрать с помощью Azure Key Vault. Необходимо указать универсальный код ресурса (URI) для Key Vault, где содержится сертификат. Кроме того, учетная запись Майкрософт, прошедшая проверку подлинности в Visual Studio, должна предоставлять соответствующие разрешения на доступ к хранилищу ключей.

  1. В Visual Studio откройте проект приложения UWP или проект упаковки приложений Windows для классического приложения.
  2. Выберите Опубликовать ->Пакет ->Создать пакеты приложения, чтобы открыть мастер Создание пакетов приложения.
  3. На странице Выбрать метод распределения выберите элемент Загрузка неопубликованного приложения.
  4. На странице Выбор метода подписывания щелкните элемент Select from Azure Key Vault… (Выбрать из Azure Key Vault…).
  5. Когда откроется диалоговое окно Select a certificate from Azure Key Vault (Выбор сертификат из Azure Key Vault), используйте средство выбора учетной записи, чтобы выбрать ту, для которой настроена политика доступа.
  6. Введите универсальный код ресурса (URI) для Key Vault. Его можно найти на странице Обзор для Key Vault в графе DNS-имя.
  7. Нажмите кнопку Просмотр метаданных.
  8. После загрузки сертификатов выберите нужный из списка (например, UwpSigningCert).
  9. Щелкните OK.

Расшифровка сертификата с помощью пароля из Azure Key Vault

Если для подписывания пакета приложения используется локальный сертификат, защищенный паролем (PFX), управление паролем для расшифровки такого сертификата может оказаться сложной задачей. При импорте сертификата в мастере Создание пакетов приложения вам будет предложено ввести пароль вручную. Кроме того, пароль можно выбрать из Azure Key Vault.

  1. В Visual Studio откройте проект приложения UWP или проект упаковки приложений Windows для классического приложения.
  2. Выберите Опубликовать ->Пакет ->Создать пакеты приложения, чтобы открыть мастер Создание пакетов приложения.
  3. На странице Выбрать метод распределения выберите элемент Загрузка неопубликованного приложения.
  4. На странице Выбор метода подписывания щелкните команду Выбрать из файла…
  5. Когда откроется диалоговое окно Certificate is password protected (Сертификат защищен паролем), щелкните элемент Select Password From Key Vault (Выбрать пароль из Key Vault).
  6. Когда откроется диалоговое окно Select a password from Azure Key Vault (Выбор пароля из Azure Key Vault), используйте средство выбора учетной записи, чтобы выбрать ту, для которой настроена политика доступа.
  7. Введите универсальный код ресурса (URI) для Key Vault. Его можно найти на странице Обзор для Key Vault в графе DNS-имя.
  8. Нажмите кнопку Просмотр метаданных.
  9. После загрузки паролей выберите нужный из списка (например, UwpSigningCertPassword).
  10. Щелкните OK.

Включение входа в сценарии CI/CD

Чтобы включить вход в сценарии CI/CD, необходимо настроить конвейер для использования DefaultAzureCredential для проверки подлинности в Azure Key Vault. DefaultAzureCredential попытается использовать удостоверение агента конвейера для доступа к Key Vault, если у него есть соответствующие разрешения. Кроме того, можно указать субъект-службу или управляемое удостоверение, используемое для проверки подлинности.