Öğretici: Verileri Media Services hesabında şifrelemek için Key Vault anahtarı kullanma

Media Services logosu v3


Uyarı

Azure Media Services 30 Haziran 2024'de kullanımdan kaldırılacaktır. Daha fazla bilgi için bkz. AMS Kullanımdan Kaldırma Kılavuzu.

Not

Yönetilen kimlikler yalnızca v3 API'sini kullanarak oluşturulan Media Services hesapları için kullanılabilir. v2 API'sini kullanıyorsanız ve yönetilen kimlikleri kullanmak istiyorsanız, lütfen v2'den v3'e geçiş yapın Media Services v2'den v3'e geçiş giriş.

Media Services'ın Key Vault'unuzdan bir anahtar kullanarak verileri şifrelemesini istiyorsanız Media Services hesabına Key Vault'a erişim izni verilmelidir. Media Services hesabı için bir Yönetilen Kimlik oluşturmak ve Media Services CLI kullanarak bu kimliğe Key Vault'unuza erişim vermek için aşağıdaki adımları izleyin.

Media Services hesabı, Yönetilen Kimlik ile Key Vault kullanır

Bu öğreticide 2020-05-01 Media Services API'sini kullanır.

Azure'da oturum açma

Bu makaledeki komutlardan herhangi birini kullanmak için önce kullanmak istediğiniz abonelikte oturum açmanız gerekir.

Azure'da oturum açın. Bu komutu kullandığınızda, kullanmak istediğiniz abonelik istenir.

az login

Aboneliği ayarlama

Çalışmak istediğiniz aboneliği ayarlamak için bu komutu kullanın.

CLI ile Azure aboneliğini ayarlama

Aşağıdaki komutta, Media Services hesabı için kullanmak istediğiniz Azure abonelik kimliğini belirtin.

az account set --subscription <subscriptionName>

Kaynak adları

Başlamadan önce, oluşturacağınız kaynakların adlarına karar verin. Özellikle testi tamamladıktan sonra kullanmayı planlamıyorsanız, küme olarak kolayca tanımlanabilir olmalıdır. Adlandırma kuralları birçok kaynak türü için farklıdır, bu nedenle tüm küçük harflerle devam etmek en iyisidir. Örneğin, kaynak grubu adınız için "mediatest1rg" ve depolama hesabı adınız için "mediatest1stor". Bu makaledeki her adım için aynı adları kullanın.

Aşağıdaki komutlarda bu adların başvuruldiğini göreceksiniz. İhtiyacınız olacak kaynakların adları şunlardır:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • yer

Not

Yukarıdaki kısa çizgiler yalnızca kılavuz sözcükleri ayırmak için kullanılır. Azure hizmetlerindeki kaynakları adlandırma tutarsızlığı nedeniyle, kaynaklarınızı adlandırırken kısa çizgi kullanmayın. Ayrıca bölge adını da oluşturmazsınız. Bölge adı Azure tarafından belirlenir.

Azure bölgelerini listeleme

Kullanılacak gerçek bölge adından emin değilseniz, bir liste almak için şu komutu kullanın:

Hesabınız için kullanılabilir bölgeleri listelemek için bu komutu kullanın.

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

Sıra

Aşağıdaki adımların her biri belirli bir sırada yapılır çünkü JSON yanıtlarındaki bir veya daha fazla değer dizinin sonraki adımında kullanılır.

Depolama hesabı oluşturma

Oluşturacağınız Media Services hesabının kendisiyle ilişkilendirilmiş bir depolama hesabı olmalıdır. Önce Media Services hesabı için depolama hesabını oluşturun. Sonraki adımlar için your-storage-account-name kullanacaksınız.

CLI ile Azure Depolama hesabı oluşturma

Azure Depolama hesabı oluşturmak için aşağıdaki komutları kullanın.

Depolama hesabı oluşturmak için önce bir konumda bir kaynak grubu oluşturmanız gerekir.

Kullanılabilir konumları listelemek için aşağıdaki komutu kullanın:

CLI ile kullanılabilir konumları listeleme

Kullanılabilir konumları listelemek için aşağıdaki komutu kullanın:

az account list-locations

CLI ile kaynak grubu oluşturma

Kaynak grubu oluşturmak için aşağıdaki komutu kullanın:

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

SKU seçme

Depolama hesabınız için bir SKU seçmeniz de gerekir. Depolama hesaplarını listeleyebilirsiniz.

Aşağıdaki listeden bir SKU seçin: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.

  • myStorageAccount, uzunluğu 24 karakterden az olan benzersiz bir adla değiştirin.
  • chooseLocation içinde çalışmak istediğiniz bölgeyle değiştirin.
  • chooseSKU tercih ettiğiniz SKU ile değiştirin.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Hizmet Sorumlusu (Yönetilen Kimlik) ile Media Services hesabı oluşturma

