Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При создании учетной записи службы вы выбираете тип аутентификации для входа, который она использует. Для субъектов-служб Azure доступно два типа проверки подлинности: проверка подлинности на основе паролей и проверка подлинности на основе сертификатов.
Мы рекомендуем использовать проверку подлинности на основе сертификатов из-за ограничений безопасности проверки подлинности на основе паролей. Проверка подлинности на основе сертификатов позволяет применять фишинговую проверку подлинности с помощью политик условного доступа, что лучше защищает ресурсы Azure. Дополнительные сведения о том, почему проверка подлинности на основе сертификатов более безопасна, см. в статье о проверке подлинности на основе сертификатов Microsoft Entra.
В этом руководстве объясняется, как использовать сертификат субъекта-службы для доступа к ресурсу Azure.
Создание субъекта-службы, содержащего новый сертификат
Чтобы создать самозаверяющий сертификат для проверки подлинности, используйте --create-cert
параметр:
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--create-cert
Выходные данные консоли:
{
"appId": "myServicePrincipalID",
"displayName": "myServicePrincipalName",
"fileWithCertAndPrivateKey": "certFilePath\certFileName.pem",
"password": null,
"tenant": "myOrganizationTenantID"
}
Если вы не храните сертификат в Key Vault, выходные данные будут включать ключ fileWithCertAndPrivateKey
. Значение этого ключа указывает, где хранится созданный сертификат. Скопируйте сертификат в безопасное расположение. Сертификат содержит закрытый ключ и открытый сертификат, который можно использовать в az login
. Если вы теряете доступ к закрытому ключу сертификата, сбросьте учетные данные учетной записи службы.
Содержимое PEM-файла можно просмотреть с помощью текстового редактора. Ниже приведен пример PEM-файла:
-----BEGIN PRIVATE KEY-----
MIIEvQ...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Создание субъекта-службы с помощью существующего сертификата
Создайте учетную запись службы с существующим сертификатом, используя параметр --cert
. Любая утилита, использующая этот служебный принципал, должна иметь доступ к закрытому ключу сертификата. Сертификаты должны быть в формате ASCII, например PEM, CER или DER. Передайте сертификат в виде строки или используйте @path
формат для загрузки сертификата из файла. При отправке сертификата требуется только общедоступный сертификат. Для оптимальной безопасности не включают закрытый ключ. Строки -----BEGIN CERTIFICATE-----
и -----END CERTIFICATE-----
являются необязательными.
# create a service principal with the certificate as a string
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert "MIICoT..."
# or provide -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- lines
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert "-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----"
# create a service principal with the certificate file location
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert @/path/to/cert.pem
Ниже приведен пример PEM-файла для отправки:
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----
Работа с Azure Key Vault
Этот --keyvault
параметр можно добавить для создания или извлечения сертификатов в Azure Key Vault. При использовании параметра --keyvault
параметр --cert
также необходим. В этом примере --cert
значение — это имя сертификата.
# Create a service principal storing the certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--create-cert \
--cert myCertificateName \
--keyvault myVaultName
# Create a service principal using an existing certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
--role roleName \
--scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
--cert myCertificateName \
--keyvault myVaultName
Получение сертификата из Azure Key Vault
Для сертификата, хранящегося в Azure Key Vault, извлеките сертификат и закрытый ключ командой az keyvault secret show и преобразуйте его в PEM-файл. В Azure Key Vault имя секрета сертификата совпадает с именем сертификата.
az keyvault secret download --file /path/to/cert.pfx \
--vault-name VaultName \
--name CertName \
--encoding base64
openssl pkcs12 -in cert.pfx -passin pass: -passout pass: -out cert.pem -nodes
Преобразование существующего файла PKCS12
Если у вас уже есть PKCS#12-файл, его можно преобразовать в формат PEM с помощью OpenSSL. Если у вас есть пароль, измените passin
аргумент.
openssl pkcs12 -in fileName.p12 -clcerts -nodes -out fileName.pem -passin pass: -passout pass:
Добавьте сертификат к учетной записи службы
Используйте параметр --append
в команде az ad sp credential reset, чтобы добавить сертификат к существующей учетной записи службы. По умолчанию эта команда очищает все пароли и ключи, поэтому используйте тщательно.
az ad sp credential reset --id myServicePrincipalID \
--append \
--cert @/path/to/cert.pem
Выходные данные консоли:
Certificate expires yyyy-mm-dd hh:mm:ss+00:00. Adjusting key credential end date to match.
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": "myServicePrincipalID",
"password": null,
"tenant": "myOrganizationTenantID"
}
Вход с использованием учётной записи службы и сертификата
Чтобы войти с помощью сертификата, сертификат должен быть доступен локально в виде PEM или DER-файла в формате ASCII. PKCS#12 файлы (.p12/.pfx) не работают. При использовании PEM-файла в файле необходимо добавить закрытый ключ и СЕРТИФИКАТ . Вам не нужно добавлять префикс к пути, как для других команд az.
az login --service-principal --username APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID
Дальнейшие шаги
Теперь, когда вы узнали, как работать с субъектами-службами с помощью сертификата, перейдите к следующему шагу, чтобы узнать, как получить существующий субъект-службу.