Подписывание пакетов с помощью 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.
- На странице свойств Key Vault выберите Сертификаты.
- Щелкните Generate/Import (Создать или импортировать).
- На экране "Создание сертификата" выберите следующие значения:
- Метод создания сертификата: импорт
- Имя сертификата: UwpSigningCert
- Отправка файла сертификата: UwpSigningCert.pfx
- Расшифровка сертификата: если сертификат защищен паролем, укажите его в поле "Пароль ".
- Нажмите кнопку Создать.
Примечание.
Чтобы этот самозаверяющий сертификат стал доверенным для Windows, импортировать и сделать его доверенным следует администратору. Обеспечьте безопасность всех сертификатов, включая самозаверяющие.
Настройка политик доступа для Key Vault
Вы можете управлять доступом к содержимому Key Vault с помощью политик доступа. Политики доступа Key Vault предоставляют разрешения отдельно для ключей, секретов и сертификатов. Можно предоставить пользователю доступ только к ключам, но не к секретам. Разрешения к ключам, секретам и сертификатам управляются на уровне хранилища. Дополнительные сведения см. в статье Безопасность Azure Key Vault.
Примечание.
При создании Key Vault в подписке Azure решение автоматически связывается с клиентом Azure Active Directory этой подписки. Любому пользователю, пытающемуся управлять содержимым в Key Vault или извлекать его из Key Vault, следует пройти аутентификацию в Azure AD.
- На страницах свойств Key Vault выберите Политики доступа.
- Щелкните элемент + Добавить политику доступа.
- Разверните раскрывающийся список Разрешения сертификатов и в разделе Операции управления сертификатами установите флажки Получить и Список.
- Разверните раскрывающийся список Разрешения секретов и в разделе Операции управления секретами установите флажки Получить и Список.
- Щелкните Выбор субъекта. Найдите пользователя, которому предоставляется доступ, и нажмите кнопку Выбрать.
- Нажмите кнопку Добавить.
- Обязательно нажмите кнопку Сохранить, чтобы сохранить изменения.
Примечание.
Не рекомендуется предоставлять пользователям непосредственный доступ к хранилищу ключей. В идеале пользователей следует добавить в группу Azure AD, которая, в свою очередь, получит доступ к хранилищу ключей.
Выбор сертификата из Key Vault в Visual Studio
Доступный в Visual Studio мастер Создание пакетов приложения позволяет выбрать сертификат, который будет использоваться для подписывания пакета приложения. Сертификат для подписывания пакета можно выбрать с помощью Azure Key Vault. Необходимо указать универсальный код ресурса (URI) для Key Vault, где содержится сертификат. Кроме того, учетная запись Майкрософт, прошедшая проверку подлинности в Visual Studio, должна предоставлять соответствующие разрешения на доступ к хранилищу ключей.
- В Visual Studio откройте проект приложения UWP или проект упаковки приложений Windows для классического приложения.
- Выберите Опубликовать ->Пакет ->Создать пакеты приложения, чтобы открыть мастер Создание пакетов приложения.
- На странице Выбрать метод распределения выберите элемент Загрузка неопубликованного приложения.
- На странице Выбор метода подписывания щелкните элемент Select from Azure Key Vault… (Выбрать из Azure Key Vault…).
- Когда откроется диалоговое окно Select a certificate from Azure Key Vault (Выбор сертификат из Azure Key Vault), используйте средство выбора учетной записи, чтобы выбрать ту, для которой настроена политика доступа.
- Введите универсальный код ресурса (URI) для Key Vault. Его можно найти на странице Обзор для Key Vault в графе DNS-имя.
- Нажмите кнопку Просмотр метаданных.
- После загрузки сертификатов выберите нужный из списка (например, UwpSigningCert).
- Щелкните OK.
Расшифровка сертификата с помощью пароля из Azure Key Vault
Если для подписывания пакета приложения используется локальный сертификат, защищенный паролем (PFX), управление паролем для расшифровки такого сертификата может оказаться сложной задачей. При импорте сертификата в мастере Создание пакетов приложения вам будет предложено ввести пароль вручную. Кроме того, пароль можно выбрать из Azure Key Vault.
- В Visual Studio откройте проект приложения UWP или проект упаковки приложений Windows для классического приложения.
- Выберите Опубликовать ->Пакет ->Создать пакеты приложения, чтобы открыть мастер Создание пакетов приложения.
- На странице Выбрать метод распределения выберите элемент Загрузка неопубликованного приложения.
- На странице Выбор метода подписывания щелкните команду Выбрать из файла…
- Когда откроется диалоговое окно Certificate is password protected (Сертификат защищен паролем), щелкните элемент Select Password From Key Vault (Выбрать пароль из Key Vault).
- Когда откроется диалоговое окно Select a password from Azure Key Vault (Выбор пароля из Azure Key Vault), используйте средство выбора учетной записи, чтобы выбрать ту, для которой настроена политика доступа.
- Введите универсальный код ресурса (URI) для Key Vault. Его можно найти на странице Обзор для Key Vault в графе DNS-имя.
- Нажмите кнопку Просмотр метаданных.
- После загрузки паролей выберите нужный из списка (например, UwpSigningCertPassword).
- Щелкните OK.
Включение входа в сценарии CI/CD
Чтобы включить вход в сценарии CI/CD, необходимо настроить конвейер для использования DefaultAzureCredential для проверки подлинности в Azure Key Vault. DefaultAzureCredential попытается использовать удостоверение агента конвейера для доступа к Key Vault, если у него есть соответствующие разрешения. Кроме того, можно указать субъект-службу или управляемое удостоверение, используемое для проверки подлинности.