Şimdi Media Services hesabını bir Hizmet Sorumlusuyla oluşturun; aksi takdirde Yönetilen Kimlik olarak da bilinir.

Önemli

Komutunda --mi bayrağını kullanmayı unutmamanız önemlidir. Aksi takdirde, sonraki bir adım için principalId bulamazsınız.

Aşağıdaki Azure CLI komutu yeni bir Media Services hesabı oluşturur. Aşağıdaki değerleri değiştirin: your-media-services-account-nameyour-storage-account-nameve your-resource-group-name kullanmak istediğiniz adlarla değiştirin. komutu, zaten bir kaynak grubu ve depolama hesabı oluşturduğunuzu varsayar.

Media Services hesabına --mi-system-assigned bayrağıyla sistem tarafından atanan bir yönetilen kimlik verir.


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>

Örnek JSON yanıtı:

{
  "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 oluşturma

Key Vault'u oluşturun. Key Vault, medya verilerini şifrelemek için kullanılır. anahtarınızı oluşturmak ve sonraki adımlar için your-keyvault-name kullanacaksınız.

Bir Key Vault ve anahtar oluşturmak için aşağıdaki komutları kullanın. your-resource-group-name, your-keyvault-name ve your-key-name kullanmak istediğiniz değerlerle değiştirin. komutu, zaten bir kaynak grubu oluşturduğunuzu varsayar.

Not

--bypass AzureServices, bu erişim normalde Key Vault ağ ACL'leri tarafından engellendiğinde Media Services'ın (ve diğer Azure Hizmetlerinin) Key Vault'a erişmesine izin verir --enable-purge-protection Ayarlanmadıysa anahtarınızı kullanamazsınız.

Key Vault oluşturma


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

Örnek JSON yanıtı:

{
  "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": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
        "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"
}

Anahtarı oluşturma

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

Örnek JSON yanıtı:


{
  "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
}

Media Services Sistem Tarafından Atanan Yönetilen Kimlik'e Key Vault erişimi verme

Media Services Yönetilen Kimliğine Key Vault erişimi verin. İki komut vardır:

Media Services hesabının Yönetilen Kimliğini alma (gösterme)

Aşağıdaki ilk komut, komutu tarafından döndürülen JSON'da listelenen principalId Media Services hesabının Yönetilen Kimliği'ni gösterir.

Bu komut bir Media Services hesabının tüm özelliklerini gösterir.

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

Not

Media Services hesabına erişim rolleri atadıysanız, bu satır "storageAuthentication": "ManagedIdentity"döndürür.

Örnek JSON yanıtı:

{
  "encryption": {
    "keyVaultProperties": null,
    "type": "SystemKey"
  },
  "id": "/subscriptions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/resourceGroups/your-resource-group-name/providers/Microsoft.Media/mediaservices/your-media-services-account",
  "identity": {
    "principalId": "ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0",
    "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "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/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/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 ilkesini ayarlama

İkinci komut, Key Vault'a Sorumlu Kimliği erişimi verir. object-id önceki adımdan aldığınız principalId değerine ayarlayın.

Bu komutu kullanmak için Media Services principalIdobject-idolarak eklemeniz gerekir. henüz yapmadıysanız, bu kimliği almak için az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group> kullanın.

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

Örnek JSON yanıtı:

{
  "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'tan anahtarı kullanmak için Media Services'ı ayarlama

Media Services'ı oluşturduğunuz anahtarı kullanacak şekilde ayarlayın. key-identifier özelliğinin değeri, anahtar oluşturulduğunda çıkıştan gelir. Erişim denetimi değişikliklerini yaymak için gereken süre nedeniyle bu komut başarısız olabilir. Bu durumda, birkaç dakika sonra yeniden deneyin.

Bu komutu kullanmak için bir Key Vault ve bir anahtar oluşturmuş olmanız gerekir.

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>

Örnek JSON yanıtı:

{
  "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"
}

Doğrulama

Hesabın Müşteri Tarafından Yönetilen Anahtar kullanılarak şifrelendiğini doğrulamak için hesap şifreleme özelliklerini görüntüleyin:

CLI ile hesap şifrelemesini gösterme

Bu komut hakkında daha fazla bilgi için bkz.Media Services CLI başvurusu.

type özelliği CustomerKey göstermelidir ve currentKeyIdentifier müşterinin Key Vault'unda bir anahtarın yoluna ayarlanmalıdır.

Kaynakları temizleme

Oluşturduğunuz kaynakları kullanmayı planlamıyorsanız kaynak grubunu silin.

CLI ile kaynak grubunu silme

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

Yardım ve destek alma

Sorularınız için Media Services ile iletişime geçebilir veya aşağıdaki yöntemlerden birini kullanarak güncelleştirmelerimizi izleyebilirsiniz: