Hantera certifikat i Azure Automation

Azure Automation lagrar certifikat på ett säkert sätt för åtkomst via runbooks och DSC-konfigurationer med hjälp av cmdleten Get-AzAutomationCertificate för Azure Resource Manager-resurser. Med säker certifikatlagring kan du skapa runbooks och DSC-konfigurationer som använder certifikat för autentisering eller lägga till dem i Azure- eller tredjepartsresurser.

Kommentar

Säkra tillgångar i Azure Automation omfattar autentiseringsuppgifter, certifikat, anslutningar och krypterade variabler. Dessa tillgångar krypteras och lagras i Automation med hjälp av en unik nyckel som genereras för varje Automation-konto. Automation lagrar nyckeln i den systemhanterade Key Vault-tjänsten. Innan du lagrar en säker tillgång läser Automation in nyckeln från Key Vault och använder den sedan för att kryptera tillgången.

PowerShell-cmdletar för åtkomst till certifikat

Cmdletarna i följande tabell skapar och hanterar Automation-certifikat med PowerShell. De levereras som en del av Az-modulerna.

Cmdlet Description
Get-AzAutomationCertificate Hämtar information om ett certifikat som ska användas i en runbook- eller DSC-konfiguration. Du kan bara hämta själva certifikatet med hjälp av den interna Get-AutomationCertificate cmdleten.
New-AzAutomationCertificate Skapar ett nytt certifikat i Automation.
Remove-AzAutomationCertificate Tar bort ett certifikat från Automation.
Set-AzAutomationCertificate Anger egenskaperna för ett befintligt certifikat, inklusive att ladda upp certifikatfilen och ange lösenordet för en PFX-fil .

Cmdleten Add-AzureCertificate kan också användas för att ladda upp ett tjänstcertifikat för den angivna molntjänsten.

Interna cmdletar för åtkomst till certifikat

Den interna cmdleten i följande tabell används för att komma åt certifikat i dina runbooks. Den här cmdleten levereras med den globala modulen Orchestrator.AssetManagement.Cmdlets. Mer information finns i Interna cmdletar.

Intern cmdlet Description
Get-AutomationCertificate Hämtar ett certifikat som ska användas i en runbook- eller DSC-konfiguration. Returnerar ett System.Security.Cryptography.X509Certificates.X509Certificate2-objekt .

Kommentar

Du bör undvika att använda variabler i parametern NameGet-AutomationCertificate i i en runbook- eller DSC-konfiguration. Sådana variabler kan komplicera identifieringen av beroenden mellan runbooks eller DSC-konfigurationer och Automation-variabler vid designtillfället.

Python-funktioner för åtkomst till certifikat

Använd funktionen i följande tabell för att komma åt certifikat i en Python 2- och 3-runbook. Python 3-runbooks är för närvarande i förhandsversion.

Function Description
automationassets.get_automation_certificate Hämtar information om en certifikattillgång.

Kommentar

Du måste importera modulen automationassets i början av Python-runbooken för att få åtkomst till tillgångsfunktionerna.

Skapa ett nytt certifikat

När du skapar ett nytt certifikat laddar du upp en .cer- eller .pfx-fil till Automation. Om du markerar certifikatet som exportbart kan du överföra det från Automation-certifikatarkivet. Om den inte kan exporteras kan den bara användas för signering i runbook- eller DSC-konfigurationen. Automation kräver att certifikatet har providern Microsoft Enhanced RSA och AES Cryptographic Provider.

Skapa ett nytt certifikat med Azure Portal

  1. Välj Certifikat under Delad resurs i det vänstra fönstret i automationskontot.
  2. På sidan Certifikat väljer du Lägg till ett certifikat.
  3. I fältet Namn skriver du ett namn för certifikatet.
  4. Om du vill bläddra efter en .cer- eller .pfx-fil går du till Ladda upp en certifikatfil och väljer Välj en fil. Om du väljer en .pfx-fil anger du ett lösenord och anger om det kan exporteras. Om du använder Azure Automation portalen för att ladda upp certifikat kan det misslyckas för partnerkonton (CSP). Vi rekommenderar att du använder PowerShell-cmdletar som en lösning för att lösa problemet.
  5. Välj Skapa för att spara den nya certifikattillgången.

Skapa ett nytt certifikat med PowerShell

I följande exempel visas hur du skapar ett nytt Automation-certifikat och markerar det som exportbart. Det här exemplet importerar en befintlig .pfx-fil .

$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

Skapa ett nytt certifikat med en Resource Manager-mall

I följande exempel visas hur du distribuerar ett certifikat till ditt Automation-konto med hjälp av en Resource Manager-mall via 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

Hämta ett certifikat

Om du vill hämta ett certifikat använder du den interna Get-AutomationCertificate cmdleten. Du kan inte använda cmdleten Get-AzAutomationCertificate eftersom den returnerar information om certifikattillgången, men inte själva certifikatet.

Exempel på text runbook

I följande exempel visas hur du lägger till ett certifikat i en molntjänst i en runbook. I det här exemplet hämtas lösenordet från en krypterad automatiseringsvariabel.

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

Exempel på grafisk runbook

Lägg till en aktivitet för den interna Get-AutomationCertificate cmdleten i en grafisk runbook genom att högerklicka på certifikatet i fönstret Bibliotek och välja Lägg till på arbetsytan.

Screenshot of adding a certificate to the canvas

Följande bild visar ett exempel på hur du använder ett certifikat i en grafisk runbook.

Screenshot of an example of graphical authoring

Nästa steg