チュートリアル: Key Vault キーを使用して Media Services アカウントにデータを暗号化する
警告
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 へのアクセスを許可します。
このチュートリアルでは、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-name
、your-storage-account-name
、your-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-name
、your-keyvault-name
、your-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 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からサポート チケットを開きます。