Udostępnij za pośrednictwem


Samouczek: szyfrowanie danych na koncie usługi Media Services przy użyciu klucza usługi Key Vault

logo usługi Media Services w wersji 3


Ostrzeżenie

Usługa Azure Media Services zostanie wycofana 30 czerwca 2024 r. Aby uzyskać więcej informacji, zobacz przewodnik po wycofaniu usługi AMS.

Nuta

Tożsamości zarządzane są dostępne tylko dla kont usługi Media Services utworzonych przy użyciu interfejsu API w wersji 3. Jeśli używasz interfejsu API w wersji 2 i chcesz używać tożsamości zarządzanych, przeprowadź migrację z wersji 2 do wersji 3 Migrate from Media Services v2 to v3 introduction.

Jeśli chcesz, aby usługa Media Services szyfrować dane przy użyciu klucza z usługi Key Vault, konto usługi Media Services musi mieć przyznane dostępu do usługi Key Vault. Wykonaj poniższe kroki, aby utworzyć tożsamość zarządzaną dla konta usługi Media Services i udzielić tej tożsamości dostępu do usługi Key Vault przy użyciu interfejsu wiersza polecenia usługi Media Services.

konto usługi Media Services używa usługi Key Vault z tożsamości zarządzanej

W tym samouczku jest używany interfejs API usługi Media Services 2020-05-01.

Zaloguj się na platformie Azure

Aby użyć dowolnego polecenia w tym artykule, musisz najpierw zalogować się do subskrypcji, której chcesz użyć.

Zaloguj się do platformy Azure. Gdy używasz tego polecenia, zostanie wyświetlony monit o subskrypcję, której chcesz użyć.

az login

Ustawianie subskrypcji

Użyj tego polecenia, aby ustawić subskrypcję, z którą chcesz pracować.

Ustawianie subskrypcji platformy Azure przy użyciu interfejsu wiersza polecenia

W poniższym poleceniu podaj identyfikator subskrypcji platformy Azure, którego chcesz użyć dla konta usługi Media Services.

az account set --subscription <subscriptionName>

Nazwy zasobów

Przed rozpoczęciem zdecyduj o nazwach zasobów, które utworzysz. Powinny one być łatwe do zidentyfikowania jako zestaw, zwłaszcza jeśli nie planujesz ich używać po zakończeniu testowania. Reguły nazewnictwa różnią się w przypadku wielu typów zasobów, więc najlepiej trzymać się wszystkich małych liter. Na przykład "mediatest1rg" dla nazwy grupy zasobów i "mediatest1stor" dla nazwy konta magazynu. Użyj tych samych nazw dla każdego kroku w tym artykule.

Te nazwy zostaną wyświetlone w poniższych poleceniach. Nazwy potrzebnych zasobów to:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • lokalizacja

Nuta

Powyższe łączniki są używane tylko do oddzielania wyrazów wskazówek. Ze względu na niespójność nazw zasobów w usługach platformy Azure nie używaj łączników podczas nadawania nazw zasobom. Ponadto nazwa regionu nie jest tworzona. Nazwa regionu jest określana przez platformę Azure.

Wyświetlanie listy regionów platformy Azure

Jeśli nie masz pewności co do rzeczywistej nazwy regionu do użycia, użyj tego polecenia, aby uzyskać listę:

Użyj tego polecenia, aby wyświetlić listę regionów dostępnych dla twojego konta.

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

Kolejność

Każdy z poniższych kroków jest wykonywany w określonej kolejności, ponieważ co najmniej jedna wartość odpowiedzi JSON jest używana w następnym kroku w sekwencji.

Tworzenie konta magazynu

Utworzone konto usługi Media Services musi mieć skojarzone z nim konto magazynu. Najpierw utwórz konto magazynu dla konta usługi Media Services. Do kolejnych kroków użyjesz your-storage-account-name.

Tworzenie konta usługi Azure Storage przy użyciu interfejsu wiersza polecenia

Użyj następujących poleceń, aby utworzyć konto usługi Azure Storage.

Aby utworzyć konto magazynu, należy najpierw utworzyć grupę zasobów w lokalizacji.

Aby wyświetlić listę dostępnych lokalizacji, użyj następującego polecenia:

Wyświetlanie listy dostępnych lokalizacji za pomocą interfejsu wiersza polecenia

Aby wyświetlić listę dostępnych lokalizacji, użyj następującego polecenia:

az account list-locations

Tworzenie grupy zasobów przy użyciu interfejsu wiersza polecenia

Aby utworzyć grupę zasobów, użyj następującego polecenia:

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

Wybieranie jednostki SKU

Musisz również wybrać jednostkę SKU dla konta magazynu. Możesz wyświetlić listę kont magazynu.

