Köra Automation-runbooks på en Hybrid Runbook Worker

Runbooks som körs på Hybrid Runbook Worker hanterar vanligtvis resurser på den lokala datorn eller mot resurser i den lokala miljö där arbetaren distribueras. Runbooks i Azure Automation vanligtvis hantera resurser i Azure-molnet. Även om de används på olika sätt är runbooks som körs i Azure Automation och runbooks som körs på en Hybrid Runbook Worker identiska i strukturen.

När du skapar en runbook som ska köras på en Hybrid Runbook Worker bör du redigera och testa runbooken på den dator som är värd för arbetsrollen. Värddatorn har alla PowerShell-moduler och nätverksåtkomst som krävs för att hantera de lokala resurserna. När du testar runbooken på Hybrid Runbook Worker-datorn kan du ladda upp den till Azure Automation-miljön, där den kan köras på arbetsdatorn.

Planera för Azure-tjänster som skyddas av brandvägg

Om du aktiverar Azure Firewall på Azure Storage, Azure Key Vaulteller Azure SQL blockeras åtkomst från Azure Automation runbooks för dessa tjänster. Åtkomst blockeras även när brandväggsfelet för att tillåta betrodda Microsoft-tjänster är aktiverat, eftersom Automation inte är en del av listan över betrodda tjänster. Med en aktiverad brandvägg kan åtkomst endast göras med hjälp av en Hybrid Runbook Worker och en tjänstslutpunkt för virtuellt nätverk.

Planera runbook-jobbbeteende

Azure Automation hanterar jobb på Hybrid Runbook Workers på ett annat sätt än jobb som körs i Azure-sandbox-miljöerna. Om du har en långvarig runbook kontrollerar du att den är motståndskraftig mot eventuell omstart. Mer information om jobbbeteendet finns i Hybrid Runbook Worker jobb.

Tjänstkonton

Windows

Jobb för Hybrid Runbook Workers körs under det lokala systemkontot.

Anteckning

Information om hur du kör PowerShell 7.x Windows Hybrid Runbook Worker finns i Installera PowerShell på Windows. För närvarande stöder vi bara Hybrid Worker-tilläggsbaserad onboarding som nämns här.

Kontrollera att sökvägen där den körbarapwsh.exe finns och har lagts till i miljövariabeln PATH. Starta om Hybrid Runbook Worker installationen är klar.

Linux

Anteckning

Information om hur du kör PowerShell 7.x på en Linux Hybrid Runbook Worker finns i Installera PowerShell på Linux. För närvarande stöder vi bara Hybrid Worker-tilläggsbaserad onboarding som nämns här.

Tjänstkontona nxautomation och omsagent skapas. Skriptet för skapande- och behörighetstilldelning kan visas på https://github.com/microsoft/OMS-Agent-for-Linux/blob/master/installer/datafiles/linux.data . Kontona, med motsvarande sudo-behörigheter, måste finnas under installationen av en Linux Hybrid Runbook Worker. Om du försöker installera arbetsrollen och kontot inte finns eller inte har rätt behörigheter misslyckas installationen. Ändra inte behörigheterna för mappen sudoers.d eller dess ägarskap. Sudo-behörighet krävs för kontona och behörigheterna bör inte tas bort. Om du begränsar detta till vissa mappar eller kommandon kan det resultera i en stor ändring. Nxautomation-användaren som är aktiverad som en del Uppdateringshantering endast signerade runbooks.

Så här ser du till att tjänstkontona har åtkomst till de lagrade Runbook-modulerna:

  • När du använder pip install , eller någon annan metod för att installera paket på apt install Linux, ser du till att paketet är installerat för alla användare. Till exempel sudo -H pip install <package_name>.
  • Om du använder PowerShell på Linuxmåste du ange för parametern när du använder cmdleten Install-Module. AllUsers Scope

Automation-arbetsloggen finns på /var/opt/microsoft/omsagent/run/automationworker/worker.log .

Tjänstkontona tas bort när datorn tas bort som en Hybrid Runbook Worker.

Konfigurera runbook-behörigheter

Definiera behörigheter för runbooken som ska köras på Hybrid Runbook Worker på följande sätt:

  • Be runbooken att tillhandahålla sin egen autentisering till lokala resurser.
  • Konfigurera autentisering med hanterade identiteter för Azure-resurser.
  • Ange ett Kör som-konto för att tillhandahålla en användarkontext för alla runbooks.

Använda runbook-autentisering till lokala resurser

