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 に、キー コンテナーに格納されているシークレットへのアクセス権を付与します。 アクセス権の付与に使用する方法は、キー コンテナーの構成方法によって異なります。

  • キー コンテナーに格納されているシークレット値。 この値は、キーを使用して取得できます。 詳細については、クイック スタート: Azure Key Vault との間でシークレットの設定と取得を行うに関する記事を参照してください。

    ヒント

    このクイック スタートのリンクは、Azure Key Vault Python SDK を使用する場合の手順です。 左側のナビゲーション領域の目次には、キーを設定する他の方法へのリンクがあります。

シークレットの取得

  1. モデルのトレーニング時に使用する Azure Machine Learning 環境に、azure-keyvault-secrets および azure-identity パッケージを追加します。 たとえば、環境の構築に使用する conda ファイルに追加します。

    この環境は、トレーニング ジョブがコンピューティング クラスターで実行する Docker イメージの構築に使用されます。

  2. トレーニング コードから、Azure Identity SDKKey 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)
    
  3. 認証後、Key Vault クライアント ライブラリを使用して、関連付けられているキーを指定することでシークレットを取得します。

    secret = secret_client.get_secret("secret-name")
    print(secret.value)
    

次のステップ

Azure Machine Learning Python SDK v2 を使用してトレーニング ジョブを送信する例については、Python SDK v2 を使用したモデルのトレーニングに関する記事を参照してください。