إدارة مفاتيح حساب التخزين باستخدام Key Vault وAzure PowerShell (قديم)

هام

يتم دعم Storage Account Keys المُدار من Key Vault (القديمة) كما هي مع عدم التخطيط لمزيد من التحديثات. يتم دعم Account SAS فقط بإصدار خدمة التخزين الموقعة لتعريفات SAS في موعد أقصاه 2018-03-28.

هام

نوصي باستخدام تكامل Azure Storage مع معرف Microsoft Entra، وهوية Microsoft المستندة إلى السحابة وخدمة إدارة الوصول. يتوفر تكامل Microsoft Entra ل Azure blobs وقوائم الانتظار، ويوفر الوصول المستند إلى الرمز المميز OAuth2 إلى Azure Storage (تماما مثل Azure Key Vault). يسمح لك معرف Microsoft Entra بمصادقة تطبيق العميل باستخدام تطبيق أو هوية مستخدم، بدلا من بيانات اعتماد حساب التخزين. يمكنك استخدام هوية مدارة من Microsoft Entra عند التشغيل على Azure. تزيل الهويات المُدارة الحاجة إلى مصادقة العميل وتخزين بيانات الاعتماد في أو مع التطبيق الخاص بك. استخدم هذا الحل فقط عندما لا تكون مصادقة Microsoft Entra ممكنة.

ويستخدم حساب تخزين Azure بيانات اعتماد تتضمن اسم حساب ومفتاح. ويتم إنشاء المفتاح تلقائيًا، ويُستخدم ككلمة مرور، بدلاً من أن يكون مفتاح تشفير. يدير Key Vault مفاتيح حساب التخزين عن طريق إعادة إنشائها بشكل دوري في حساب التخزين، ويوفر رموز توقيع وصول مشتركة للوصول المفوض إلى الموارد في حساب التخزين الخاص بك.

ويمكنك استخدام ميزة مفتاح حساب التخزين المُدار لـ Key Vault لسرد (مزامنة) المفاتيح مع حساب تخزين Azure، وإعادة إنشاء (تدوير) المفاتيح بشكل دوري. يمكنك إدارة مفاتيح حسابات التخزين وحسابات التخزين الكلاسيكية.

وعند استخدام ميزة مفتاح حساب التخزين المُدارة، ضع في اعتبارك النقاط التالية:

  • لا يتم إرجاع قيم المفاتيح أبدًا للاستجابة لمتصل.
  • يجب أن يدير Key Vault وحده مفاتيح حساب التخزين. احرص على عدم إدارة المفاتيح بنفسك وتجنب التدخل في عمليات Key Vault.
  • يجب أن تُدار مفاتيح حساب التخزين بواسطة كائن Key Vault واحد فقط. لا تسمح بإدارة المفاتيح من كائنات متعددة.
  • أعد إنشاء المفاتيح باستخدام Key Vault فقط. تجنب إعادة إنشاء مفاتيح حساب التخزين يدويًا.

هام

يقاطع مفتاح التجديد مباشرة في حساب التخزين إعداد حساب التخزين المداري ويمكن إبطال الرموز SAS المستخدمة كما يسبب انقطاعا.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

معرف التطبيق الرئيسي للخدمة

يوفر مستأجر Microsoft Entra لكل تطبيق مسجل مع كيان خدمة. ويعمل مدير الخدمة كمعرّف التطبيق، والذي يتم استخدامه أثناء إعداد التفويض للوصول إلى موارد Azure الأخرى عبر Azure RBAC.

Key Vault هو تطبيق Microsoft مسجل مسبقا في جميع مستأجري Microsoft Entra. يتم تسجيل Key Vault ضمن نفس معرف التطبيق في كل سحابة Azure.

المستأجرون السحابة مُعرّف التطبيق
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Azure العامة cfa8b339-82a2-471a-a3c9-0fc0be7a4093
غير ذلك Any cfa8b339-82a2-471a-a3c9-0fc0be7a4093

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

