Automation-runbooks uitvoeren op een Hybrid Runbook Worker

Runbooks die worden uitgevoerd op een Hybrid Runbook Worker beheren doorgaans resources op de lokale computer of op basis van resources in de lokale omgeving waarin de werkrol is geïmplementeerd. Runbooks in Azure Automation beheren doorgaans resources in de Azure-cloud. Hoewel ze anders worden gebruikt, zijn runbooks die worden uitgevoerd in Azure Automation runbooks die worden uitgevoerd op een Hybrid Runbook Worker identiek in structuur.

Wanneer u een runbook ontwerpt om te worden uitgevoerd op een Hybrid Runbook Worker, moet u het runbook bewerken en testen op de computer waarop de werkmedewerker wordt uitgevoerd. De hostmachine beschikt over alle PowerShell-modules en netwerktoegang die nodig zijn om de lokale resources te beheren. Zodra u het runbook op de Hybrid Runbook Worker-machine hebt getest, kunt u het uploaden naar de Azure Automation-omgeving, waar het kan worden uitgevoerd op de werker.

Plannen voor Azure-services die worden beveiligd door een firewall

Als u de Azure Firewall in Azure Storage, Azure Key Vaultof Azure SQL, blokkeert u de toegang tot Azure Automation runbooks voor deze services. Toegang wordt geblokkeerd, zelfs wanneer de firewall-uitzondering voor het toestaan van vertrouwde Microsoft-services is ingeschakeld, omdat Automation geen deel uitmaakt van de lijst met vertrouwde services. Met een ingeschakelde firewall kan toegang alleen worden gemaakt met behulp van een Hybrid Runbook Worker en een service-eindpunt voor een virtueel netwerk.

Runbook-taakgedrag plannen

Azure Automation verwerkt taken in Hybrid Runbook Workers anders dan taken die worden uitgevoerd in Azure-sandboxes. Als u een langlopende runbook hebt, moet u ervoor zorgen dat het bestand is tegen mogelijk opnieuw opstarten. Zie taken voor meer informatie over Hybrid Runbook Worker taakgedrag.

Serviceaccounts

Windows

Taken voor Hybrid Runbook Workers worden uitgevoerd onder het lokale systeemaccount.

Notitie

Zie PowerShell installeren op Windows Hybrid Runbook Worker om PowerShell7.x op een Windows. Op dit moment bieden we alleen ondersteuning voor onboarding op basis van Hybrid Worker-extensies, zoals hier wordt vermeld.

Zorg ervoor dat het pad waar het pwsh.exe het uitvoerbare bestand zich bevindt en is toegevoegd aan de omgevingsvariabele PATH. Start de Hybrid Runbook Worker opnieuw nadat de installatie is voltooid.

Linux

Notitie

Zie PowerShell installeren op Linuxals u PowerShell 7.x wilt uitvoeren op een Linux-Hybrid Runbook Worker. Op dit moment bieden we alleen ondersteuning voor onboarding op basis van Hybrid Worker-extensies, zoals hier wordt vermeld.

Serviceaccounts nxautomation en omsagent worden gemaakt. Het script voor het maken en de toewijzing van machtigingen kan worden bekeken op https://github.com/microsoft/OMS-Agent-for-Linux/blob/master/installer/datafiles/linux.data . De accounts, met de bijbehorende sudo-machtigingen, moeten aanwezig zijn tijdens de installatie van een Linux Hybrid Runbook Worker. Als u de werkmedewerker probeert te installeren en het account niet aanwezig is of niet de juiste machtigingen heeft, mislukt de installatie. Wijzig de machtigingen van de map of sudoers.d het eigendom ervan niet. Sudo-machtiging is vereist voor de accounts en de machtigingen mogen niet worden verwijderd. Als u dit beperkt tot bepaalde mappen of opdrachten, kan dit leiden tot een wijziging die kan worden gewijzigd. De nxautomation-gebruiker die is ingeschakeld als onderdeel van Updatebeheer alleen ondertekende runbooks uitvoert.

