Dela via


Självstudie: Använda en Key Vault-nyckel för att kryptera data till ett Media Services-konto

Media Services-logotyp v3


Varning

Azure Media Services dras tillbaka den 30 juni 2024. Mer information finns i AMS Retirement Guide.

Not

Hanterade identiteter är endast tillgängliga för Media Services-konton som skapats med hjälp av v3-API:et. Om du använder v2-API:et och vill använda hanterade identiteter migrerar du från v2 till v3 Migrera från Media Services v2 till v3-introduktion.

Om du vill att Media Services ska kryptera data med hjälp av en nyckel från nyckelvalvet måste Media Services-kontot beviljas åtkomst till Key Vault. Följ stegen nedan för att skapa en hanterad identitet för Media Services-kontot och ge den här identiteten åtkomst till ditt Key Vault med hjälp av Media Services CLI.

Media Services-konto använder Key Vault med en hanterad identitet

I den här självstudien används 2020-05-01 Media Services API.

Logga in på Azure

Om du vill använda något av kommandona i den här artikeln måste du först loggas in på den prenumeration som du vill använda.

Logga in på Azure. När du använder det här kommandot uppmanas du att ange den prenumeration som du vill använda.

az login

Ange prenumeration

Använd det här kommandot för att ange den prenumeration som du vill arbeta med.

Ange Azure-prenumerationen med CLI

I följande kommando anger du det Azure-prenumerations-ID som du vill använda för Media Services-kontot.

az account set --subscription <subscriptionName>

Resursnamn

Innan du börjar ska du bestämma namnen på de resurser som du ska skapa. De bör vara lätta att identifiera som en uppsättning, särskilt om du inte planerar att använda dem när du är klar med testningen. Namngivningsregler skiljer sig åt för många resurstyper, så det är bäst att hålla sig till alla gemener. Till exempel "mediatest1rg" för resursgruppens namn och "mediatest1stor" för ditt lagringskontonamn. Använd samma namn för varje steg i den här artikeln.

Du ser dessa namn som refereras i kommandona nedan. Namnen på de resurser du behöver är:

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • plats

Not

Bindestrecken ovan används endast för att avgränsa vägledningsord. På grund av inkonsekvensen i namngivning av resurser i Azure-tjänster ska du inte använda bindestreck när du namnger dina resurser. Dessutom skapar du inte regionnamnet. Regionnamnet bestäms av Azure.

Lista Azure-regioner

Om du inte är säker på vilket regionnamn som ska användas använder du det här kommandot för att hämta en lista:

Använd det här kommandot om du vill visa en lista över de regioner som är tillgängliga för ditt konto.

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

Sekvens

Vart och ett av stegen nedan görs i en viss ordning eftersom ett eller flera värden från JSON-svaren används i nästa steg i sekvensen.

Skapa ett lagringskonto

Det Media Services-konto som du skapar måste ha ett lagringskonto kopplat till det. Skapa lagringskontot för Media Services-kontot först. Du använder your-storage-account-name för efterföljande steg.

Skapa ett Azure Storage-konto med CLI

Använd följande kommandon för att skapa ett Azure Storage-konto.

Om du vill skapa ett lagringskonto måste du först skapa en resursgrupp på en plats.

Använd följande kommando för att visa tillgängliga platser:

Lista tillgängliga platser med CLI

Använd följande kommando för att visa tillgängliga platser:

az account list-locations

Skapa en resursgrupp med CLI

Använd följande kommando för att skapa en resursgrupp:

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

Välj en SKU

Du måste också välja en SKU för ditt lagringskonto. Du kan lista lagringskonton.

Välj en SKU i följande lista: Standard_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_LRS, Premium_ZRS, Standard_GZRS, Standard_RAGZRS.

  • Ändra myStorageAccount till ett unikt namn med en längd på färre än 24 tecken.
  • Ändra chooseLocation till den region som du vill arbeta i.
  • Ändra chooseSKU till önskad SKU.