Om du förbereder en runbook som tillhandahåller en egen autentisering för resurser använder du autentiseringsuppgifter och certifikattillgångar i din runbook. Det finns flera cmdlets som gör att du kan ange autentiseringsuppgifter så att runbooken kan autentisera till olika resurser. I följande exempel visas en del av en runbook som startar om en dator. Den hämtar autentiseringsuppgifter från en autentiseringstillgång och namnet på datorn från en variabeltillgång och använder sedan dessa värden med Restart-Computer cmdleten .

$Cred = Get-AutomationPSCredential -Name "MyCredential"
$Computer = Get-AutomationVariable -Name "ComputerName"

Restart-Computer -ComputerName $Computer -Credential $Cred

Du kan också använda en InlineScript-aktivitet. InlineScript gör att du kan köra kodblock på en annan dator med autentiseringsuppgifter.

Använda runbook-autentisering med hanterade identiteter

Hybrid Runbook Workers på virtuella Azure-datorer kan använda hanterade identiteter för att autentisera till Azure-resurser. Användning av hanterade identiteter för Azure-resurser i stället för Kör som-konton ger fördelar eftersom du inte behöver:

  • Exportera Kör som-certifikatet och importera det sedan till Hybrid Runbook Worker.
  • Förnya certifikatet som används av Kör som-kontot.
  • Hantera Kör som-anslutningsobjektet i din Runbook-kod.

Följ nästa steg för att använda en hanterad identitet för Azure-resurser på en Hybrid Runbook Worker:

  1. Skapa en virtuell Azure-dator.

  2. Konfigurera hanterade identiteter för Azure-resurser på den virtuella datorn. Se Konfigurera hanterade identiteter för Azure-resurser på en virtuell dator med hjälp av Azure Portal.

  3. Ge den virtuella datorn åtkomst till en resursgrupp i Resource Manager. Se Använda en virtuell dator Windows system tilldelad hanterad identitet för att få åtkomst Resource Manager.

  4. Installera Hybrid Runbook Worker den virtuella datorn. Se Distribuera en Windows Hybrid Runbook Worker eller Distribuera en Linux-Hybrid Runbook Worker.

  5. Uppdatera runbooken så att den använder Anslut-AzAccount-cmdleten med Identity parametern för att autentisera till Azure-resurser. Den här konfigurationen minskar behovet av att använda ett Kör som-konto och utföra den associerade kontohanteringen.

    # Ensures you do not inherit an AzContext in your runbook
    Disable-AzContextAutosave -Scope Process
    
    # Connect to Azure with system-assigned managed identity
    $AzureContext = (Connect-AzAccount -Identity).context
    
    # set and store context
    $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
    
    # Get all VM names from the subscription
    Get-AzVM -DefaultProfile $AzureContext | Select Name
    

    Om du vill att runbooken ska köras med den system tilldelade hanterade identiteten lämnar du koden som den är. Om du föredrar att använda en användar tilldelad hanterad identitet gör du följande:

    1. Från rad 5 tar du bort $AzureContext = (Connect-AzAccount -Identity).context ,
    2. Ersätt den med $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context , och
    3. Ange Klient-ID.

Använda Runbook-autentisering med Kör som-konto

I stället för att din runbook tillhandahåller sin egen autentisering till lokala resurser kan du ange ett Kör som-konto för en Hybrid Runbook Worker grupp. Om du vill ange ett Kör som-konto måste du definiera en autentiseringstillgång som har åtkomst till lokala resurser. Dessa resurser omfattar certifikatarkiv och alla runbooks som körs under dessa autentiseringsuppgifter på Hybrid Runbook Worker i gruppen.

  • Användarnamnet för autentiseringsnamnet måste ha något av följande format:

    • Domän\användarnamn
    • username@domain
    • användarnamn (för konton som är lokala för den lokala datorn)
  • Om du vill använda PowerShell-runbooken Export-RunAsCertificateToHybridWorker måste du installera Az-modulerna för Azure Automation på den lokala datorn.

Använda en autentiseringstillgång för att ange ett Kör som-konto

Använd följande procedur för att ange ett Kör som-konto för en Hybrid Runbook Worker grupp:

  1. Skapa en autentiseringstillgång med åtkomst till lokala resurser.
  2. Öppna Automation-kontot i Azure Portal.
  3. Välj Hybrid Worker grupper och välj sedan den specifika gruppen.
  4. Välj Alla inställningar följt av Hybrid Worker-gruppinställningar.
  5. Ändra värdet för Kör som från Standard till Anpassad.
  6. Välj autentiseringssuppgifter och klicka på Spara.

