Управление сертификатами в службе автоматизации Azure

Служба автоматизации Azure безопасно хранит сертификаты для доступа к ресурсам Azure Resource Manager из runbook или конфигураций DSC с помощью командлета Get-AzureRmAutomationCertificate. Безопасное хранилище сертификатов позволяет создавать runbook и конфигурации DSC, которые используют эти сертификаты для аутентификации, или добавлять их в ресурсы Azure либо сторонних производителей.

Примечание.

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

Командлеты PowerShell для доступа к сертификатам

Представленные в следующей таблице командлеты используются для создания сертификатов службы автоматизации и управления ими с помощью PowerShell. Они поставляются в составе модулей Az.

Командлет Description
Get-AzAutomationCertificate Извлекает сведения о сертификате для использования в модуле Runbook или в конфигурации DSC. Сам сертификат можно извлечь только с помощью внутреннего командлета Get-AutomationCertificate.
New-AzAutomationCertificate Создает новый сертификат в службе автоматизации Azure.
Remove-AzAutomationCertificate Удаляет сертификат из службы автоматизации Azure.
Set-AzAutomationCertificate Задает свойства для существующего сертификата, включая отправку файла сертификата и задание пароля для PFX-файла.

Командлет Add-AzureCertificate также можно использовать для отправки сертификата указанной облачной службы.

Внутренние командлеты для доступа к сертификатам

Приведенный в следующей таблице внутренний командлет используется для доступа к сертификатам из runbook. Этот командлет предоставляется с глобальным модулем Orchestrator.AssetManagement.Cmdlets. Дополнительные сведения см. в статье Внутренние командлеты.

Внутренний командлет Description
Get-AutomationCertificate Получает сертификат для использования в модуле Runbook или в конфигурации DSC. Возвращает объект System.Security.Cryptography.X509Certificates.X509Certificate2.

Примечание.

Не следует использовать переменные в параметре Name командлета Get-AutomationCertificate, вызываемого из runbook или конфигурации DSC. Такие переменные могут усложнить обнаружение зависимостей между runbook или конфигурациями DSC и переменными службы автоматизации Azure во время разработки.

Функции Python для доступа к сертификатам

Функция, приведенная в следующей таблице, используется для доступа к сертификатам из runbook на Python 2 и 3. Модули runbook для Python 3 сейчас доступны в предварительной версии.

Function Description
automationassets.get_automation_certificate Извлекает сведения о ресурсе сертификата.

Примечание.

Импортируйте модуль automationassets в самом начале runbook на Python, чтобы получить доступ к функциям этого ресурса.

Создание сертификата

При создании нового сертификата в службу автоматизации Azure передается CER- или PFX-файл. Пометив сертификат как экспортируемый, вы сможете передавать его из хранилища сертификатов службы автоматизации Azure. Неэкспортируемые сертификаты могут использоваться только для подписи в runbook или конфигурации DSC. Служба автоматизации Azure поддерживает для сертификатов только один поставщик: поставщик служб шифрования Enhanced RSA и AES корпорации Майкрософт.

Создание нового сертификата на портале Azure

  1. В учетной записи службы автоматизации в области слева выберите Сертификаты в разделе Общие ресурсы.
  2. На странице Сертификаты выберите Добавить сертификат.
  3. В поле Имя введите имя сертификата.
  4. Чтобы перейти к CER- или PFX-файлу, щелкните Выбрать файл в разделе Отправка файла сертификата. Если вы выберете PFX-файл, введите пароль и укажите, разрешен ли экспорт этого сертификата. Если вы используете портал службы автоматизации Azure для загрузки сертификатов, это может привести к сбою для учетных записей партнеров (CSP). Мы рекомендуем использовать командлеты PowerShell в качестве обходного решения этой проблемы.
  5. Щелкните Создать, чтобы сохранить новый ресурс сертификата.

Создание нового сертификата с помощью PowerShell

В примере, приведенном ниже, демонстрируется, как создать сертификат службы автоматизации и пометить его как экспортируемый. Этот пример импортирует существующий PFX-файл.

$certificateName = 'MyCertificate'
$PfxCertPath = '.\MyCert.pfx'
$CertificatePassword = ConvertTo-SecureString -String 'P@$$w0rd' -AsPlainText -Force
$ResourceGroup = "ResourceGroup01"

New-AzAutomationCertificate -AutomationAccountName "MyAutomationAccount" -Name $certificateName -Path $PfxCertPath -Password $CertificatePassword -Exportable -ResourceGroupName $ResourceGroup

Создание нового сертификата с помощью шаблона Resource Manager

Следующий пример демонстрирует, как развернуть сертификат в учетной записи службы автоматизации с помощью шаблона Resource Manager и PowerShell:

$AutomationAccountName = "<automation account name>"
$PfxCertPath = '<PFX cert path and filename>'
$CertificatePassword = '<password>'
$certificateName = '<certificate name>' #A name of your choosing
$ResourceGroupName = '<resource group name>' #The one that holds your automation account
$flags = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable `
    -bor [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::PersistKeySet `
    -bor [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::MachineKeySet
# Load the certificate into memory
$PfxCert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList @($PfxCertPath, $CertificatePassword, $flags)
# Export the certificate and convert into base 64 string
$Base64Value = [System.Convert]::ToBase64String($PfxCert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12))
$Thumbprint = $PfxCert.Thumbprint


$json = @"
{
    '`$schema': 'https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#',
    'contentVersion': '1.0.0.0',
    'resources': [
        {
            'name': '$AutomationAccountName/$certificateName',
            'type': 'Microsoft.Automation/automationAccounts/certificates',
            'apiVersion': '2015-10-31',
            'properties': {
                'base64Value': '$Base64Value',
                'thumbprint': '$Thumbprint',
                'isExportable': true
            }
        }
    ]
}
"@

$json | out-file .\template.json
New-AzResourceGroupDeployment -Name NewCert -ResourceGroupName $ResourceGroupName -TemplateFile .\template.json

Получение сертификата

Чтобы получить сертификат, используйте внутренний командлет Get-AutomationCertificate. Вы не сможете использовать командлет Get-AzureAutomationCertificate, так как он возвращает сведения о ресурсе сертификата, но не сам сертификат.

Примеры текстовых модулей runbook

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

$serviceName = 'MyCloudService'
$cert = Get-AutomationCertificate -Name 'MyCertificate'
$certPwd = Get-AzAutomationVariable -ResourceGroupName "ResourceGroup01" `
-AutomationAccountName "MyAutomationAccount" -Name 'MyCertPassword'
Add-AzureCertificate -ServiceName $serviceName -CertToDeploy $cert

Пример графического модуля Runbook

Добавьте действие для внутреннего командлета Get-AutomationCertificate в графический runbook, щелкнув правой кнопкой мыши нужный сертификат в области "Библиотека" и выбрав действие Добавить на холст.

Screenshot of adding a certificate to the canvas

На следующем рисунке показан пример использования сертификата в графическом Runbook.

Screenshot of an example of graphical authoring

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