Azure Machine Learning でカスタマー マネージド キーを使用する

カスタマー マネージド キーの概念に関する記事では、Azure Machine Learning が提供する暗号化機能について説明しました。 ここでは、Azure Machine Learning でカスタマー マネージド キーを使用する方法について説明します。

カスタマー マネージド キーは、Azure Machine Learning が依存する次のサービスで使用されます。

サービス 用途
Azure Cosmos DB Azure Machine Learning のメタデータを格納します
Azure Cognitive Search Azure Machine Learning のワークスペース メタデータを格納します
Azure Storage アカウント Azure Machine Learning のワークスペース メタデータを格納します
Azure Container Instances トレーニング済みモデルを推論エンドポイントとしてホスティングします
Azure Kubernetes Service トレーニング済みモデルを推論エンドポイントとしてホスティングします

ヒント

  • Azure Cosmos DB、Cognitive Search、ストレージ アカウントは、同じキーを使用してセキュリティ保護されます。 Azure Kubernetes Service とコンテナー インスタンスには別のキーを使用できます。
  • Azure Cosmos DB、Cognitive Search、およびストレージ アカウントでカスタマー マネージド キーを使用するには、ワークスペースを作成するときにキーを指定します。 Azure コンテナー インスタンスと Kubernetes Service で使用されるキーは、それらのリソースを構成するときに指定します。

前提条件

  • Azure サブスクリプション。

  • 次の Azure リソース プロバイダーを登録する必要があります。

    リソース プロバイダー 必要な理由
    Microsoft.MachineLearningServices Azure Machine Learning ワークスペースの作成。
    Microsoft.Storage Azure ワークスペースの既定のストレージとしてストレージ アカウントが使用されます。
    Microsoft.KeyVault Azure Key Vault は、シークレットを格納するためにワークスペースによって使用されます。
    Microsoft.DocumentDB/databaseAccounts ワークスペースのメタデータをログに記録する Azure Cosmos DB インスタンス。
    Microsoft.Search/searchServices Azure Search では、ワークスペースのインデックス作成機能を提供します。

    リソースプロバイダーの登録については、「リソースプロバイダー登録エラーの解決」を参照してください。

制限事項

  • ワークスペースが依存するリソースのカスタマー マネージド キーは、ワークスペースの作成後には更新できません。
  • サブスクリプション内で Microsoft によって管理されるリソースの所有権をユーザーに譲渡することはできません。
  • ワークスペースを削除せずに、カスタマー マネージド キーに使用される Microsoft マネージド リソースを削除することはできません。

重要

カスタマー マネージド キーを使用する場合、サブスクリプションにリソースが追加されるため、サブスクリプションのコストが高くなります。 コストを見積もるには、Azure 料金計算ツールを使用してください。

Azure Key Vault を作成する

キー コンテナーを作成するには、キー コンテナーの作成に関するページを参照してください。 Azure Key Vault を作成するときに、論理的な削除消去保護を有効にする必要があります。

キーの作成

ヒント

キーの作成で問題が発生している場合、サブスクリプションに適用されている Azure ロールベースのアクセス制御が原因である可能性があります。 キーを作成するために使用しているセキュリティ プリンシパル (ユーザー、マネージド ID、サービス プリンシパルなど) に、key vault インスタンスの 共同作成者 ロールが割り当てられていることを確認します。 また、セキュリティ プリンシパルに作成取得削除、および消去の認可を付与するアクセス ポリシーをキー コンテナーで構成する必要があります。

ワークスペースにユーザー割り当てマネージド ID を使用する予定の場合は、マネージド ID にもこれらのロールとアクセス ポリシーを割り当てる必要があります。

詳細については、次の記事を参照してください。

  1. Azure portal で、キー コンテナー インスタンスを選択します。 次に、左側の [キー] を選択します。

  2. ページの上部から [+ 生成/インポート] を選択します。 次の値を使用してキーを作成します。

    • [オプション][生成] に設定します。
    • キーの [名前] を入力します。 名前は、使用予定を識別するものにする必要があります。 たとえば、「 my-cosmos-key 」のように入力します。
    • [キーの種類][RSA] に設定します。
    • [RSA キー サイズ] には少なくとも [3072] を 選択することをお勧めします。
    • [有効] を [はい] のままにします。

    必要に応じて、アクティブ化の日付、有効期限、タグを設定できます。

  3. [作成] を選択して、キーを作成します。

Azure Cosmos DB にキーへのアクセスを許可する

  1. キー コンテナーを構成するために、Azure portal でそれを選択し、左側のメニューから [アクセス ポリシー] を選択します。
  2. Azure Cosmos DB のアクセス許可を作成するために、ページの上部にある [+ 作成] を選択します。 [キーのアクセス許可] で、[取得][キーの折り返しを解除][キーを折り返す] の各アクセス許可を選択します。
  3. [プリンシパル] で、Azure Cosmos DB を検索して選択します。 このエントリのプリンシパル ID は、Azure Government 以外のすべてのリージョンで a232010e-820c-4083-83bb-3ace5fc29d0b です。 Azure Government では、プリンシパル ID は 57506a73-e302-42a9-b869-6f12d9ec29e9 です。
  4. [確認と作成][作成] の順に選択します。

