البرنامج التعليمي: استخدام مفتاح Key Vault لتشفير البيانات في حساب خدمات الوسائط

شعار Media Services v3


تحذير

سيتم إيقاف Azure Media Services في 30 يونيو 2024. لمزيد من المعلومات، راجع دليل إيقاف AMS .

ملاحظه

لا تتوفر الهويات المدارة إلا لحسابات خدمات الوسائط التي تم إنشاؤها باستخدام v3 API. إذا كنت تستخدم v2 API وترغب في استخدام الهويات المدارة، فالرجاء الترحيل من v2 إلى v3 الترحيل من Media Services v2 إلى مقدمة v3.

إذا كنت ترغب في أن تقوم خدمات الوسائط بتشفير البيانات باستخدام مفتاح من Key Vault، فيجب منح حساب خدمات الوسائط الوصول إلى Key Vault. اتبع الخطوات أدناه لإنشاء هوية مدارة لحساب خدمات الوسائط ومنح هذه الهوية حق الوصول إلى Key Vault باستخدام Media Services CLI.

يستخدم حساب خدمات الوسائط Key Vault مع الهوية المدارة

يستخدم هذا البرنامج التعليمي واجهة برمجة تطبيقات خدمات الوسائط 2020-05-01.

تسجيل الدخول إلى Azure

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

تسجيل الدخول إلى Azure. عند استخدام هذا الأمر، ستتم مطالبتك بالاشتراك الذي تريد استخدامه.

az login

تعيين الاشتراك

استخدم هذا الأمر لتعيين الاشتراك الذي تريد العمل معه.

تعيين اشتراك Azure باستخدام CLI

في الأمر التالي، قم بتوفير معرف اشتراك Azure الذي تريد استخدامه لحساب خدمات الوسائط.

az account set --subscription <subscriptionName>

أسماء الموارد

قبل البدء، حدد أسماء الموارد التي ستقوم بإنشائها. يجب أن يكون من السهل تحديدها كمخطط، خاصة إذا كنت لا تخطط لاستخدامها بعد الانتهاء من الاختبار. تختلف قواعد التسمية للعديد من أنواع الموارد لذلك من الأفضل الالتزام بجميع الأحرف الصغيرة. على سبيل المثال، "mediatest1rg" لاسم مجموعة الموارد و"mediatest1stor" لاسم حساب التخزين الخاص بك. استخدم الأسماء نفسها لكل خطوة في هذه المقالة.

سترى هذه الأسماء المشار إليها في الأوامر أدناه. أسماء الموارد التي ستحتاجها هي:

  • myRG
  • حساب التخزين الخاص بي
  • myAmsAccount
  • myKeyVault
  • myKey
  • مكان

ملاحظه

تستخدم الواصلات أعلاه فقط لفصل كلمات التوجيه. بسبب عدم تناسق تسمية الموارد في خدمات Azure، لا تستخدم الواصلات عند تسمية مواردك. أيضا، لا تقوم بإنشاء اسم المنطقة. يتم تحديد اسم المنطقة بواسطة Azure.

سرد مناطق Azure

إذا لم تكن متأكدا من اسم المنطقة الفعلي الذي يجب استخدامه، فاستخدم هذا الأمر للحصول على قائمة:

استخدم هذا الأمر لسرد المناطق المتوفرة لحسابك.

az account list-locations --query "[].{DisplayName:displayName, Name:name}" -o table

تسلسل

يتم إجراء كل خطوة من الخطوات أدناه بترتيب معين لأنه يتم استخدام قيمة واحدة أو أكثر من استجابات JSON في الخطوة التالية في التسلسل.

إنشاء حساب تخزين

يجب أن يكون لحساب خدمات الوسائط الذي ستقوم بإنشائه حساب تخزين مقترن به. إنشاء حساب التخزين لحساب خدمات الوسائط أولا. ستستخدم your-storage-account-name للخطوات اللاحقة.

إنشاء حساب Azure Storage باستخدام CLI

استخدم الأوامر التالية لإنشاء حساب Azure Storage.

