チュートリアル: Key Vault キーを使用して Media Services アカウントにデータを暗号化する

Media Services ロゴ v3


警告

Azure Media Services は、2024 年 6 月 30 日に廃止されます。 詳細については、「 AMS 廃止ガイド」を参照してください。

注意

マネージド ID は、v3 API を使用して作成された Media Services アカウントでのみ使用できます。 v2 API を使用していて、マネージド ID を使用する場合は、「Media Services v2 から v3 への移行の概要」の説明に従って、v2 から v3 に移行してください。

Media Services で Key Vault のキーを使用してデータを暗号化する場合は、Media Services アカウントに Key Vault への ''アクセス'' が許可されている必要があります。 下の手順に従って、Media Services アカウントのマネージド ID を作成し、Media Services CLI を使用してこの ID に Key Vault へのアクセスを許可します。

マネージド ID を使って、Media Services アカウントで Key Vault を使用する

このチュートリアルでは、2020-05-01 Media Services API を使用します。

Azure へのサインイン

この記事のいずれかのコマンドを使用するには、まず、使用するサブスクリプションにサインインする必要があります。

Azure にサインインします。 このコマンドを使用すると、使用するサブスクリプションの入力を求めるメッセージが表示されます。

az login

サブスクリプションの設定

このコマンドを使用して、使用するサブスクリプションを設定します。

CLI を使用して Azure サブスクリプションを設定する

次のコマンドで、Media Services アカウントで使用する Azure サブスクリプション ID を指定します。

az account set --subscription <subscriptionName>

リソース名

作業を開始する前に、作成するリソースの名前を決定します。 これらは、テストの完了後に使用する予定がない場合は特に、セットとして簡単に識別できる必要があります。 名前付けルールは多くのリソースの種類で異なるため、すべて小文字を使用することをお勧めします。 たとえば、リソース グループ名は "mediatest1rg"、ストレージ アカウント名は "mediatest1stor" にします。 この記事の各手順では、同じ名前を使用します。

これらの名前は、下のコマンドで参照されます。 必要なリソースの名前は次のとおりです。

  • myRG
  • myStorageAccount
  • myAmsAccount
  • myKeyVault
  • myKey
  • location

注意

上記のハイフンは、ガイダンス ワードを分離するためにのみ使用されています。 Azure サービスではリソースの名前付けに一貫性がないため、リソースに名前を付けるときにハイフンを使用しないでください。 また、リージョン名は作成しないでください。 リージョン名は Azure によって決定されます。

Azure リージョンを一覧表示する

使用する実際のリージョン名が不明な場合は、次のコマンドを使用して一覧を取得します。

このコマンドを使用すると、アカウントで使用可能なリージョンの一覧が表示されます。

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

シーケンス

JSON 応答から 1 つまたは複数の値がシーケンスの次の手順で使用されるため、下の各手順は特定の順序で行われます。

ストレージ アカウントの作成

作成する Media Services アカウントには、ストレージ アカウントが関連付けられている必要があります。 最初に、Media Services アカウントのストレージ アカウントを作成します。 以降のステップには、your-storage-account-name を使用します。

CLI を使用して Azure Storage アカウントを作成する

次のコマンドを使用して、Azure Storage アカウントを作成します。

ストレージ アカウントを作成するには、まず 1 つの場所にリソース グループを作成する必要があります。

利用可能な場所を一覧表示するには、次のコマンドを使用します。

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>

サービス プリンシパル (マネージド ID) を使用して Media Services アカウントを作成する

ここで、サービス プリンシパル (マネージド ID ともいう) を使用して、Media Services アカウントを作成します。

重要

コマンドでは --mi フラグを必ず使用してください。 そうしないと、後の手順で principalId を見つけることができなくなります。

新しい Media Services アカウントは、以下の Azure CLI コマンドで作成します。 your-media-services-account-nameyour-storage-account-nameyour-resource-group-name の値を、使う名前に置き換えます。 このコマンドは、リソース グループとストレージ アカウントが既に作成済みであることを前提としています。

これにより、--mi-system-assigned フラグが付いたシステム割り当てのマネージド ID が Media Services アカウントに付与されます。


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 を、使用する値に変更します。 このコマンドは、リソース グループが既に作成済みであることを前提としています。

Note

--bypass AzureServices を使用すると、通常は Key Vault ネットワーク ACL によってブロックされる、Media Services (およびその他の Azure サービス) による 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
}

Media Services システム割り当てマネージド ID に Key Vault へのアクセスを許可する

Media Services マネージド ID に Key Vault へのアクセスを許可します。 次の 2 つのコマンドがあります。

Media Services アカウントのマネージド ID を取得 (表示) する

下の最初のコマンドは、Media Services アカウントのマネージド ID を示しています。これは、コマンドによって返される JSON で一覧表示される principalId です。

このコマンドは、Media Services アカウントのすべてのプロパティを表示します。

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

Note

Media Services アカウントにアクセス ロールを割り当てた場合、この行は "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 ポリシーを設定する

2 番目のコマンドでは、プリンシパル ID に Key Vault へのアクセスを許可します。 object-id は、前の手順で取得した principalId の値に設定します。

このコマンドを使用するには、Media Services principalIdobject-id として使用する必要があります。 まだ行っていない場合は、az ams account show --name <your-media-services-account-name> --resource-group <your-resource-group> を使用してこの ID を取得します。

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 のキーを使用するように Media Services を設定する

作成したキーを使用するように Media Services を設定します。 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 を使用してアカウントの暗号化を表示する

このコマンドの詳細については、Media Services CLI リファレンスを参照してください。

type プロパティでは CustomerKey が示され、currentKeyIdentifier は顧客の Key Vault 内のキーのパスに設定されている必要があります。

リソースをクリーンアップする

作成したリソースを使用する予定がない場合は、そのリソース グループを削除します。

CLI を使用してリソース グループを削除する

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

ヘルプとサポート

Media Services に質問がある場合は、次のいずれかの方法で更新プログラムに従ってください。

  • Q & A
  • Stack Overflow。 質問に タグを付け、 を使用します azure-media-services
  • @MSFTAzureMedia するか 、@AzureSupport を使用してサポートを要求します。
  • Azure portalからサポート チケットを開きます。