カスタマー マネージド キーを使用するワークスペースを作成する

Azure Machine Learning ワークスペースを作成します。 ワークスペースを作成するときに、Azure Key Vaultキーを選択する必要があります。 ワークスペースの作成方法に応じて、これらのリソースを指定する方法は異なります。

  • Azure portal: ワークスペースを構成するときに、ドロップダウン入力ボックスからキー コンテナーとキーを選択します。

  • SDK、REST API、Azure Resource Manager テンプレート: キー コンテナーの Azure Resource Manager ID とキーの URL を指定します。 これらの値を取得するには、Azure CLI と次のコマンドを使用します。

    # Replace `mykv` with your key vault name.
    # Replace `mykey` with the name of your key.
    
    # Get the Azure Resource Manager ID of the key vault
    az keyvault show --name mykv --query id
    # Get the URL for the key
    az keyvault key show --vault-name mykv -n mykey --query key.kid
    

    キー コンテナーの ID 値は /subscriptions/{GUID}/resourceGroups/{resource-group-name}/providers/Microsoft.KeyVault/vaults/mykv のようになります。 キーの URL は https://mykv.vault.azure.net/keys/mykey/{GUID} のようになります。

カスタマー マネージド キーを使用したワークスペースの作成例については、次の記事を参照してください。

作成方法 [アーティクル]
CLI Azure CLI を使用してワークスペースを作成する
Azure portal/
Python SDK
ワークスペースの作成と管理
Azure Resource Manager
テンプレート
テンプレートを使用してワークスペースを作成する
REST API REST を使用して Azure ML リソースを作成、実行、削除する

ワークスペースが作成されると、お使いのサブスクリプションに Azure リソース グループが作成されます。 このグループは、ワークスペースのリソース グループに追加されます。 このリソース グループには、キーが使用される Microsoft が管理するリソースが含まれます。 リソース グループには、<Azure Machine Learning workspace resource group name><GUID> の形式を使用して名前が付けられます。 これには、Azure Cosmos DB インスタンス、Azure Storage アカウント、Azure Cognitive Search が含まれます。

ヒント

  • Azure Cosmos DB インスタンスの要求ユニットは、必要に応じて自動的にスケーリングされます。
  • Azure Machine Learning ワークスペースでプライベート エンドポイントを使用している場合、このリソース グループには Microsoft が管理する Azure Virtual Network も含まれます。 この VNet は、マネージド サービスとワークスペース間の通信をセキュリティで保護するために使用されます。 Microsoft により管理されるリソースで使用するための独自の VNet を指定することはできません。 また、仮想ネットワークを変更することはできません。 たとえば、使用される IP アドレスの範囲を変更することはできません。

重要

サブスクリプションにこれらのサービス用の十分なクォータがない場合、エラーが発生します。

警告

この Azure Cosmos DB インスタンス、またはこのグループに自動的に作成されたリソースが含まれるリソース グループを削除しないでください。 このリソース グループまたは Microsoft が管理するサービスを削除する必要がある場合は、それを使用する Azure Machine Learning ワークスペースを削除してください。 関連付けられているワークスペースが削除されると、リソース グループのリソースは削除されます。

カスタマー マネージド キーと Cosmos DB の詳細については、Azure Cosmos DB アカウントのカスタマー マネージド キーの構成に関する記事を参照してください。

Azure Container Instances

トレーニング済みのモデルを Azure コンテナー インスタンス (ACI) に デプロイ するときに、デプロイされるリソースをカスタマー マネージド キーを使用して暗号化できます。 キーの生成の詳細については、「カスタマー マネージド キーを使用してデータを暗号化する」を参照してください。

Azure Container Instance にモデルをデプロイするときにキーを使用するには、AciWebservice.deploy_configuration() を使用して新しいデプロイ構成を作成します。 次のパラメーターを使用して、キーの情報を指定します。

  • cmk_vault_base_url:キーが含まれるキー コンテナーの URL。
  • cmk_key_name:キーの名前です。
  • cmk_key_version:キーのバージョン。

デプロイ構成の作成と使用の詳細については、次の記事を参照してください。

カスタマー マネージド キーを ACI で使用する方法の詳細については、「カスタマー マネージド キーを使用してデータを暗号化する」を参照してください。

Azure Kubernetes Service

デプロイされた Azure Kubernetes Service リソースは、カスタマー マネージド キーを使用していつでも暗号化できます。 詳細については、Azure Kubernetes Service で独自のキーを取り込む方法に関するページを参照してください。

このプロセスでは、Kubernetes クラスター内のデプロイされた仮想マシンのデータと OS ディスクの両方を暗号化できます。

重要

このプロセスは、AKS K8s バージョン 1.17 以降でのみ機能します。

次のステップ