لإكمال هذا الدليل، يجب أولاً القيام بما يلي:

إدارة مفاتيح حساب التخزين

الاتصال بحساب Azure الخاص بك

قم بمصادقة جلسة PowerShell الخاصة بك باستخدام الأمر Connect-AzAccount.

Connect-AzAccount

إذا كان لديك العديد من اشتراكات Azure، فيمكنك سردها باستخدام الأمر Get-AzSubscription وحدد الاشتراك الذي ترغب في استخدامه مع أمر Set-AzContext.

Set-AzContext -SubscriptionId <subscriptionId>

تعيين المتغيرات

أولاً، قم بتعيين المتغيرات التي سيتم استخدامها بواسطة أوامر PowerShell في الخطوات التالية. تأكد من تحديث العناصر النائبة "YourResourceGroupName" و"YourStorageAccountName" و"YourKeyVaultName" وتعيين $keyVaultSpAppId إلى cfa8b339-82a2-471a-a3c9-0fc0be7a4093 (كما هو محدد في معرف التطبيق الأساسي للخدمة).

سنستخدم أيضا Azure PowerShell Get-AzContext و Get-AzStorageAccount cmdlets للحصول على معرف المستخدم وسياق حساب تخزين Azure الخاص بك.

$resourceGroupName = <YourResourceGroupName>
$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>
$keyVaultSpAppId = "cfa8b339-82a2-471a-a3c9-0fc0be7a4093"
$storageAccountKey = "key1" #(key1 or key2 are allowed)

# Get your User Id
$userId = (Get-AzContext).Account.Id

# Get a reference to your Azure storage account
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName

إشعار

بالنسبة لحساب التخزين الكلاسيكي، استخدم "الأساسي" و"الثانوي" $storageAccountKey
استخدم 'Get-AzResource -Name "ClassicStorageAccountName" -ResourceGroupName $resourceGroupName' بدلاً من of'Get-AzStorageAccount' لحساب التخزين الكلاسيكي

امنح Key Vault حق الوصول إلى حساب التخزين الخاص بك

قبل أن يتمكن Key Vault من الوصول إلى مفاتيح حساب التخزين وإدارتها، يجب عليك تفويض الوصول إلى حساب التخزين الخاص بك. يتطلب تطبيق Key Vault أذونات لـ سرد وإعادة إنشاء المفاتيح لحساب التخزين الخاص بك. يتم تمكين هذه الأذونات من خلال دور خدمة مُشغل مفتاح حساب التخزين المدمج في Azure.

قم بتعيين هذا الدور إلى مدير خدمة Key Vault، ما يحد من النطاق لحساب التخزين الخاص بك، باستخدام أمر Azure PowerShell New-AzRoleAssignment.

# Assign Azure role "Storage Account Key Operator Service Role" to Key Vault, limiting the access scope to your storage account. For a classic storage account, use "Classic Storage Account Key Operator Service Role."
New-AzRoleAssignment -ApplicationId $keyVaultSpAppId -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope $storageAccount.Id

عند تعيين الدور بنجاح، يجب أن ترى ناتجًا مشابهًا للمثال التالي:

RoleAssignmentId   : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso/providers/Microsoft.Authorization/roleAssignments/189cblll-12fb-406e-8699-4eef8b2b9ecz
Scope              : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
DisplayName        : Azure Key Vault
SignInName         :
RoleDefinitionName : storage account Key Operator Service Role
RoleDefinitionId   : 81a9662b-bebf-436f-a333-f67b29880f12
ObjectId           : 93c27d83-f79b-4cb2-8dd4-4aa716542e74
ObjectType         : ServicePrincipal
CanDelegate        : False

إذا تمت إضافة Key Vault بالفعل إلى الدور في حساب التخزين الخاص بك، فستتلقى "تعيين الدور موجود بالفعل."خطأ. يمكنك أيضًا التحقق من تعيين الدور، باستخدام صفحة "التحكم في الوصول (IAM)" لحساب التخزين في مدخل Microsoft Azure.

امنح حساب المستخدم الخاص بك إذنًا لحسابات التخزين المُدارة

استخدم أمر Azure PowerShell Set-AzKeyVaultAccessPolicy لتحديث نهج الوصول إلى Key Vault ومنح أذونات حساب التخزين لحساب المستخدم الخاص بك.

# Give your user principal access to all storage account permissions, on your Key Vault instance

Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName $userId -PermissionsToStorage get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge

لا تتوفر أذونات حسابات التخزين في صفحة "نهج الوصول" لحساب التخزين في مدخل Microsoft Azure.

إضافة حساب تخزين مُدار إلى مثيل Key Vault الخاص بك

استخدم أمر PowerShell Add-AzKeyVaultManagedStorageAccount لإنشاء حساب تخزين مُدار في مثيل Key Vault. ويحدد رمز التبديل -DisableAutoRegenerateKey عدم إعادة إنشاء مفاتيح حساب التخزين.

# Add your storage account to your Key Vault's managed storage accounts

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -DisableAutoRegenerateKey

عند الإضافة الناجحة لحساب التخزين بدون إعادة إنشاء المفتاح، يجب أن ترى ناتجًا مشابهًا للمثال التالي:

Id                  : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name          : kvcontoso
AccountName         : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name     : key1
Auto Regenerate Key : False
Regeneration Period : 90.00:00:00
Enabled             : True
Created             : 11/19/2018 11:54:47 PM
Updated             : 11/19/2018 11:54:47 PM
Tags                :

تمكين إعادة إنشاء المفاتيح

إذا كنت تريد أن يقوم Key Vault بإعادة إنشاء مفاتيح حساب التخزين بشكل دوري، يمكنك استخدام أمر Azure PowerShell Add-AzKeyVaultManagedStorageAccount لتعيين فترة إعادة الإنشاء. في هذا المثال، قمنا بتعيين فترة تجديد من 30 يوما. عندما حان الوقت للتدوير، يقوم Key Vault بإعادة إنشاء المفتاح غير النشط ثم تعيين المفتاح الذي تم إنشاؤه حديثا على أنه نشط. المفتاح المستخدم لإصدار رموز SAS المميزة هو المفتاح النشط.

$regenPeriod = [System.Timespan]::FromDays(30)

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -RegenerationPeriod $regenPeriod

عند الإضافة الناجحة لحساب التخزين مع إعادة إنشاء المفتاح، يجب أن ترى ناتجًا مشابهًا للمثال التالي:

Id                  : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name          : kvcontoso
AccountName         : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name     : key1
Auto Regenerate Key : True
Regeneration Period : 30.00:00:00
Enabled             : True
Created             : 11/19/2018 11:54:47 PM
Updated             : 11/19/2018 11:54:47 PM
Tags                :

الرموز المميزة لتوقيع الوصول المشترك

يمكنك أيضًا أن تطلب من Key Vault إنشاء الرموز المميزة لتوقيع الوصول المشترك. ويوفر توقيع الوصول المشترك وصولاً مفوضًا إلى الموارد في حساب التخزين الخاص بك. ويمكنك منح العملاء حق الوصول إلى الموارد في حساب التخزين الخاص بك بدون مشاركة مفاتيح حسابك. ويوفر لك توقيع الوصول المشترك طريقة آمنة لمشاركة موارد التخزين الخاصة بك دون المساس بمفاتيح حسابك.

وتكمل الأوامر الموجودة في هذا القسم الإجراءات التالية:

  • حدد تعريف توقيع الوصول المشترك للحساب.
  • قم بتعيين تعريف توقيع الوصول المشترك لوحدة التخزين المُدارة لـ Key Vault في المخزن. ويحتوي التعريف على نموذج URI لرمز توقيع الوصول المشترك الذي تم إنشاؤه. يحتوي التعريف على نوع توقيع الوصول المشترك account وهو صالح لـ "N" من الأيام.
  • تحقق من أن توقيع الوصول المشترك قد تم حفظه في خزينة المفاتيح كسر.

