Administración de certificados en Azure Automation

Azure Automation almacena los certificados de forma segura para que los runbooks o las configuraciones DSC puedan acceder a ellos mediante el cmdlet Get-AzAutomationCertificate para recursos de Azure Resource Manager. El almacenamiento seguro de certificados permite crear runbooks y configuraciones DSC que usan certificados para autenticación, o agregarlos a Azure o a recursos de terceros.

Nota:

Los recursos protegidos en Azure Automation incluyen credenciales, certificados, conexiones y variables cifradas. Estos recursos se cifran y se almacenan en Automation con una clave única que se genera para cada cuenta de Automation. Automation almacena la clave en el servicio de Key Vault administrado por el sistema. Antes de almacenar un recurso seguro, Automation carga la clave desde Key Vault y después la usa para cifrar el recurso.

Cmdlets de PowerShell para acceder a los certificados

Los cmdlets de la tabla siguiente permiten crear y administrar certificados de Automation con PowerShell. Se suministran como un componente de los módulos Az.

Cmdlet Descripción
Get-AzAutomationCertificate Recupera información sobre un certificado para utilizarlo en un runbook o en la configuración de DSC. Solo puede recuperar el certificado mediante el cmdlet Get-AutomationCertificate interno.
New-AzAutomationCertificate Crea un certificado nuevo en Automation.
Remove-AzAutomationCertificate Quita un certificado de Automation.
Set-AzAutomationCertificate Establece las propiedades de un certificado existente, incluidos la carga del archivo de certificado y el establecimiento de la contraseña para un archivo .pfx.

También se puede usar el cmdlet Add-AzureCertificate para cargar un certificado de servicio para el servicio en la nube especificado.

Cmdlets internos para acceder a los certificados

El cmdlet interno de la tabla siguiente se usa para acceder a los certificados de los runbooks. Este cmdlet se incluye en el módulo global Orchestrator.AssetManagement.Cmdlets. Para más información, consulte Cmdlets internos.

Cmdlet interno Descripción
Get-AutomationCertificate Obtiene un certificado para usarlo en un runbook o una configuración de DSC. Devuelve un objeto System.Security.Cryptography.X509Certificates.X509Certificate2.

Nota:

Debe evitar el uso de variables en el parámetro Name de Get-AutomationCertificate en un runbook o configuración de DSC. Estas variables pueden complicar la detección de dependencias entre runbooks o configuraciones DSC y variables de Automation durante el tiempo de diseño.

Funciones de Python para acceder a los certificados

La función de la tabla siguiente se usa para acceder a los certificados de un runbook de Python 2 y 3. Actualmente, los runbooks de Python 3 están en versión preliminar.

Función Descripción
automationassets.get_automation_certificate Recupera información de un recurso de certificado.

Nota:

Para acceder a las funciones del recurso, debe importar el módulo automationassets al principio del runbook de Python.

Crear un nuevo certificado

Cuando crea un certificado nuevo, debe cargar un archivo .cer o .pfx a Automation. Si marca el certificado como exportable, podrá transferirlo fuera del almacén de certificados de Automation. Si no es exportable, solo se puede usar para firmar dentro del runbook o la configuración de DSC. Automation requiere que el certificado tenga el proveedor de servicios criptográficos AES y RSA mejorado de Microsoft.

Creación de un certificado nuevo con Azure Portal

  1. En la cuenta de Automation, en el panel izquierdo, seleccione Certificados en Recurso compartido.
  2. En la página Certificados, seleccione agregar un certificado.
  3. Escriba un nombre para el certificado en el campo Nombre.
  4. Para buscar un archivo .cer o .pfx, elija Seleccionar un archivo en Cargar un archivo de certificado. Si selecciona un archivo .pfx, especifique una contraseña e indique si se puede exportar. Si usa el portal de Azure Automation para cargar certificados, es posible que se produzca un error en las cuentas de asociados (CSP). Se recomienda usar cmdlets de PowerShell como solución alternativa para este problema.
  5. Seleccione Crear para guardar el recurso de certificado nuevo.

Creación de un certificado nuevo con PowerShell

En el ejemplo siguiente se muestra cómo crear un nuevo certificado de Automation y marcarlo como exportable. En este ejemplo se importa un archivo .pfx existente.

$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

Creación de un certificado nuevo con una plantilla de Resource Manager

En el ejemplo siguiente se muestra cómo implementar un certificado en su cuenta de Automation mediante una plantilla de Resource Manager a través de 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

Obtener un certificado

Para recuperar un certificado, use el cmdlet Get-AutomationCertificate interno. No puede usar el cmdlet Get-AzAutomationCertificate porque devuelve información sobre el recurso de certificado, pero no el certificado en sí.

Ejemplo de un runbook textual

En el ejemplo siguiente se muestra cómo agregar un certificado a un servicio en la nube en un runbook. En este ejemplo, la contraseña se recupera a partir de una variable de automatización cifrada.

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

Ejemplos de un runbook gráfico

Para agregar una actividad para el cmdlet Get-AutomationCertificate interno a un runbook gráfico, haga clic con el botón derecho en el certificado en el panel Biblioteca y seleccione Agregar al lienzo.

Screenshot of adding a certificate to the canvas

La imagen siguiente muestra un ejemplo de cómo usar un certificado en un runbook gráfico.

Screenshot of an example of graphical authoring

Pasos siguientes