Een e-mail verzenden vanuit am Automation-runbook
U kunt een e-mailbericht verzenden vanuit een runbook met SendGrid met behulp van PowerShell.
Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
Vereisten
SendGrid-verificatie van afzender. Domein of Eén afzender
Een Azure Automation account met ten minste één door de gebruiker toegewezen beheerde identiteit. Zie Beheerde identiteiten inschakelen voor meer informatie.
Az-modules:
Az.Accountsen geïmporteerd in hetAz.KeyVaultAutomation-account. Zie Az-modules importeren voor meer informatie.De Azure Az PowerShell-module die op uw computer is geïnstalleerd. Zie De Azure Az PowerShell-moduleinstalleren als u wilt installeren of upgraden.
Een Azure Key Vault maken
Maak een Azure Key Vault en Key Vault waarmee de referenties sleutelkluisgeheimen kunnen op halen en instellen in de opgegeven sleutelkluis.
Meld u interactief aan bij Azure met de cmdlet Verbinding maken-AzAccount en volg de instructies.
# Sign in to your Azure subscription $sub = Get-AzSubscription -ErrorAction SilentlyContinue if(-not($sub)) { Connect-AzAccount } # If you have multiple subscriptions, set the one to use # Select-AzSubscription -SubscriptionId <SUBSCRIPTIONID>Geef een geschikte waarde op voor de onderstaande variabelen en voer vervolgens het script uit.
$resourceGroup = "<Resource group>" $automationAccount = "<Automation account>" $region = "<Region>" $SendGridAPIKey = "<SendGrid API key>" $VaultName = "<A universally unique vault name>" $userAssignedManagedIdentity = "<User-assigned managed identity>"Machtigingen Key Vault maken en toewijzen
# Create the new key vault $newKeyVault = New-AzKeyVault ` -VaultName $VaultName ` -ResourceGroupName $resourceGroup ` -Location $region $resourceId = $newKeyVault.ResourceId # Convert the SendGrid API key into a SecureString $Secret = ConvertTo-SecureString -String $SendGridAPIKey ` -AsPlainText -Force Set-AzKeyVaultSecret -VaultName $VaultName ` -Name 'SendGridAPIKey' ` -SecretValue $Secret # Grant Key Vault access to the Automation account's system-assigned managed identity. $SA_PrincipalId = (Get-AzAutomationAccount ` -ResourceGroupName $resourceGroup ` -Name $automationAccount).Identity.PrincipalId Set-AzKeyVaultAccessPolicy ` -VaultName $vaultName ` -ObjectId $SA_PrincipalId ` -PermissionsToSecrets Set, Get # Grant Key Vault access to the user-assigned managed identity. $UAMI = Get-AzUserAssignedIdentity ` -ResourceGroupName $resourceGroup ` -Name $userAssignedManagedIdentity Set-AzKeyVaultAccessPolicy ` -VaultName $vaultName ` -ObjectId $UAMI.PrincipalId ` -PermissionsToSecrets Set, GetZie Key Vault-quickstarts voor andere manieren om een Azure Key Vault te maken en een geheim op te slaan.
Machtigingen toewijzen aan beheerde identiteiten
Wijs machtigingen toe aan de juiste beheerde identiteit. Het runbook kan de door het Automation-accountsysteem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit gebruiken. Er worden stappen gegeven om machtigingen aan elke identiteit toe te wijzen. In de onderstaande stappen wordt PowerShell gebruikt. Zie Azure-rollen toewijzen met behulp van de portal als u liever de Azure Portal.
Gebruik de PowerShell-cmdlet New-AzRoleAssignment om een rol toe te wijzen aan de door het systeem toegewezen beheerde identiteit.
New-AzRoleAssignment ` -ObjectId $SA_PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Wijs een rol toe aan een door de gebruiker toegewezen beheerde identiteit.
New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"Voor de door het systeem toegewezen beheerde identiteit moet u de waarde voor later gebruik
ClientIdtonen en registreren.$UAMI.ClientId
Het runbook maken om een e-mailbericht te verzenden
Nadat u een Key Vault hebt gemaakt en uw API-sleutel hebt opgeslagen, is het tijd om het runbook te maken dat de API-sleutel op haalt en een e-mailbericht SendGrid verzendt. Laten we een runbook gebruiken dat gebruikmaakt van de door het systeem toegewezen beheerde identiteit om te verifiëren bij Azure om het geheim op te halen uit Azure Key Vault. Het runbook krijgt de naam Send-GridMailMessage. U kunt het PowerShell-script wijzigen dat wordt gebruikt voor verschillende scenario's.
Meld u aan bij de Azure Portal navigeer naar uw Automation-account.
Selecteer op uw open Automation-accountpagina onder Procesautomatisering de optie Runbooks
Selecteer + Een runbook maken.
- Noem het runbook
Send-GridMailMessage. - Selecteer PowerShell in de vervolgkeuzelijst Runbooktype.
- Selecteer Maken.

- Noem het runbook
Het runbook wordt gemaakt en de pagina PowerShell-runbook bewerken wordt geopend.

Kopieer het volgende PowerShell-voorbeeld naar de pagina Bewerken. Zorg ervoor dat de
VaultNamede naam aangeeft die u voor uw Key Vault hebt gekozen.Param( [Parameter(Mandatory=$True)] [String] $destEmailAddress, [Parameter(Mandatory=$True)] [String] $fromEmailAddress, [Parameter(Mandatory=$True)] [String] $subject, [Parameter(Mandatory=$True)] [String] $content, [Parameter(Mandatory=$True)] [String] $ResourceGroupName ) # 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 $VaultName = "<Enter your vault name>" $SENDGRID_API_KEY = Get-AzKeyVaultSecret ` -VaultName $VaultName ` -Name "SendGridAPIKey" ` -AsPlainText -DefaultProfile $AzureContext $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $headers.Add("Authorization", "Bearer " + $SENDGRID_API_KEY) $headers.Add("Content-Type", "application/json") $body = @{ personalizations = @( @{ to = @( @{ email = $destEmailAddress } ) } ) from = @{ email = $fromEmailAddress } subject = $subject content = @( @{ type = "text/plain" value = $content } ) } $bodyJson = $body | ConvertTo-Json -Depth 4 $response = Invoke-RestMethod -Uri https://api.sendgrid.com/v3/mail/send -Method Post -Headers $headers -Body $bodyJsonAls 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:
- Verwijder vanaf regel 18
$AzureContext = (Connect-AzAccount -Identity).context, - Vervang deze door
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, en - Voer de client-id in die u eerder hebt verkregen.
- Verwijder vanaf regel 18
Selecteer Opslaan, Publiceren en vervolgens Ja wanneer u hier om wordt gevraagd.
Als u wilt controleren of het runbook wordt uitgevoerd, kunt u de stappen volgen onder Een runbook testen of Een runbook starten.
Als u uw test-e-mailbericht in eerste instantie niet ziet, controleert u de mappen Ongewenste e-mail en Spam.
Resources opschonen
Wanneer het runbook niet meer nodig is, selecteert u het in de lijst met runbook en selecteert u Verwijderen.
Verwijder de Key Vault met behulp van de cmdlet Remove-AzKeyVault.
$VaultName = "<your KeyVault name>" $resourceGroup = "<your ResourceGroup name>" Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
Volgende stappen
- Raadpleeg Azure Automation-taakgegevens doorsturen naar Azure Monitor-logboeken als u runbook-taakgegevens wilt verzenden naar uw Log Analytics-werkruimte.
- Raadpleeg Een waarschuwing gebruiken om een Azure Automation-runbook te activeren als u metrische gegevens en logboeken op basisniveau wilt bewaken.