Управление сертификатами в службе автоматизации 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
- В учетной записи службы автоматизации в области слева выберите Сертификаты в разделе Общие ресурсы.
- На странице Сертификаты выберите Добавить сертификат.
- В поле Имя введите имя сертификата.
- Чтобы перейти к CER- или PFX-файлу, щелкните Выбрать файл в разделе Отправка файла сертификата. Если вы выберете PFX-файл, введите пароль и укажите, разрешен ли экспорт этого сертификата. Если вы используете портал службы автоматизации Azure для загрузки сертификатов, это может привести к сбою для учетных записей партнеров (CSP). Мы рекомендуем использовать командлеты PowerShell в качестве обходного решения этой проблемы.
- Щелкните Создать, чтобы сохранить новый ресурс сертификата.
Создание нового сертификата с помощью 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, щелкнув правой кнопкой мыши нужный сертификат в области "Библиотека" и выбрав действие Добавить на холст.
На следующем рисунке показан пример использования сертификата в графическом Runbook.
Следующие шаги
- Дополнительные сведения о командлетах, используемых для доступа к сертификатам, см. в статье Управление модулями в службе автоматизации Azure.
- Общие сведения о модулях runbook см. в статье Выполнение модуля Runbook в службе автоматизации Azure.
- Дополнительные сведения о конфигурациях DSC см. в разделе Общие сведения о настройке состояния службы автоматизации Azure.