Installera Kör som-kontocertifikat

Som en del av den automatiserade byggprocessen för att distribuera resurser i Azure kan du behöva åtkomst till lokala system för att stödja en uppgift eller en uppsättning steg i distributionssekvensen. Om du vill tillhandahålla autentisering mot Azure med hjälp av Kör som-kontot måste du installera Kör som-kontocertifikatet.

Anteckning

Den här PowerShell-runbooken körs för närvarande inte på Linux-datorer. Den körs bara på Windows datorer.

Följande PowerShell-runbook, som kallas Export-RunAsCertificateToHybridWorker, exporterar Kör som-certifikatet från ditt Azure Automation konto. Runbooken laddar ned och importerar certifikatet till den lokala datorns certifikatarkiv på en Hybrid Runbook Worker som är ansluten till samma konto. När den har slutfört det steget verifierar runbooken att arbetsrollen kan autentisera till Azure med hjälp av Kör som-kontot.

Anteckning

Den här PowerShell-runbooken är inte utformad eller avsedd att köras utanför ditt Automation-konto som ett skript på måldatorn.

<#PSScriptInfo
.VERSION 1.0
.GUID 3a796b9a-623d-499d-86c8-c249f10a6986
.AUTHOR Azure Automation Team
.COMPANYNAME Microsoft
.COPYRIGHT
.TAGS Azure Automation
.LICENSEURI
.PROJECTURI
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES
#>

<#
.SYNOPSIS
Exports the Run As certificate from an Azure Automation account to a hybrid worker in that account.

.DESCRIPTION
This runbook exports the Run As certificate from an Azure Automation account to a hybrid worker in that account. Run this runbook on the hybrid worker where you want the certificate installed. This allows the use of the AzureRunAsConnection to authenticate to Azure and manage Azure resources from runbooks running on the hybrid worker.

.EXAMPLE
.\Export-RunAsCertificateToHybridWorker

.NOTES
LASTEDIT: 2016.10.13
#>

# Generate the password used for this certificate
Add-Type -AssemblyName System.Web -ErrorAction SilentlyContinue | Out-Null
$Password = [System.Web.Security.Membership]::GeneratePassword(25, 10)

# Stop on errors
$ErrorActionPreference = 'stop'

# Get the management certificate that will be used to make calls into Azure Service Management resources
$RunAsCert = Get-AutomationCertificate -Name "AzureRunAsCertificate"

# location to store temporary certificate in the Automation service host
$CertPath = Join-Path $env:temp  "AzureRunAsCertificate.pfx"

# Save the certificate
$Cert = $RunAsCert.Export("pfx",$Password)
Set-Content -Value $Cert -Path $CertPath -Force -Encoding Byte | Write-Verbose

Write-Output ("Importing certificate into $env:computername local machine root store from " + $CertPath)
$SecurePassword = ConvertTo-SecureString $Password -AsPlainText -Force
Import-PfxCertificate -FilePath $CertPath -CertStoreLocation Cert:\LocalMachine\My -Password $SecurePassword | Write-Verbose

Remove-Item -Path $CertPath -ErrorAction SilentlyContinue | Out-Null

# Test to see if authentication to Azure Resource Manager is working
$RunAsConnection = Get-AutomationConnection -Name "AzureRunAsConnection"

Connect-AzAccount `
    -ServicePrincipal `
    -Tenant $RunAsConnection.TenantId `
    -ApplicationId $RunAsConnection.ApplicationId `
    -CertificateThumbprint $RunAsConnection.CertificateThumbprint | Write-Verbose

Set-AzContext -Subscription $RunAsConnection.SubscriptionID | Write-Verbose

# List automation accounts to confirm that Azure Resource Manager calls are working
Get-AzAutomationAccount | Select-Object AutomationAccountName

Anteckning

För PowerShell-runbooks Add-AzAccount och är alias för Add-AzureRMAccount Connect-AzAccount . Om du inte ser när du söker i biblioteksobjekten kan du använda eller uppdatera Connect-AzAccount Add-AzAccount modulerna i ditt Automation-konto.

Slutför förberedelsen av Kör som-kontot:

  1. Spara runbooken Export-RunAsCertificateToHybridWorker på datorn med ett.ps1 tillägg.
  2. Importera den till ditt Automation-konto.
  3. Redigera runbooken och ändra värdet för Password variabeln till ditt eget lösenord.
  4. Publicera runbooken.
  5. Kör runbooken med den Hybrid Runbook Worker som kör och autentiserar runbooks med hjälp av Kör som-kontot.
  6. Granska jobbströmmen för att se att den rapporterar försöket att importera certifikatet till det lokala datorarkivet, följt av flera rader. Det här beteendet beror på hur många Automation-konton du definierar i din prenumeration och hur väl autentiseringen lyckades.