Om ervoor te zorgen dat de serviceaccounts toegang hebben tot de opgeslagen runbookmodules:

  • Wanneer u of een andere methode gebruikt voor het installeren van pakketten in Linux, moet u ervoor zorgen dat het pakket pip install voor alle gebruikers is apt install geïnstalleerd. Bijvoorbeeld sudo -H pip install <package_name>.
  • Als u PowerShell op Linux gebruikt,moet u bij het gebruik van de cmdlet Install-Module opgeven AllUsers voor de parameter Scope .

Het Automation-werklogboek bevindt zich op /var/opt/microsoft/omsagent/run/automationworker/worker.log .

De serviceaccounts worden verwijderd wanneer de machine als een Hybrid Runbook Worker.

Runbookmachtigingen configureren

Definieer machtigingen voor uw runbook om op de Hybrid Runbook Worker te worden uitgevoerd:

Runbookverificatie gebruiken voor lokale resources

Als u een runbook voorbereidt dat eigen verificatie aan resources biedt, gebruikt u referenties en certificaatactiva in uw runbook. Er zijn verschillende cmdlets waarmee u referenties kunt opgeven, zodat het runbook kan worden geverifieerd bij verschillende resources. In het volgende voorbeeld ziet u een deel van een runbook dat een computer opnieuw opstart. Deze haalt referenties op uit een referentie-asset en de naam van de computer uit een variabele asset en gebruikt deze waarden vervolgens met de Restart-Computer cmdlet .

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

Restart-Computer -ComputerName $Computer -Credential $Cred

U kunt ook een InlineScript-activiteit gebruiken. InlineScript met kunt u codeblokken uitvoeren op een andere computer met referenties.

Runbookverificatie gebruiken met beheerde identiteiten

Hybrid Runbook Workers op virtuele Azure-machines kan beheerde identiteiten gebruiken om te verifiëren bij Azure-resources. Het gebruik van beheerde identiteiten voor Azure-resources in plaats van Uitvoeren als-accounts biedt voordelen omdat u het volgende niet hoeft te doen:

  • Exporteer het Uitvoeren als-certificaat en importeer het vervolgens in Hybrid Runbook Worker.
  • Vernieuw het certificaat dat wordt gebruikt door het Uitvoeren als-account.
  • Verloop het Run As-verbindingsobject in uw runbookcode.

Volg de volgende stappen voor het gebruik van een beheerde identiteit voor Azure-resources op Hybrid Runbook Worker:

  1. Een Azure-VM maken.

  2. Beheerde identiteiten configureren voor Azure-resources op de VM. Zie Beheerde identiteiten configureren voor Azure-resources op een VM met behulp van de Azure Portal.

  3. Geef de VM toegang tot een resourcegroep in Resource Manager. Raadpleeg Use a Windows VM system-assigned managed identity to access Resource Manager.

  4. Installeer de Hybrid Runbook Worker op de VM. Zie Deploy a Windows Hybrid Runbook Worker or Deploy a Linux Hybrid Runbook Worker (Een Linux-Hybrid Runbook Worker).

  5. Werk het runbook bij om de cmdlet Verbinding maken-AzAccount te gebruiken met de Identity parameter voor verificatie bij Azure-resources. Deze configuratie vermindert de noodzaak om een Uitvoeren als-account te gebruiken en het bijbehorende accountbeheer uit te voeren.

    # 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
    

    Als u wilt dat het runbook wordt uitgevoerd met de door het systeem toegewezen beheerde identiteit, laat u de code zoals deze is. Als u liever een door de gebruiker toegewezen beheerde identiteit gebruikt, gaat u als volgende te werk:

    1. Verwijder vanaf regel 5, $AzureContext = (Connect-AzAccount -Identity).context ,
    2. Vervang deze door $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context , en
    3. Voer de client-id in.

