チュートリアル: Key Vault キーを使用して Media Services アカウントにデータを暗号化する
警告
Azure Media Services は、2024 年 6 月 30 日に廃止されます。 詳細については、AMS 提供終了ガイド
手記
マネージド ID は、v3 API を使用して作成された Media Services アカウントでのみ使用できます。 v2 API を使用していて、マネージド ID を使用する場合は、v2 から v3 に移行 Media Services v2 から v3 への移行の概要。
Media Services で Key Vault のキーを使用してデータを暗号化する場合は、Key Vault への
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
- 場所
手記
上記のハイフンは、ガイダンスワードを区切るためにのみ使用されます。 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 アカウントを作成します。
ストレージ アカウントを作成するには、最初に場所内にリソース グループを作成する必要があります。
使用可能な場所を一覧表示するには、次のコマンドを使用します。
CLI を使用して使用可能な場所を一覧表示する
使用可能な場所を一覧表示するには、次のコマンドを使用します。
az account list-locations
CLI を使用してリソース グループを作成する
リソース グループを作成するには、次のコマンドを使用します。
az group create -n <resourceGroupName> --location chooseLocation
SKU を選択する
また、ストレージ アカウントの SKU を選択する必要もあります。 ストレージ アカウントを一覧表示できます。
Standard_LRS、Standard_GRS、Standard_RAGRS、Standard_ZRS、Premium_LRS、Premium_ZRS、Standard_GZRS、Standard_RAGZRSの一覧から SKU を選択します。
-
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
を見つけることができません。
次の Azure CLI コマンドは、新しい Media Services アカウントを作成します。
your-media-services-account-name
your-storage-account-name
、your-resource-group-name
の値を使用する名前に置き換えます。 このコマンドは、リソース グループとストレージ アカウントが既に作成されていることを前提としています。
Media Services アカウントに、--mi-system-assigned
フラグを持つシステム割り当てマネージド ID が付与されます。
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-name
、your-keyvault-name
、your-key-name
を使用する値に変更します。 このコマンドは、リソース グループが既に作成されていることを前提としています。
手記
--bypass AzureServices
を使用すると、Media Services (およびその他の Azure Services) は、通常、そのアクセスが Key Vault ネットワーク ACL によってブロックされる場合に 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": "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"
}
キーを作成する
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>
手記
Media Services アカウントにアクセス ロールを割り当てた場合、この行は "storageAuthentication": "ManagedIdentity"
返されます。
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"
}
Key Vault ポリシーを設定する
2 番目のコマンドは、Key Vault へのプリンシパル ID アクセスを許可します。
object-id
を、前の手順で取得した principalId
の値に設定します。
このコマンドを使用するには、Media Services principalId
を object-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 からサポート チケットを開きます。