az storage account create -n <myStorageAccount> -g <resourceGroup>  --location <chooseLocation> --sku <chooseSKU>

Skapa ett Media Services-konto med tjänstens huvudnamn (hanterad identitet)

Skapa nu Media Services-kontot med ett tjänsthuvudnamn, även kallat hanterad identitet.

Viktig

Det är viktigt att du kommer ihåg att använda flaggan --mi i kommandot . Annars kan du inte hitta principalId för ett senare steg.

Följande Azure CLI-kommando skapar ett nytt Media Services-konto. Ersätt följande värden: your-media-services-account-nameyour-storage-account-nameoch your-resource-group-name med de namn som du vill använda. Kommandot förutsätter att du redan har skapat en resursgrupp och ett lagringskonto.

Det ger Media Services-kontot en systemtilldelad hanterad identitet med flaggan --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>

Exempel på JSON-svar:

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

Skapa ett Nyckelvalv

Skapa Key Vault. Key Vault används för att kryptera mediedata. Du använder your-keyvault-name för att skapa din nyckel och för senare steg.

Använd följande kommandon för att skapa ett nyckelvalv och en nyckel. Ändra your-resource-group-name, your-keyvault-name och your-key-name till de värden som du vill använda. Kommandot förutsätter att du redan har skapat en resursgrupp.

Not

Med --bypass AzureServices kan Media Services (och andra Azure-tjänster) komma åt Key Vault när åtkomsten normalt blockeras av Key Vault-nätverkets ACL:er --enable-purge-protection Om den inte har angetts kan du inte använda nyckeln.

Skapa Key Vault


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

Exempel på JSON-svar:

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

Skapa nyckeln

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

Exempel på JSON-svar:


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

Ge Media Services System Tilldelad hanterad identitet åtkomst till Key Vault

Ge Media Services hanterad identitet åtkomst till Nyckelvalvet. Det finns två kommandon:

Hämta (visa) den hanterade identiteten för Media Services-kontot

Det första kommandot nedan visar den hanterade identiteten för Media Services-kontot som är den principalId som anges i JSON som returneras av kommandot.

Det här kommandot visar alla egenskaper för ett Media Services-konto.

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

Not

Om du har tilldelat åtkomstroller till Media Services-kontot returnerar den här raden "storageAuthentication": "ManagedIdentity".

Exempel på JSON-svar:

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

Ange Key Vault-principen

Det andra kommandot ger huvudnamns-ID åtkomst till Key Vault. Ange object-id till värdet för principalId som du fick från föregående steg.

Om du vill använda det här kommandot måste du inkludera Media Services-principalId som object-id. Om du inte redan har gjort det använder du az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group> för att hämta det här ID:t.

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

Exempel på JSON-svar:

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

Ange att Media Services ska använda nyckeln från Key Vault

Ange Att Media Services ska använda nyckeln som du har skapat. Värdet för egenskapen key-identifier kommer från utdata när nyckeln skapades. Det här kommandot kan misslyckas på grund av den tid det tar att sprida ändringar i åtkomstkontroll. Om detta händer kan du försöka igen efter några minuter.

Om du vill använda det här kommandot måste du redan ha skapat ett Key Vault och en nyckel.

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>

Exempel på JSON-svar:

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

Validering

Om du vill kontrollera att kontot är krypterat med hjälp av en kundhanterad nyckel kan du visa egenskaperna för kontokryptering:

Visa kontokryptering med CLI

Mer information om det här kommandot finns i Referens för Media Services CLI.

Egenskapen type ska visa CustomerKey och currentKeyIdentifier ska anges till sökvägen till en nyckel i kundens Nyckelvalv.

Rensa resurser

Om du inte planerar att använda de resurser som du skapade tar du bort resursgruppen.

Ta bort en resursgrupp med CLI

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

Få hjälp och support

Du kan kontakta Media Services med frågor eller följa våra uppdateringar med någon av följande metoder: