إرسال بريد إلكتروني من دفتر تشغيل التنفيذ التلقائي
يمكنك إرسال بريد إلكتروني من دفتر تشغيل من خلال SendGrid باستخدام PowerShell.
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
المتطلبات الأساسية
التحقق من مرسل SendGrid. إما المجال أو المرسل الفردي
مفتاح واجهة برمجة تطبيقات SendGridالخاص بك.
حساب Azure Automation مع هوية مدارة معينة من قبل مستخدم واحد على الأقل. لمزيد من المعلومات، راجع تمكين الهويات المُدارة.
الوحدات النمطية Az:
Az.Accounts
وAz.KeyVault
ويتم استيرادها إلى حساب التنفيذ التلقائي. لمزيد من المعلومات، راجع استيراد وحدات Az.تم تثبيت وحدة Azure Az PowerShell على جهازك. للتثبيت أو الترقية، راجع كيفية تثبيت وحدة Azure Az PowerShell module.
إنشاء Azure Key Vault
أنشئ نهج للوصول إلى Azure Key Vault وKey Vault التي تسمح لبيانات الاعتماد بالحصول على key Vault وتعيينها في key Vault المحددة.
سجّل الدخول إلى 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>
قم بتوفير قيمة مناسبة للمتغيرات أدناه ثم قم بتنفيذ البرنامج النصي.
$resourceGroup = "<Resource group>" $automationAccount = "<Automation account>" $region = "<Region>" $SendGridAPIKey = "<SendGrid API key>" $VaultName = "<A universally unique vault name>" $userAssignedManagedIdentity = "<User-assigned managed identity>"
إنشاء 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.
استخدم PowerShell cmdlet New-AzRoleAssignment لتعيين دور للهوية المدارة المعينة من قبل النظام.
New-AzRoleAssignment ` -ObjectId $SA_PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
تعيين دور إلى هوية مدارة تم تعيينها من قبل المستخدم.
New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "Reader"
بالنسبة للهوية المُدارة المعينة من قبل النظام، أظهر
ClientId
وسجل القيمة للاستخدام اللاحق.$UAMI.ClientId
إنشاء دفتر التشغيل لإرسال بريد إلكتروني
بعد إنشاء Key Vault وتخزين SendGrid
مفتاح API الخاص بك، حان الوقت لإنشاء دفتر التشغيل الذي يسترد مفتاح API ويرسل بريدًا إلكترونيًا. لنستخدم دفتر تشغيل يستخدم الهوية المُدارة المعينة من قبل النظام للمصادقة مع Azure لاسترداد السر من Azure Key Vault. سنتصل بدفتر التشغيل إرسال GridMailMessage. يمكنك تعديل البرنامج النصي لـ PowerShell المستخدم لسيناريوهات مختلفة.
سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى حساب التنفيذ التلقائي الخاص بك.
من صفحة حساب التنفيذ التلقائي المفتوحة، ضمن التنفيذ التلقائي للعمليات، حدد Runbooks
حدد + إنشاء دفتر تشغيل.
- قم بتسمية سجل التشغيل
Send-GridMailMessage
. - من القائمة المنسدلة "Runbook type"، حدد "PowerShell".
- حدد إنشاء.
- قم بتسمية سجل التشغيل
يتم إنشاء دفتر التشغيل وفتح صفحة تحرير PowerShell Runbook.
نسخ مثال 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
إذا كنت تريد تشغيل دفتر التشغيل للتنفيذ مع هوية مدارة معينة من قِبل النظام، اترك التعليمات البرمجية كما هي. إذا كنت تفضل استخدام الهوية المدارة المعينة من قِبل المستخدم، بعد ذلك:
- من الخط رقم 18، احذف
$AzureContext = (Connect-AzAccount -Identity).context
، - استبدله بـ
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
، و - أدخل معرف العميل الذي حصلت عليه سابقاً.
- من الخط رقم 18، احذف
حدد "Save"، ثم "Publish"، ثم "Yes" عند المطالبة.
للتحقق من تنفيذ دفتر التشغيل بنجاح، يمكنك اتباع الخطوات ضمن اختبار دفتر تشغيل أو بدء تشغيل.
إذا لم تشاهد في البداية رسالة البريد الإلكتروني الاختبارية، فتحقق من مجلدي "غير مهم"و"غير مرغوب فيه".
تنظيف الموارد
عند عدم الحاجة إلى دفتر التشغيل، حدده في قائمة دفتر التشغيل وحدد حذف.
حذف Key Vault باستخدام Remove-AzKeyVault cmdlet.
$VaultName = "<your KeyVault name>" $resourceGroup = "<your ResourceGroup name>" Remove-AzKeyVault -VaultName $VaultName -ResourceGroupName $resourceGroup
الخطوات التالية
- لإرسال بيانات مهمة دفتر التشغيل إلى مساحة عمل Log Analytics، راجع إعادة توجيه بيانات مهمة Azure Automation إلى سجلات Azure Monitor.
- لمراقبة مقاييس المستوى الأساسي والسجلات، راجع استخدام تنبيه لتشغيل دفتر تشغيل Azure Automation.