Megosztás a következőn keresztül:


E-mail küldése Automation-runbookból

A SendGrid használatával e-mailt küldhet egy runbookból a PowerShell használatával.

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

Azure Key Vault létrehozása;

Hozzon létre egy Azure Key Vault- és Key Vault-hozzáférési szabályzatot , amely lehetővé teszi a hitelesítő adatok számára a kulcstartó titkos kulcsainak lekérését és beállítását a megadott kulcstartóban.

  1. Jelentkezzen be interaktívan az Azure-ba a Connect-AzAccount parancsmag használatával, és kövesse az utasításokat.

    # 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>
    
  2. Adjon meg egy megfelelő értéket az alábbi változókhoz, majd hajtsa végre a szkriptet.

    $resourceGroup = "<Resource group>"
    $automationAccount = "<Automation account>"
    $region = "<Region>"
    $SendGridAPIKey = "<SendGrid API key>"
    $VaultName = "<A universally unique vault name>"
    
    $userAssignedManagedIdentity = "<User-assigned managed identity>"
    
  3. Key Vault létrehozása és engedélyek hozzárendelése

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

    Az Azure Key Vault létrehozásának és a titkos kódok tárolásának egyéb módjaiért tekintse meg a Key Vault rövid útmutatóit.

Engedélyek hozzárendelése felügyelt identitásokhoz

Engedélyek hozzárendelése a megfelelő felügyelt identitáshoz. A runbook használhatja az Automation-fiók rendszer által hozzárendelt felügyelt identitását vagy egy felhasználó által hozzárendelt felügyelt identitást. A lépések meg vannak adva az egyes identitásokhoz való engedélyek hozzárendeléséhez. Az alábbi lépések a PowerShellt használják. Ha inkább a portált szeretné használni, olvassa el az Azure-szerepkörök hozzárendelése az Azure Portal használatával című témakört.

  1. A New-AzRoleAssignment PowerShell-parancsmaggal szerepkört rendelhet a rendszer által hozzárendelt felügyelt identitáshoz.

    New-AzRoleAssignment `
        -ObjectId $SA_PrincipalId `
        -ResourceGroupName $resourceGroup `
        -RoleDefinitionName "Reader"
    
  2. Szerepkör hozzárendelése felhasználó által hozzárendelt felügyelt identitáshoz.

    New-AzRoleAssignment `
        -ObjectId $UAMI.PrincipalId`
        -ResourceGroupName $resourceGroup `
        -RoleDefinitionName "Reader"
    
  3. A rendszer által hozzárendelt felügyelt identitás esetében jelenítse meg ClientId és rögzítse a későbbi használat értékét.

    $UAMI.ClientId
    

Runbook létrehozása e-mail küldéséhez

Miután létrehozott egy Key Vaultot, és tárolta az SendGrid API-kulcsot, ideje létrehozni azt a runbookot, amely lekéri az API-kulcsot, és e-mailt küld. Használjunk egy runbookot, amely a rendszer által hozzárendelt felügyelt identitást használja az Azure-ral való hitelesítéshez, hogy lekérje a titkos kulcsot az Azure Key Vaultból. Meghívjuk a Send-GridMailMessage runbookot. A különböző forgatókönyvekhez használt PowerShell-szkriptet módosíthatja.

  1. Jelentkezzen be az Azure Portal-ra, és lépjen az Automation-fiókhoz.

  2. A megnyitott Automation-fióklap Folyamatautomatizálás területén válassza a Runbookok lehetőséget

  3. Válassza a + Runbook létrehozása lehetőséget.

    1. Nevezze el a runbookot Send-GridMailMessage.
    2. A Runbook típus legördülő listájában válassza a PowerShellt.
    3. Válassza a Létrehozás lehetőséget.

    Runbook létrehozása

  4. Létrejön a runbook, és megnyílik a PowerShell-runbook szerkesztése oldal. A runbook szerkesztése

  5. Másolja a következő PowerShell-példát a Szerkesztés lapra. Győződjön meg arról, hogy a VaultName kulcstartóhoz választott nevet adja meg.

    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 $bodyJson
    
  6. Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja meg a kódot. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:

    1. A 18. sorból távolítsa el $AzureContext = (Connect-AzAccount -Identity).contexta
    2. Cserélje le a $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
    3. Adja meg a korábban beszerzett ügyfél-azonosítót.
  7. Ha a rendszer kéri, válassza a Mentés, a Közzététel , majd az Igen lehetőséget.

A runbook sikeres végrehajtásának ellenőrzéséhez kövesse a Runbook tesztelése vagy a Runbook indítása című témakörben leírt lépéseket.

Ha kezdetben nem látja a teszt e-mail-címét, ellenőrizze a Levélszemét mappáit.

Az erőforrások eltávolítása

  1. Ha a runbookra már nincs szükség, jelölje ki a runbookok listájában, és válassza a Törlés lehetőséget.

  2. Törölje a Key Vaultot a Remove-AzKeyVault parancsmaggal.

    $VaultName = "<your KeyVault name>"
    $resourceGroup = "<your ResourceGroup name>"
    Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
    

Következő lépések