Runbookverificatie gebruiken met Een Uitvoeren als-account

In plaats van dat uw runbook eigen verificatie voor lokale resources biedt, kunt u een Uitvoeren als-account voor een Hybrid Runbook Worker opgeven. Als u een Uitvoeren als-account wilt opgeven, moet u een referentie-asset definiëren die toegang heeft tot lokale resources. Deze resources omvatten certificaatopslag en alle runbooks worden onder deze referenties uitgevoerd op een Hybrid Runbook Worker in de groep.

  • De gebruikersnaam voor de referentie moet een van de volgende indelingen hebben:

    • Domein\gebruikersnaam
    • username@domain
    • gebruikersnaam (voor accounts die lokaal zijn op de on-premises computer)
  • Als u het PowerShell-runbook Export-RunAsCertificateToHybridWorker wilt gebruiken, moet u de Az-modules voor Azure Automation installeren op de lokale computer.

Een referentie-asset gebruiken om een Uitvoeren als-account op te geven

Gebruik de volgende procedure om een Uitvoeren als-account op te geven voor een Hybrid Runbook Worker groep:

  1. Maak een referentie-asset met toegang tot lokale resources.
  2. Open het Automation-account in het Azure Portal.
  3. Selecteer Hybrid Worker Groepen en selecteer vervolgens de specifieke groep.
  4. Selecteer Alle instellingen, gevolgd door Instellingen voor Hybrid Worker-groepen.
  5. Wijzig de waarde van Uitvoeren als van Standaard in Aangepast.
  6. Selecteer de referentie en klik op Opslaan.

Uitvoeren als-accountcertificaat installeren

Als onderdeel van uw geautomatiseerde bouwproces voor het implementeren van resources in Azure, hebt u mogelijk toegang nodig tot on-premises systemen ter ondersteuning van een taak of een reeks stappen in uw implementatiereeks. Als u verificatie wilt bieden bij Azure met behulp van het Uitvoeren als-account, moet u het certificaat van het Uitvoeren als-account installeren.

Notitie

Dit PowerShell-runbook wordt momenteel niet uitgevoerd op Linux-machines. Deze wordt alleen uitgevoerd op Windows machines.

Met het volgende PowerShell-runbook, Export-RunAsCertificateToHybridWorker, exporteert u het Uitvoeren als-certificaat vanuit uw Azure Automation account. Het runbook downloadt en importeert het certificaat in het certificaatopslag van de lokale computer op een Hybrid Runbook Worker die is verbonden met hetzelfde account. Zodra deze stap is voltooid, controleert het runbook of de werkmedewerker kan worden geverifieerd bij Azure met behulp van het Uitvoeren als-account.

Notitie

Dit PowerShell-runbook is niet ontworpen of bedoeld om buiten uw Automation-account te worden uitgevoerd als een script op de doelmachine.

<#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

Notitie

Voor PowerShell-runbooks zijn Add-AzAccount en Add-AzureRMAccount aliassen voor Connect-AzAccount. Als u uw bibliotheekitems niet ziet, kunt u gebruiken of kunt u uw Connect-AzAccount modules bijwerken in uw Add-AzAccount Automation-account.

Het uitvoeren als-account voorbereiden:

  1. Sla het runbook Export-RunAsCertificateToHybridWorker op uw computer op met.ps1 extensie.
  2. Importeer deze in uw Automation-account.
  3. Bewerk het runbook en wijzig de waarde van de Password variabele in uw eigen wachtwoord.
  4. Publiceer het runbook.
  5. Voer het runbook uit en richt Hybrid Runbook Worker de groep die runbooks wordt uitgevoerd en geverifieerd met behulp van het Uitvoeren als-account.
  6. Bekijk de taakstroom om te zien of deze de poging rapporteert om het certificaat te importeren in het lokale computeropslag, gevolgd door meerdere regels. Dit gedrag is afhankelijk van het aantal Automation-accounts dat u in uw abonnement definieert en de mate van succes van de verificatie.