Anteckning

Vid obegränsad åtkomst kan en användare med vm-deltagarbehörighet eller behörighet att köra kommandon mot Hybrid Worker-datorn använda Automation-kontots Kör som-certifikat från Hybrid Worker-datorn med hjälp av andra källor som Azure-cmdlets som potentiellt kan ge en obehörig användare åtkomst som prenumerationsdeltagare. Detta kan äventyra säkerheten för din Azure-miljö.

Vi rekommenderar att du delar upp uppgifterna i teamet och beviljar nödvändiga behörigheter/åtkomst till användare enligt deras jobb. Ge inte obegränsad behörighet till den dator som är värd för Hybrid Runbook Worker-rollen.

Arbeta med signerade runbooks på en Windows Hybrid Runbook Worker

Du kan konfigurera en Windows Hybrid Runbook Worker att endast köra signerade runbooks.

Viktigt

När du har konfigurerat en Hybrid Runbook Worker att endast köra signerade runbooks kan osignerade runbooks inte köras på arbetsrollen.

Anteckning

PowerShell 7.x stöder inte signerade runbooks för Windows och Linux Hybrid Runbook Worker.

Skapa signeringscertifikat

I följande exempel skapas ett självsignerat certifikat som kan användas för signering av runbooks. Den här koden skapar certifikatet och exporterar det så att Hybrid Runbook Worker kan importera det senare. Tumavtrycket returneras också för senare användning i referensen till certifikatet.

# Create a self-signed certificate that can be used for code signing
$SigningCert = New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\my `
    -Subject "CN=contoso.com" `
    -KeyAlgorithm RSA `
    -KeyLength 2048 `
    -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
    -KeyExportPolicy Exportable `
    -KeyUsage DigitalSignature `
    -Type CodeSigningCert

# Export the certificate so that it can be imported to the hybrid workers
Export-Certificate -Cert $SigningCert -FilePath .\hybridworkersigningcertificate.cer

# Import the certificate into the trusted root store so the certificate chain can be validated
Import-Certificate -FilePath .\hybridworkersigningcertificate.cer -CertStoreLocation Cert:\LocalMachine\Root

# Retrieve the thumbprint for later use
$SigningCert.Thumbprint

Importera certifikat och konfigurera arbetare för signaturverifiering

Kopiera certifikatet som du har skapat till varje Hybrid Runbook Worker i en grupp. Kör följande skript för att importera certifikatet och konfigurera arbetarna så att de använder signaturvalidering på runbooks.

# Install the certificate into a location that will be used for validation.
New-Item -Path Cert:\LocalMachine\AutomationHybridStore
Import-Certificate -FilePath .\hybridworkersigningcertificate.cer -CertStoreLocation Cert:\LocalMachine\AutomationHybridStore

# Import the certificate into the trusted root store so the certificate chain can be validated
Import-Certificate -FilePath .\hybridworkersigningcertificate.cer -CertStoreLocation Cert:\LocalMachine\Root

# Configure the hybrid worker to use signature validation on runbooks.
Set-HybridRunbookWorkerSignatureValidation -Enable $true -TrustedCertStoreLocation "Cert:\LocalMachine\AutomationHybridStore"

Signera dina runbooks med hjälp av certifikatet

När Hybrid Runbook Workers har konfigurerats för att endast använda signerade runbooks måste du signera runbooks som ska användas på Hybrid Runbook Worker. Använd följande PowerShell-exempelkod för att signera dessa runbooks.

$SigningCert = ( Get-ChildItem -Path cert:\LocalMachine\My\<CertificateThumbprint>)
Set-AuthenticodeSignature .\TestRunbook.ps1 -Certificate $SigningCert

När en runbook har signerats måste du importera den till ditt Automation-konto och publicera den med signaturblocket. Information om hur du importerar runbooks finns i Importera en runbook.

Anteckning

Använd endast tecken i klartext i runbook-koden, inklusive kommentarer. Om du använder tecken med diakritiska tecken, t.ex. à eller ñ, resulterar det i ett fel. När Azure Automation laddar ned koden ersätts tecknen med ett frågetecken och signeringen misslyckas med meddelandet "Signature hash validation failure".