تعيين المتغيرات

أولاً، قم بتعيين المتغيرات التي سيتم استخدامها بواسطة أوامر PowerShell في الخطوات التالية. تأكد من تحديث <اسم حساب التخزين الخاص بك> و <اسم KeyVault الخاص بك >العناصر النائبة.

$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>

تحديد قالب تعريف توقيع الوصول المشترك

يستخدم Key Vault قالب تعريف SAS لإنشاء الرموز المميزة لتطبيقات العميل.

مثال على قالب تعريف SAS:

$sasTemplate="sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

معلمات SAS للحساب مطلوبة في قالب تعريف SAS لـ Key Vault

معلمة استعلام SAS ‏‏الوصف
SignedVersion (sv) مطلوب. تحدد إصدار خدمة التخزين الموقع لاستخدامه في تفويض الطلبات المقدمة مع هذا الحساب SAS. يجب التعيين على الإصدار 2015-04-05 أو الأحدث. Key Vault يدعم الإصدارات التي لا تتجاوز 2018-03-28
SignedServices (ss) مطلوب. تحدد الخدمات الموقعة التي يمكن الوصول إليها باستخدام حساب SAS. تشمل القيم المتاحة ما يلي:

كائن ثنائي كبير الحجم (b)
- قائمة الانتظار (q)
- الجدول (t)
- ملف (f)

يمكنك دمج القيم لتوفير الوصول إلى أكثر من خدمة واحدة. على سبيل المثال، يحدد ss=bf الوصول إلى نقطتي نهاية الملف وكائن ثنائي كبير الحجم.
SignedResourceTypes (srt) مطلوب. تحدد أنواع الموارد الموقعة التي يمكن الوصول إليها باستخدام حساب SAS.

- الخدمة (s): الوصول إلى واجهات برمجة التطبيقات على مستوى الخدمة (على سبيل المثال، الحصول على / تعيين خصائص الخدمة، الحصول على إحصائيات الخدمة، سرد الحاويات / قوائم الانتظار / الجداول / المشاركات)
- الحاوية (c): الوصول إلى واجهات برمجة التطبيقات على مستوى الحاوية (على سبيل المثال، إنشاء / حذف حاوية، إنشاء / حذف قائمة الانتظار، إنشاء / حذف جدول، إنشاء / حذف مشاركة، سرد النقط / الملفات والدلائل)
- العنصر (o): الوصول إلى واجهات برمجة التطبيقات على مستوى العنصر للنقاط الكبيرة ورسائل قائمة الانتظار وكيانات الجدول والملفات (على سبيل المثال، ضع Blob وQuery Entity وGet Messages وCreate File وما إلى ذلك)

يمكنك دمج القيم لتوفير الوصول إلى أكثر من نوع مورد. على سبيل المثال، يحدد srt=sc الوصول إلى موارد الخدمة والحاويات.
SignedPermission (sp) مطلوب. تحدد الأذونات الموقعة لحساب SAS. تكون الأذونات صالحة فقط إذا كانت تتطابق مع نوع مورد الموقع المحدد وإلا يتم تجاهلهم.