Notitie

In het geval van onbeperkte toegang kan een gebruiker met inzendersrechten voor VM's of machtigingen om opdrachten uit te voeren op de Hybrid Worker-computer, het Uitvoeren als-certificaat van het Automation-account gebruiken vanaf de hybrid worker-machine, met behulp van andere bronnen, zoals Azure-cmdlets, waardoor kwaadwillende gebruikers toegang kunnen krijgen als inzender voor abonnementen. Dit kan de beveiliging van uw Azure-omgeving in gevaar brengen.

U wordt aangeraden de taken binnen het team te verdelen en de vereiste machtigingen/toegang te verlenen aan gebruikers op basis van hun taak. Geef geen onbeperkte machtigingen op voor de computer die als host voor de hybride runbook worker rol.

Werken met ondertekende runbooks op een Windows Hybrid Runbook Worker

U kunt een Windows Hybrid Runbook Worker om alleen ondertekende runbooks uit te voeren.

Belangrijk

Nadat u een configuratie hebt geconfigureerd Hybrid Runbook Worker om alleen ondertekende runbooks uit te voeren, kunnen niet-ondertekende runbooks niet worden uitgevoerd op de worker.

Notitie

PowerShell 7.x biedt geen ondersteuning voor ondertekende runbooks Windows Linux-Hybrid Runbook Worker.

Handtekeningcertificaat maken

In het volgende voorbeeld wordt een zelf-ondertekend certificaat gemaakt dat kan worden gebruikt voor het ondertekenen van runbooks. Met deze code maakt u het certificaat en exporteert u het, zodat Hybrid Runbook Worker het later kan importeren. De vingerafdruk wordt ook geretourneerd voor later gebruik bij het verwijzen naar het certificaat.

# 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

Certificaat importeren en werkmedewerkers configureren voor handtekeningvalidatie

Kopieer het certificaat dat u hebt gemaakt naar elk Hybrid Runbook Worker in een groep. Voer het volgende script uit om het certificaat te importeren en configureer de werkmedewerkers voor het gebruik van handtekeningvalidatie op 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"

Uw runbooks ondertekenen met behulp van het certificaat

Nu Hybrid Runbook Workers is geconfigureerd voor het gebruik van alleen ondertekende runbooks, moet u runbooks ondertekenen die moeten worden gebruikt op de Hybrid Runbook Worker. Gebruik de volgende PowerShell-voorbeeldcode om deze runbooks te ondertekenen.

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

Wanneer een runbook is ondertekend, moet u het importeren in uw Automation-account en publiceren met het handtekeningblok. Zie Een runbook importeren voor meer informatie over het importeren van runbooks.

Notitie

Gebruik alleen niet-gecodeerde tekens in uw runbookcode, inclusief opmerkingen. Het gebruik van tekens met diakritische tekens, zoals á of ñ, resulteert in een fout. Wanneer Azure Automation code downloadt, worden de tekens vervangen door een vraagteken en mislukt de ondertekening met het bericht 'Validatie van handtekeninghash mislukt'.

Werken met ondertekende runbooks op een Linux-Hybrid Runbook Worker

Als u wilt kunnen werken met ondertekende runbooks, moet een Linux-Hybrid Runbook Worker het uitvoerbare GPG-bestand op de lokale computer hebben.

Belangrijk

Nadat u een configuratie hebt geconfigureerd Hybrid Runbook Worker om alleen ondertekende runbooks uit te voeren, kunnen niet-ondertekende runbooks niet worden uitgevoerd op de worker.

U voert de volgende stappen uit om deze configuratie te voltooien:

  • Een GPG-sleutelring en keypair maken
  • De sleutelhanger beschikbaar maken voor de Hybrid Runbook Worker
  • Controleer of handtekeningvalidatie is aan
  • Een runbook ondertekenen

Notitie

