Azure Machine Learning ジョブで認証資格情報シークレットを使用する
適用対象: Python SDK azure-ai-ml v2 (現行)
ユーザー名やパスワードなどの認証情報はシークレットです。 たとえば、トレーニング データを問い合わせる目的で外部データベースに接続する場合、リモート ジョブ コンテキストにユーザー名とパスワードを渡す必要があります。 このような値をクリア テキストでトレーニング スクリプトにコーディングすると、シークレットが公開される可能性があるので安全ではありません。
Azure Key Vault を使用すると、シークレットを安全に格納および取得できます。 この記事では、コンピューティング クラスターで実行されているトレーニング ジョブから、キー コンテナーに格納されているシークレットを取得する方法について説明します。
重要
機械学習用の Azure Machine Learning Python SDK v2 と Azure CLI 拡張機能 v2 には、シークレットを設定または取得する機能はありません。 代わりに、この記事の情報では、Python 用 Azure Key Vault シークレット クライアント ライブラリを使用します。
前提条件
この記事の手順に従う前に、次の前提条件が満たされていることをご確認ください。
ヒント
このセクションの前提条件の多くでは、お使いの Azure サブスクリプション、またはリソースを含む Azure リソース グループへの共同作成者、所有者、または同等のアクセス権が必要です。 Azure 管理者に連絡し、これらのアクションを実行してもらう必要がある場合があります。
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。 無料版または有料版の Azure Machine Learning をお試しください。
Azure Machine Learning ワークスペース。 お持ちでない場合は、作業を開始するためのリソースの作成に関する記事の手順を使用して作成できます。
Azure Key Vault。 作業を開始するためのリソースの作成に関する記事を使用してワークスペースを作成した場合は、キー コンテナーが自動的に作成されています。 クイック スタート: キー コンテナーの作成に関する記事の情報を使用して、別のキー コンテナー インスタンスを作成することもできます。
ヒント
ワークスペースと同じキー コンテナーを使用する必要はありません。
(省略可能) マネージド ID を使用するように構成された Azure Machine Learning コンピューティング クラスター。 このクラスターは、システム割り当てまたはユーザー割り当てのどちらかのマネージド ID に対して構成できます。
ジョブがコンピューティング クラスター上で実行される場合は、コンピューティング クラスターのマネージド ID に、キー コンテナーに保存されているシークレットへのアクセス権を付与します。 また、ジョブがサーバーレス コンピューティング上で実行される場合は、ジョブに指定されたマネージド ID にシークレットへのアクセス権を付与します。 アクセス権の付与に使用する方法は、キー コンテナーの構成方法によって異なります。
- Azure ロールベースのアクセス制御 (Azure RBAC): Azure RBAC 用に構成されている場合は、キー コンテナーの Key Vault Secrets User ロールにマネージド ID を追加します。
- Azure Key Vault アクセス ポリシー: アクセス ポリシーを使用するように構成されている場合は、シークレットの取得操作を許可する新しいポリシーを追加し、マネージド ID に割り当てます。
キー コンテナーに格納されているシークレット値。 この値は、キーを使用して取得できます。 詳細については、クイック スタート: Azure Key Vault との間でシークレットの設定と取得を行うに関する記事を参照してください。
ヒント
このクイック スタートのリンクは、Azure Key Vault Python SDK を使用する場合の手順です。 左側のナビゲーション領域の目次には、キーを設定する他の方法へのリンクがあります。
シークレットの取得
トレーニング中にシークレットを取得するには、次の 2 つの方法があります。
- トレーニング ジョブが実行されるコンピューティング リソースに関連付けられているマネージド ID を使用する。
- ユーザーの代わりにコンピューティングにジョブを実行させることで、ユーザー自身の ID を使用する。
モデルのトレーニング時に使用する Azure Machine Learning 環境に、
azure-keyvault-secrets
およびazure-identity
パッケージを追加します。 たとえば、環境の構築に使用する conda ファイルに追加します。この環境は、トレーニング ジョブがコンピューティング クラスターで実行する Docker イメージの構築に使用されます。
トレーニング コードから、Azure Identity SDK と Key Vault クライアント ライブラリを使用してマネージド ID 資格情報を取得し、キー コンテナーに対して認証します。
from azure.identity import DefaultAzureCredential from azure.keyvault.secrets import SecretClient credential = DefaultAzureCredential() secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
認証後、Key Vault クライアント ライブラリを使用して、関連付けられているキーを指定することでシークレットを取得します。
secret = secret_client.get_secret("secret-name") print(secret.value)
関連するコンテンツ
Azure Machine Learning Python SDK v2 を使用してトレーニング ジョブを送信する例については、Python SDK v2 を使用したモデルのトレーニングに関する記事を参照してください。