تأمين إصدار المفتاح مع الأجهزة الظاهرية السرية كيفية الإرشاد

توضح المقالة أدناه كيفية تنفيذ إصدار مفتاح آمن من Azure Key Vault عند تشغيل تطبيقاتك باستخدام جهاز ظاهري سري يستند إلى AMD SEV-SNP. لمعرفة المزيد حول Secure Key Release وAzure Confidential Computing، انتقل إلى هنا.

يتطلب SKR أن يمر التطبيق الذي يقوم بتنفيذ SKR من خلال تدفق تصديق الضيف عن بعد باستخدام Microsoft Azure Attestation (MAA) كما هو موضح هنا.

التدفق العام والهندسة

للسماح ل Azure Key Vault بإصدار مفتاح لجهاز ظاهري سري مصدق عليه، هناك خطوات معينة يجب اتباعها:

  1. تعيين هوية مدارة إلى الجهاز الظاهري السري. يتم دعم الهوية المدارة المعينة من قبل النظام أو الهوية المدارة المعينة من قبل المستخدم.
  2. تعيين نهج الوصول إلى Key Vault لمنح الهوية المدارة إذن مفتاح "الإصدار". يسمح النهج للجهاز الظاهري السري بالوصول إلى Key Vault وتنفيذ عملية الإصدار. إذا كنت تستخدم Key Vault Managed HSM، فعين عضوية دور "مستخدم إصدار خدمة تشفير HSM المدارة".
  3. إنشاء مفتاح Key Vault الذي تم وضع علامة عليه على أنه قابل للتصدير ولديه نهج إصدار مقترن. يربط نهج إصدار المفتاح المفتاح بجهاز ظاهري سري مصدق عليه وأنه لا يمكن استخدام المفتاح إلا للغرض المطلوب.
  4. لتنفيذ الإصدار، أرسل طلب HTTP إلى Key Vault من الجهاز الظاهري السري. يجب أن يتضمن طلب HTTP تقرير النظام الأساسي السري للأجهزة الظاهرية المصدق عليها في نص الطلب. يتم استخدام تقرير النظام الأساسي المصدق عليه للتحقق من موثوقية حالة النظام الأساسي الموثوق به الممكن لبيئة التنفيذ، مثل الجهاز الظاهري السري. يمكن استخدام خدمة Microsoft Azure Attestation لإنشاء تقرير النظام الأساسي المصدق عليه وتضمينه في الطلب.

Diagram of the aforementioned operations, which we'll be performing.

نشر Azure Key Vault

إعداد AKV Premium أو AKV mHSM باستخدام مفتاح قابل للتصدير. اتبع الإرشادات التفصيلية من هنا لإعداد مفاتيح SKR القابلة للتصدير

Bicep

@description('Required. Specifies the Azure location where the key vault should be created.')
param location string = resourceGroup().location

@description('Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet.')
param tenantId string = subscription().tenantId

resource keyVault 'Microsoft.KeyVault/vaults@2021-11-01-preview' = {
  name: 'mykeyvault'
  location: location
  properties: {
    tenantId: tenantId
    sku: {
      name: 'premium'
      family: 'A'
    }
  }
}

قالب ARM

    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-11-01-preview",
      "name": "mykeyvault",
      "location": "[parameters('location')]",
      "properties": {
        "tenantId": "[parameters('tenantId')]",
        "sku": {
          "name": "premium",
          "family": "A"
        }
      }
    }

نشر جهاز ظاهري سري

اتبع إرشادات التشغيل السريع حول كيفية "نشر جهاز ظاهري سري باستخدام قالب ARM"

تمكين الهوية المدارة المحددة من جانب النظام

توفر الهويات المدارة لموارد Azure خدمات Azure بهوية مدارة تلقائيا في Microsoft Entra ID. يمكنك استخدام هذه الهوية للمصادقة على أي خدمة تدعم مصادقة Microsoft Entra، دون وجود بيانات اعتماد في التعليمات البرمجية الخاصة بك.

لتمكين الهوية المدارة المعينة من قبل النظام على CVM، يحتاج حسابك إلى تعيين دور مساهم الجهاز الظاهري. لا يلزم تعيينات دور دليل Microsoft Entra أخرى.

  1. سواء قمت بتسجيل الدخول إلى Azure محليًّا أو عبر مدخل Microsoft Azure، استخدم حسابًا مرتبطًا باشتراك Azure الذي يحتوي على الجهاز الظاهري.

  2. لتمكين الهوية المدارة المعينة من قبل النظام، قم بتحميل القالب في محرر، وحدد موقع Microsoft.Compute/virtualMachines المورد الذي يهمك وأضف الخاصية "identity" في نفس مستوى الخاصية name: vmName . استخدم بناء الجملة التالي:

       identity:{
         type: 'SystemAssigned'
       }
    
  3. resource أضف التفاصيل إلى القالب.

     resource confidentialVm 'Microsoft.Compute/virtualMachines@2021-11-01' = {
       name: vmName
       location: location
       identity:{
         type: 'SystemAssigned'
       }
       // other resource provider properties
     }