مشاركة عبر


إرسال بريد إلكتروني من دفتر تشغيل التنفيذ التلقائي

يمكنك إرسال بريد إلكتروني من دفتر تشغيل من خلال SendGrid باستخدام PowerShell.

في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.

المتطلبات الأساسية

إنشاء Azure Key Vault

أنشئ نهج للوصول إلى Azure Key Vault وKey Vault التي تسمح لبيانات الاعتماد بالحصول على key Vault وتعيينها في key Vault المحددة.

  1. سجّل الدخول إلى Azure بشكل تفاعلي باستخدام Connect-AzAccount cmdlet واتبع الإرشادات.

    # 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. قم بتوفير قيمة مناسبة للمتغيرات أدناه ثم قم بتنفيذ البرنامج النصي.

    $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 وتعيين الأذونات

    # 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
    

    للحصول على طرق أخرى لإنشاء Azure Key Vault وتخزين سر، راجع مقالة التشغيل السريع لـ Key Vault.

تعيين أذونات للهويات المدارة

تعيين أذونات إلى الهوية المُدارةالمناسبة. يمكن لدفتر التشغيل استخدام إما هوية مُدارة معينة من قبل نظام حساب التنفيذ التلقائي أو هوية مُدارة معينة من قبل المستخدم. يتم توفير خطوات لتعيين أذونات لكل هوية. تستخدم الخطوات أدناه PowerShell. إذا كنت تفضل استخدام المدخل، راجع تعيين أدوار Azure باستخدام مدخل Microsoft Azure.

  1. استخدم PowerShell cmdlet New-AzRoleAssignment لتعيين دور للهوية المدارة المعينة من قبل النظام.

    New-AzRoleAssignment `
        -ObjectId $SA_PrincipalId `
        -ResourceGroupName $resourceGroup `
        -RoleDefinitionName "Reader"
    
  2. تعيين دور إلى هوية مدارة تم تعيينها من قبل المستخدم.

    New-AzRoleAssignment `
        -ObjectId $UAMI.PrincipalId`
        -ResourceGroupName $resourceGroup `
        -RoleDefinitionName "Reader"
    
  3. بالنسبة للهوية المُدارة المعينة من قبل النظام، أظهر ClientId وسجل القيمة للاستخدام اللاحق.

    $UAMI.ClientId
    

إنشاء دفتر التشغيل لإرسال بريد إلكتروني

بعد إنشاء Key Vault وتخزين SendGrid مفتاح API الخاص بك، حان الوقت لإنشاء دفتر التشغيل الذي يسترد مفتاح API ويرسل بريدًا إلكترونيًا. لنستخدم دفتر تشغيل يستخدم الهوية المُدارة المعينة من قبل النظام للمصادقة مع Azure لاسترداد السر من Azure Key Vault. سنتصل بدفتر التشغيل إرسال GridMailMessage. يمكنك تعديل البرنامج النصي لـ PowerShell المستخدم لسيناريوهات مختلفة.

  1. سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى حساب التنفيذ التلقائي الخاص بك.

  2. من صفحة حساب التنفيذ التلقائي المفتوحة، ضمن التنفيذ التلقائي للعمليات، حدد Runbooks

  3. حدد + إنشاء دفتر تشغيل.

    1. قم بتسمية سجل التشغيل Send-GridMailMessage.
    2. من القائمة المنسدلة "Runbook type"، حدد "PowerShell".
    3. حدد إنشاء.

    إنشاء دفتر تشغيل

  4. يتم إنشاء دفتر التشغيل وفتح صفحة تحرير PowerShell Runbook. تحرير دفتر التشغيل

  5. نسخ مثال PowerShell التالي في الصفحة التحرير. تأكد من VaultName تحديد الاسم الذي اخترته لـ Key Vault.

    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. إذا كنت تريد تشغيل دفتر التشغيل للتنفيذ مع هوية مدارة معينة من قِبل النظام، اترك التعليمات البرمجية كما هي. إذا كنت تفضل استخدام الهوية المدارة المعينة من قِبل المستخدم، بعد ذلك:

    1. من الخط رقم 18، احذف$AzureContext = (Connect-AzAccount -Identity).context،
    2. استبدله بـ $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context، و
    3. أدخل معرف العميل الذي حصلت عليه سابقاً.
  7. حدد "Save"، ثم "Publish"، ثم "Yes" عند المطالبة.

للتحقق من تنفيذ دفتر التشغيل بنجاح، يمكنك اتباع الخطوات ضمن اختبار دفتر تشغيل أو بدء تشغيل.

إذا لم تشاهد في البداية رسالة البريد الإلكتروني الاختبارية، فتحقق من مجلدي "غير مهم"و"غير مرغوب فيه".

تنظيف الموارد

  1. عند عدم الحاجة إلى دفتر التشغيل، حدده في قائمة دفتر التشغيل وحدد حذف.

  2. حذف Key Vault باستخدام Remove-AzKeyVault cmdlet.

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

الخطوات التالية