Arbeta med signerade runbooks på en Linux-Hybrid Runbook Worker

För att kunna arbeta med signerade runbooks måste en Linux-Hybrid Runbook Worker ha GPG-körbara filen på den lokala datorn.

Viktigt

När du har konfigurerat en Hybrid Runbook Worker att endast köra signerade runbooks kan osignerade runbooks inte köras på arbetsrollen.

Du utför följande steg för att slutföra den här konfigurationen:

  • Skapa en GPG-nyckelring och ett nyckelpar
  • Gör nyckelringen tillgänglig för Hybrid Runbook Worker
  • Kontrollera att signaturverifiering är på
  • Signera en runbook

Anteckning

PowerShell 7.x stöder inte signerade runbooks för Windows och Linux Hybrid Runbook Worker.

Skapa en GPG-nyckelring och ett nyckelpar

Om du vill skapa GPG-nyckelringen och nyckelparet använder du Hybrid Runbook Worker nxautomation-kontot.

  1. Använd sudo-programmet för att logga in som nxautomation-konto.

    sudo su - nxautomation
    
  2. När du använder nxautomation genererar du GPG-nyckelparet. GPG vägleder dig genom stegen. Du måste ange namn, e-postadress, förfallotid och lösenfras. Sedan väntar du tills det finns tillräckligt med enpati på datorn för att nyckeln ska genereras.

    sudo gpg --generate-key
    
  3. Eftersom GPG-katalogen genererades med sudo måste du ändra dess ägare till nxautomation med hjälp av följande kommando.

    sudo chown -R nxautomation ~/.gnupg
    

Gör nyckelringen tillgänglig för Hybrid Runbook Worker

När nyckelringen har skapats gör du den tillgänglig för Hybrid Runbook Worker. Ändra inställningsfilen home/nxautomation/state/worker.conf så att den innehåller följande exempelkod under filavsnittet [worker-optional] .

gpg_public_keyring_path = /home/nxautomation/run/.gnupg/pubring.kbx

Kontrollera att signaturverifiering är på

Om signaturverifiering har inaktiverats på datorn måste du aktivera den genom att köra följande sudo-kommando. Ersätt <LogAnalyticsworkspaceId> med ditt arbetsyte-ID.

sudo python /opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/DSCResources/MSFT_nxOMSAutomationWorkerResource/automationworker/scripts/require_runbook_signature.py --true <LogAnalyticsworkspaceId>

Signera en runbook

När du har konfigurerat signaturverifieringen använder du följande GPG-kommando för att signera runbooken.

gpg --clear-sign <runbook name>

Den signerade runbooken heter <runbook name> .asc.

Du kan nu ladda upp den signerade runbooken till Azure Automation köra den som en vanlig runbook.

Starta en runbook på en Hybrid Runbook Worker

Starta en runbook i Azure Automation beskriver olika metoder för att starta en runbook. När du startar en runbook på Hybrid Runbook Worker använder du alternativet Kör på som gör att du kan ange namnet på en Hybrid Runbook Worker grupp. När en grupp har angetts hämtar och kör ett av arbetarna i gruppen runbooken. Om din runbook inte anger det här alternativet Azure Automation kör runbooken som vanligt.

När du startar en runbook i Azure Portal visas alternativet Kör på som du kan välja Azure eller Hybrid Worker. Om du väljer Hybrid Worker kan du välja Hybrid Runbook Worker grupp i en listrutan.

När du startar en runbook med PowerShell använder du RunOn parametern med cmdleten Start-AzAutomationRunbook. I följande exempel används Windows PowerShell för att starta en runbook med namnet Test-Runbook på en Hybrid Runbook Worker med namnet MyHybridGroup.

Start-AzAutomationRunbook -AutomationAccountName "MyAutomationAccount" -Name "Test-Runbook" -RunOn "MyHybridGroup"

Loggning

För att felsöka problem med runbooks som körs på en Hybrid Runbook Worker lagras loggar lokalt på följande plats:

  • På Windows på C:\ProgramData\Microsoft\System Center\Orchestrator\<version>\SMA\Sandboxes för detaljerad loggning av jobbkörningsprocessen. Statushändelser för runbook-jobb på hög nivå skrivs till händelseloggen Program- och tjänstloggar\Microsoft-Automation\Operations.

  • I Linux finns användarens Hybrid Worker-loggar på /home/nxautomation/run/worker.log , och system runbook worker-loggar finns på /var/opt/microsoft/omsagent/run/automationworker/worker.log .

Nästa steg