لإنشاء حساب تخزين، يجب أولا إنشاء مجموعة موارد داخل موقع.

لسرد المواقع المتوفرة، استخدم الأمر التالي:

سرد المواقع المتوفرة باستخدام CLI

لسرد المواقع المتوفرة، استخدم الأمر التالي:

az account list-locations

إنشاء مجموعة موارد باستخدام CLI

لإنشاء مجموعة موارد، استخدم الأمر التالي:

az group create -n <resourceGroupName> --location chooseLocation

اختيار SKU

تحتاج أيضا إلى اختيار SKU لحساب التخزين الخاص بك. يمكنك سرد حسابات التخزين.

اختر SKU من القائمة التالية: Standard_LRS، Standard_GRS، Standard_RAGRS، Standard_ZRS، Premium_LRS، Premium_ZRS، Standard_GZRS، Standard_RAGZRS.

  • غير myStorageAccount إلى اسم فريد بطول أقل من 24 حرفا.
  • غير chooseLocation إلى المنطقة التي تريد العمل فيها.
  • قم بتغيير chooseSKU إلى SKU المفضل لديك.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

إنشاء حساب خدمات الوسائط باستخدام كيان الخدمة (الهوية المدارة)

الآن قم بإنشاء حساب خدمات الوسائط باستخدام كيان الخدمة، والمعروف باسم الهوية المدارة.

مهم

من المهم أن تتذكر استخدام علامة --mi في الأمر . وإلا فلن تتمكن من العثور على principalId لخطوة لاحقة.

يقوم أمر Azure CLI التالي بإنشاء حساب خدمات وسائط جديد. استبدل القيم التالية: your-media-services-account-nameyour-storage-account-name، your-resource-group-name بالأسماء التي تريد استخدامها. يفترض الأمر أنك قمت بالفعل بإنشاء مجموعة موارد وحساب تخزين.

يمنح حساب خدمات الوسائط هوية مدارة معينة من قبل النظام مع علامة --mi-system-assigned.


az ams account create --name <your-media-services-account-name> --resource-group <your-resource-group-name> --mi-system-assigned --storage-account <your-storage-account-name>