PowerShell 7.x biedt geen ondersteuning voor ondertekende runbooks Windows Linux-Hybrid Runbook Worker.

Een GPG-sleutelring en keypair maken

Als u de GPG-sleutelring en keypair wilt maken, gebruikt u het Hybrid Runbook Worker nxautomation-account.

  1. Gebruik de sudo-toepassing om u aan te melden als het nxautomation-account.

    sudo su - nxautomation
    
  2. Zodra u nxautomation gebruikt, genereert u de GPG-sleutelpair. GPG leidt u door de stappen. U moet naam, e-mailadres, verlooptijd en wachtwoordzin verstrekken. Vervolgens wacht u totdat er voldoende entropie op de computer is om de sleutel te genereren.

    sudo gpg --generate-key
    
  3. Omdat de GPG-map is gegenereerd met sudo, moet u de eigenaar ervan wijzigen in nxautomation met behulp van de volgende opdracht.

    sudo chown -R nxautomation ~/.gnupg
    

De sleutelhanger beschikbaar maken voor de Hybrid Runbook Worker

Zodra de sleutelhanger is gemaakt, maakt u deze beschikbaar voor de Hybrid Runbook Worker. Wijzig het instellingenbestand home/nxautomation/state/worker.conf om de volgende voorbeeldcode op te nemen onder de bestandssectie [worker-optional] .

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

Controleer of handtekeningvalidatie is aan

Als handtekeningvalidatie is uitgeschakeld op de computer, moet u deze in- en uit te voeren met de volgende sudo-opdracht. Vervang <LogAnalyticsworkspaceId> door uw werkruimte-id.

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

Een runbook ondertekenen

Nadat u handtekeningvalidatie hebt geconfigureerd, gebruikt u de volgende GPG-opdracht om het runbook te ondertekenen.

gpg --clear-sign <runbook name>

Het ondertekende runbook heet <runbook name> .asc.

U kunt het ondertekende runbook nu uploaden naar Azure Automation uitvoeren als een normaal runbook.

Een runbook starten op een Hybrid Runbook Worker

In Een runbook starten in Azure Automation verschillende methoden voor het starten van een runbook beschreven. Bij het starten van een runbook op een Hybrid Runbook Worker de optie Uitvoeren op gebruikt waarmee u de naam van een Hybrid Runbook Worker opgeven. Wanneer een groep is opgegeven, haalt een van de werksters in die groep het runbook op en voert het uit. Als uw runbook deze optie niet opgeeft, Azure Automation het runbook op de gebruikelijke manier uitgevoerd.

Wanneer u een runbook in het Azure Portal, krijgt u de optie Uitvoeren op te zien waarvoor u Azure of Hybrid Worker. Als u Hybrid Worker selecteert, kunt u de Hybrid Runbook Worker selecteren in een vervolgkeuzekeuze.

Wanneer u een runbook start met behulp van PowerShell, gebruikt u de RunOn parameter met de cmdlet Start-AzAutomationRunbook. In het volgende voorbeeld wordt Windows PowerShell runbook met de naam Test-Runbook te starten op een Hybrid Runbook Worker met de naam MyHybridGroup.

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

Logboekregistratie

Logboeken worden lokaal opgeslagen op de volgende locatie om problemen op te lossen met runbooks die worden uitgevoerd op een hybride runbook worker:

  • Op Windows op C:\ProgramData\Microsoft\System Center\Orchestrator\<version>\SMA\Sandboxes voor gedetailleerde logboekregistratie van het taakruntimeproces. Statusgebeurtenissen van runbook-taak op hoog niveau worden geschreven naar het gebeurtenislogboek Application and Services Logs\Microsoft-Automation\Operations.

  • In Linux kunt u de hybrid worker-logboeken van de gebruiker vinden op /home/nxautomation/run/worker.log en runbook worker systeemlogboeken vindt u op /var/opt/microsoft/omsagent/run/automationworker/worker.log .

Volgende stappen