- قراءة (r): صالحة لجميع أنواع الموارد الموقعة (Service, Container, وObject). تصاريح قراءة الأذونات لنوع المورد المحدد.
- كتابة (w): صالحة لجميع أنواع الموارد الموقعة (Service, Container, وObject). تصاريح أذونات الكتابة لنوع المورد المحدد.
- حذف (d): صالح لأنواع موارد الحاوية والعنصر، باستثناء رسائل قائمة الانتظار.
- حذف دائم (y): صالح لنوع مورد عنصر ثنائي كبير الحجم فقط.
- القائمة (l): صالحة لأنواع موارد الخدمة والحاويات فقط.
- إضافة (a): صالح لأنواع موارد العناصر التالية فقط: رسائل قائمة الانتظار وكيانات الجدول والعناصر الثنائية كبيرة الحجم الملحقة.
- إنشاء (c): صالح لأنواع موارد العناصر التالية فقط: العناصر الثنائية كبيرة الحجم والملفات. يمكن للمستخدمين إنشاء ملفات أو كائنات ثنائية كبيرة الحجم جديدة، ولكن لا يمكنهم الكتابة فوق الملفات أو الكائنات الثنائية كبيرة الحجم الموجودة.
- تحديث (u): صالح لأنواع موارد العناصر التالية فقط: رسائل قائمة الانتظار وكيانات الجدول.
- العملية (p): صالحة لنوع مورد العنصر التالي فقط: رسائل قائمة الانتظار.
- العلامة (t): صالحة لنوع مورد العنصر التالي فقط: عناصر ثنائية كبيرة الحجم. يسمح بعمليات علامة كائن ثنائي كبير الحجم.
- عامل التصفية (f): صالح لنوع مورد العنصر التالي فقط: عناصر ثنائية كبيرة الحجم. تصاريح التصفية بواسطة علامة كائن ثنائي كبير الحجم.
- تعيين نهج الثبات (i): صالح لنوع مورد العنصر التالي فقط: عناصر ثنائية كبيرة الحجم. تعيين/حذف تصاريح نهج الثبات والتعليق القانوني على الكائن الثنائي كبير الحجم.
SignedProtocol (spr) اختياري. يحدِّد البروتوكول المسموح به لطلب تم إجراؤه باستخدام حساب SAS. القيم المحتملة هي HTTPS وHTTP (https,http) أو HTTPS فقط (https). القيمة الافتراضية هي https,http.

HTTP فقط ليست قيمة مسموح بها.

لمزيد من المعلومات بشأن حساب SAS، راجع: إنشاء حساب SAS

إشعار

يتجاهل Key Vault معلمات مدة البقاء مثل "Signed Expiry" و"Signed Start" والمعلمات المقدمة بعد إصدار 2018-03-28

قم بتعيين تعريف توقيع الوصول المشترك في Key Vault

استخدم Azure PowerShell Set-AzKeyVaultManagedStorageSasDefinition cmdlet لإنشاء تعريف توقيع وصول مشترك. يمكنك تقديم اسم من اختيارك للمعلمة -Name.

Set-AzKeyVaultManagedStorageSasDefinition -AccountName $storageAccountName -VaultName $keyVaultName -Name <YourSASDefinitionName> -TemplateUri $sasTemplate -SasType 'account' -ValidityPeriod ([System.Timespan]::FromDays(1))

التحقق من تعريف توقيع الوصول المشترك

يمكنك التحقق من أن تعريف توقيع الوصول المشترك قد تم تخزينه في Key Vault الخاص بك باستخدام أمر Azure PowerShell Get-AzKeyVaultSecret.

أولاً، ابحث عن تعريف توقيع الوصول المشترك في Key Vault الخاص بك.

Get-AzKeyVaultSecret -VaultName <YourKeyVaultName>

سيكون للسر المطابق لتعريف SAS الخاص بك هذه الخصائص:

Vault Name   : <YourKeyVaultName>
Name         : <SecretName>
...
Content Type : application/vnd.ms-sastoken-storage
Tags         :

يمكنك الآن استخدام الأمر Get-AzKeyVaultSecret مع المعلمات VaultName وName لعرض محتويات هذا السر.

$secretValueText = Get-AzKeyVaultSecret -VaultName <YourKeyVaultName> -Name <SecretName> -AsPlainText
Write-Output $secretValueText

سيُظهر ناتج هذا الأمر سلسلة تعريف SAS.

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