مثال على استجابة JSON:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/your-resource-group/providers/Microsoft.Media/mediaservices/your-media-services-account-name",
  "identity": {
    "principalId": "00000000-0000-0000-0000-00000000",
    "tenantId": "00000000-0000-0000-0000-00000000",
    "type": "SystemAssigned"
  },
  "location": "your-region",
  "mediaServiceId": "00000000-0000-0000-0000-00000000",
  "name": "your-media-services-account-name",
  "resourceGroup": "your-resource-group",
  "storageAccounts": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/mediatest1rg/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "System",
  "systemData": {
    "createdAt": "2021-05-14T21:25:12.3492071Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-14T21:25:12.3492071Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

إنشاء Key Vault

إنشاء Key Vault. يتم استخدام Key Vault لتشفير بيانات الوسائط. ستستخدم your-keyvault-name لإنشاء مفتاحك وللخطوات اللاحقة.

استخدم الأوامر التالية لإنشاء Key Vault ومفتاح. قم بتغيير your-resource-group-nameyour-keyvault-nameyour-key-name إلى القيم التي تريد استخدامها. يفترض الأمر أنك قمت بالفعل بإنشاء مجموعة موارد.

ملاحظه

يسمح --bypass AzureServices لخدمات الوسائط (وخدمات Azure الأخرى) بالوصول إلى Key Vault عندما يتم حظر هذا الوصول عادة بواسطة قوائم التحكم في الوصول لشبكة Key Vault --enable-purge-protection إذا لم يتم تعيينه، فلن تتمكن من استخدام مفتاحك.

إنشاء Key Vault


az keyvault create --resource-group <your-resource-group-name> --bypass AzureServices --enable-purge-protection --name <your-keyvault-name>

مثال على استجابة JSON:

{
  "id": "/subscriptions/the-subscription-id/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
  "location": "your-region",
  "name": "your-keyvault-name",
  "properties": {
    "accessPolicies": [
      {
        "applicationId": null,
        "objectId": "00000000-0000-0000-0000-000000000000",
        "permissions": {
          "certificates": [
            "get",
            "list",
            "delete",
            "create",
            "import",
            "update",
            "managecontacts",
            "getissuers",
            "listissuers",
            "setissuers",
            "deleteissuers",
            "manageissuers",
            "recover"
          ],
          "keys": [
            "get",
            "create",
            "delete",
            "list",
            "update",
            "import",
            "backup",
            "restore",
            "recover"
          ],
          "secrets": [
            "get",
            "list",
            "set",
            "delete",
            "backup",
            "restore",
            "recover"
          ],
          "storage": [
            "get",
            "list",
            "delete",
            "set",
            "update",
            "regeneratekey",
            "setsas",
            "listsas",
            "getsas",
            "deletesas"
          ]
        },
        "tenantId": "the-tenant-id"
      }
    ],
    "createMode": null,
    "enablePurgeProtection": true,
    "enableRbacAuthorization": null,
    "enableSoftDelete": true,
    "enabledForDeployment": false,
    "enabledForDiskEncryption": null,
    "enabledForTemplateDeployment": null,
    "networkAcls": null,
    "privateEndpointConnections": null,
    "provisioningState": "Succeeded",
    "sku": {
      "name": "standard"
    },
    "softDeleteRetentionInDays": 90,
    "tenantId": "the-tenant-id",
    "vaultUri": "https://your-keyvault-name.vault.azure.net/"
  },
  "resourceGroup": "your-resource-group-name",
  "tags": {},
  "type": "Microsoft.KeyVault/vaults"
}

إنشاء المفتاح

az keyvault key create --kty RSA --name your-key-name --vault-name your-keyvault-name

مثال على استجابة JSON:


{
  "attributes": {
    "created": "2021-05-12T22:41:29+00:00",
    "enabled": true,
    "expires": null,
    "notBefore": null,
    "recoveryLevel": "Recoverable",
    "updated": "2021-05-12T22:41:29+00:00"
  },
  "key": {
    "crv": null,
    "d": null,
    "dp": null,
    "dq": null,
    "e": "AQAB",
    "k": null,
    "keyOps": [
      "encrypt",
      "decrypt",
      "sign",
      "verify",
      "wrapKey",
      "unwrapKey"
    ],
    "kid": "https://your-keyvault-name.vault.azure.net/keys/your-key-name/your-subsription-id",
    "kty": "RSA",
    "n": "THISISTHEKEY51V9thvU7KsBUo/q1mEOcuxqt0qUcnx0IRO9YCL32fPjD/nnS8hKS5qkgUKfe2NRAtzVQ+elQAha65l7OsHu+TXmH/n/RPCgstpqSdCfiUR1JTmFYFRWdxCPwoKJMYaqlCEhn2Dkon3StTN0Id0sjRSA/YOLjgWU7YnVbntg5/048HgcTKn3PCWCuJc+P8hI/8Os5EAIpun62PffYwPX0/NIA1PY8wIB+sYEY0zxVGwWrCu7VgCo9xeqbMQEq5OenYmYpc+cjLozU/ohGhfWTpQU8d7fFypTHQraENDOFKEY",
    "p": null,
    "q": null,
    "qi": null,
    "t": null,
    "x": null,
    "y": null
  },
  "managed": null,
  "tags": null
}

منح نظام خدمات الوسائط الوصول إلى الهوية المدارة المعينة إلى Key Vault

امنح الوصول إلى الهوية المدارة لخدمات الوسائط إلى Key Vault. هناك أمران:

الحصول على (إظهار) الهوية المدارة لحساب خدمات الوسائط

يعرض الأمر الأول أدناه الهوية المدارة لحساب خدمات الوسائط وهو principalId المدرجة في JSON الذي تم إرجاعه بواسطة الأمر .

يعرض هذا الأمر كافة خصائص حساب خدمات الوسائط.

az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>

ملاحظه

إذا قمت بتعيين أدوار الوصول إلى حساب خدمات الوسائط، فسيرجع هذا السطر "storageAuthentication": "ManagedIdentity".

مثال على استجابة JSON:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
  "identity": {
    "principalId": "00000000-0000-0000-0000-000000000000",
    "tenantId": "00000000-0000-0000-0000-000000000000",
    "type": "SystemAssigned"  //Type will show "Managed Identity" if you have assigned a role to the Media Services account.
  },
  "location": "your-region",
  "mediaServiceId": "00000000-0000-0000-0000-000000000000",
  "name": "your-media-services-account",
  "resourceGroup": "your-resource-group-name",
  "storageAccounts": [
    {
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.Storage/storageAccounts/your-storage-account-name",
      "resourceGroup": "your-resource-group-name",
      "type": "Primary"
    }
  ],
  "storageAuthentication": "System", //If you have assigned access roles to the account, this line will return storageAuthentication": "ManagedIdentity"
  "systemData": {
    "createdAt": "2021-05-14T21:25:12.3492071Z",
    "createdBy": "you@example.com",
    "createdByType": "User",
    "lastModifiedAt": "2021-05-14T21:25:12.3492071Z",
    "lastModifiedBy": "you@example.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "type": "Microsoft.Media/mediaservices"
}

تعيين نهج Key Vault

يمنح الأمر الثاني الوصول إلى المعرف الأساسي إلى Key Vault. قم بتعيين object-id إلى قيمة principalId التي حصلت عليها من الخطوة السابقة.

لاستخدام هذا الأمر، يجب تضمين principalId خدمات الوسائط ك object-id. إذا لم تكن قد قمت بذلك بالفعل، فاستخدم az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group> للحصول على هذا المعرف.

az keyvault set-policy --name <your-keyvault-name> --object-id <principalId> --key-permissions decrypt encrypt get list unwrapKey wrapKey

مثال على استجابة JSON:

{
  "id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
  "location": "your-region",
  "name": "your-keyvault-name",
  "properties": {
    "accessPolicies": [
      {
        "applicationId": null,
        "objectId": "00000000-0000-0000-000000000000",
        "permissions": {
          "certificates": [
            "get",
            "list",
            "delete",
            "create",
            "import",
            "update",
            "managecontacts",
            "getissuers",
            "listissuers",
            "setissuers",
            "deleteissuers",
            "manageissuers",
            "recover"
          ],
          "keys": [
            "get",
            "create",
            "delete",
            "list",
            "update",
            "import",
            "backup",
            "restore",
            "recover"
          ],
          "secrets": [
            "get",
            "list",
            "set",
            "delete",
            "backup",
            "restore",
            "recover"
          ],
          "storage": [
            "get",
            "list",
            "delete",
            "set",
            "update",
            "regeneratekey",
            "setsas",
            "listsas",
            "getsas",
            "deletesas"
          ]
        },
        "tenantId": "00000000-0000-0000-000000000000"
      },
      {
        "applicationId": null,
        "objectId": "00000000-0000-0000-000000000000",
        "permissions": {
          "certificates": null,
          "keys": [
            "encrypt",
            "get",
            "list",
            "wrapKey",
            "decrypt",
            "unwrapKey"
          ],
          "secrets": null,
          "storage": null
        },
        "tenantId": "00000000-0000-0000-000000000000"
      }
    ],
    "createMode": null,
    "enablePurgeProtection": true,
    "enableRbacAuthorization": null,
    "enableSoftDelete": true,
    "enabledForDeployment": false,
    "enabledForDiskEncryption": null,
    "enabledForTemplateDeployment": null,
    "networkAcls": null,
    "privateEndpointConnections": null,
    "provisioningState": "Succeeded",
    "sku": {
      "name": "standard"
    },
    "softDeleteRetentionInDays": 90,
    "tenantId": "00000000-0000-0000-000000000000",
    "vaultUri": "https://your-keyvault-name.vault.azure.net/"
  },
  "resourceGroup": "your-resource-group-name",
  "tags": {},
  "type": "Microsoft.KeyVault/vaults"
}

تعيين خدمات الوسائط لاستخدام المفتاح من Key Vault

قم بتعيين خدمات الوسائط لاستخدام المفتاح الذي قمت بإنشائه. تأتي قيمة الخاصية key-identifier من الإخراج عند إنشاء المفتاح. قد يفشل هذا الأمر بسبب الوقت المستغرق لنشر تغييرات التحكم في الوصول. إذا حدث ذلك، أعد المحاولة بعد بضع دقائق.

لاستخدام هذا الأمر، يجب أن تكون قد أنشأت Key Vault ومفتاحا بالفعل.

az ams account encryption set --account-name <your-media-services-account-name> --resource-group <your-resource-group> --key-type CustomerKey --key-identifier https://<your-keyvault-name>.vault.azure.net/keys/<your-key-name>

مثال على استجابة JSON:

{
  "id": "/subscriptions/00000000-0000-0000-000000000000/resourceGroups/your-resource-group-name/providers/Microsoft.KeyVault/vaults/your-keyvault-name",
  "location": "your-region",
  "name": "your-keyvault-name",
  "properties": {
    "accessPolicies": [
      {
        "applicationId": null,
        "objectId": "00000000-0000-0000-000000000000",
        "permissions": {
          "certificates": [
            "get",
            "list",
            "delete",
            "create",
            "import",
            "update",
            "managecontacts",
            "getissuers",
            "listissuers",
            "setissuers",
            "deleteissuers",
            "manageissuers",
            "recover"
          ],
          "keys": [
            "get",
            "create",
            "delete",
            "list",
            "update",
            "import",
            "backup",
            "restore",
            "recover"
          ],
          "secrets": [
            "get",
            "list",
            "set",
            "delete",
            "backup",
            "restore",
            "recover"
          ],
          "storage": [
            "get",
            "list",
            "delete",
            "set",
            "update",
            "regeneratekey",
            "setsas",
            "listsas",
            "getsas",
            "deletesas"
          ]
        },
        "tenantId": "the-tenant-id"
      },
      {
        "applicationId": null,
        "objectId": "the-media-services-account-id",
        "permissions": {
          "certificates": null,
          "keys": [
            "encrypt",
            "get",
            "list",
            "wrapKey",
            "decrypt",
            "unwrapKey"
          ],
          "secrets": null,
          "storage": null
        },
        "tenantId": "the-tenant-id"
      }
    ],
    "createMode": null,
    "enablePurgeProtection": true,
    "enableRbacAuthorization": null,
    "enableSoftDelete": true,
    "enabledForDeployment": false,
    "enabledForDiskEncryption": null,
    "enabledForTemplateDeployment": null,
    "networkAcls": null,
    "privateEndpointConnections": null,
    "provisioningState": "Succeeded",
    "sku": {
      "name": "standard"
    },
    "softDeleteRetentionInDays": 90,
    "tenantId": "the-tenant-id",
    "vaultUri": "https://your-keyvault-name.vault.azure.net/"
  },
  "resourceGroup": "your-resource-group-name",
  "tags": {},
  "type": "Microsoft.KeyVault/vaults"
}

التحقق

للتحقق من تشفير الحساب باستخدام مفتاح مدار من قبل العميل، اعرض خصائص تشفير الحساب:

إظهار تشفير الحساب باستخدام CLI

لمزيد من المعلومات حول هذا الأمر، راجع مرجع خدمات الوسائط CLI.

يجب أن تظهر خاصية typeCustomerKey ويجب تعيين currentKeyIdentifier إلى مسار مفتاح في Key Vault الخاص بالعميل.

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

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

حذف مجموعة موارد باستخدام CLI

az group delete --name <your-resource-group-name>

الحصول على المساعدة والدعم

يمكنك الاتصال بخدمات الوسائط بأسئلة أو متابعة تحديثاتنا بإحدى الطرق التالية:

  • Q & A
  • تجاوز مكدس الذاكرة المؤقتة . ضع علامة على الأسئلة باستخدام azure-media-services.
  • @MSFTAzureMedia أو استخدم @AzureSupport لطلب الدعم.
  • افتح تذكرة دعم من خلال مدخل Microsoft Azure.