Wybierz jednostkę SKU z następującej listy: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.

  • Zmień myStorageAccount na unikatową nazwę o długości mniejszej niż 24 znaki.
  • Zmień chooseLocation na region, w którym chcesz pracować.
  • Zmień chooseSKU na preferowaną jednostkę SKU.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Tworzenie konta usługi Media Services przy użyciu jednostki usługi (tożsamości zarządzanej)

Teraz utwórz konto usługi Media Services przy użyciu jednostki usługi, nazywanej inaczej tożsamością zarządzaną.

Ważny

Należy pamiętać o użyciu flagi --mi w poleceniu . W przeciwnym razie nie będzie można odnaleźć principalId dla późniejszego kroku.

Następujące polecenie interfejsu wiersza polecenia platformy Azure tworzy nowe konto usługi Media Services. Zastąp następujące wartości: your-media-services-account-nameyour-storage-account-namei your-resource-group-name nazwami, których chcesz użyć. W poleceniu założono, że utworzono już grupę zasobów i konto magazynu.

Zapewnia konto usługi Media Services tożsamość zarządzaną przypisaną przez system z flagą --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>

Przykładowa odpowiedź 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"
}

Tworzenie usługi Key Vault

Utwórz usługę Key Vault. Usługa Key Vault służy do szyfrowania danych multimedialnych. Użyjesz your-keyvault-name, aby utworzyć klucz i wykonać późniejsze kroki.

Użyj następujących poleceń, aby utworzyć usługę Key Vault i klucz. Zmień your-resource-group-name, your-keyvault-name i your-key-name na wartości, których chcesz użyć. W poleceniu założono, że grupa zasobów została już utworzona.

Nuta

--bypass AzureServices umożliwia usłudze Media Services (i innym usługom platformy Azure) dostęp do usługi Key Vault, gdy ten dostęp będzie normalnie blokowany przez listy ACL sieci usługi Key Vault --enable-purge-protection Jeśli nie został ustawiony, nie będzie można użyć klucza.

Tworzenie usługi Key Vault


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

Przykładowa odpowiedź 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": "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"
}

Tworzenie klucza

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

Przykładowa odpowiedź 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
}

Udzielanie tożsamości zarządzanej przypisanej przez system usługi Media Services do usługi Key Vault

Udziel tożsamości zarządzanej usługi Media Services dostępu do usługi Key Vault. Istnieją dwa polecenia:

Pobieranie (pokazywanie) tożsamości zarządzanej konta usługi Media Services

Pierwsze polecenie poniżej przedstawia tożsamość zarządzaną konta usługi Media Services, które jest principalId wymienione w kodzie JSON zwróconym przez polecenie .

To polecenie pokazuje wszystkie właściwości konta usługi Media Services.

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

Nuta

Jeśli przypisano role dostępu do konta usługi Media Services, ten wiersz zwróci "storageAuthentication": "ManagedIdentity".

Przykładowa odpowiedź JSON:

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

Ustawianie zasad usługi Key Vault

Drugie polecenie przyznaje identyfikatorowi podmiotu zabezpieczeń dostęp do usługi Key Vault. Ustaw object-id wartość principalId uzyskaną z poprzedniego kroku.

Aby użyć tego polecenia, należy dołączyć principalId usługi Media Services jako object-id. Jeśli jeszcze tego nie zrobiono, użyj az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group>, aby uzyskać ten identyfikator.

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

Przykładowa odpowiedź 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"
}

Ustawianie usługi Media Services do używania klucza z usługi Key Vault

Ustaw usługę Media Services, aby użyć utworzonego klucza. Wartość właściwości key-identifier pochodzi z danych wyjściowych podczas tworzenia klucza. To polecenie może zakończyć się niepowodzeniem ze względu na czas propagowania zmian kontroli dostępu. Jeśli tak się stanie, spróbuj ponownie po kilku minutach.

Aby użyć tego polecenia, musisz już utworzyć usługę Key Vault i klucz.

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>

Przykładowa odpowiedź 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"
}

Walidacja

Aby sprawdzić, czy konto jest szyfrowane przy użyciu klucza zarządzanego przez klienta, wyświetl właściwości szyfrowania konta:

Pokaż szyfrowanie konta za pomocą interfejsu wiersza polecenia

Aby uzyskać więcej informacji na temat tego polecenia, zobacz dokumentację interfejsu wiersza polecenia usługi Media Services .

Właściwość type powinna zawierać CustomerKey, a currentKeyIdentifier powinna być ustawiona na ścieżkę klucza w usłudze Key Vault klienta.

Czyszczenie zasobów

Jeśli nie planujesz używania utworzonych zasobów, usuń grupę zasobów.

Usuwanie grupy zasobów przy użyciu interfejsu wiersza polecenia

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

Uzyskiwanie pomocy i obsługi technicznej

Możesz skontaktować się z usługą Media Services z pytaniami lub postępować zgodnie z naszymi aktualizacjami, korzystając z jednej z następujących metod: