次の方法で共有


SDK v1 での ID ベースのデータ アクセスを使用してストレージに接続する

重要

この記事では、Azure Machine Learning SDK v1 の使用に関する情報を提供します。 SDK v1 は 2025 年 3 月 31 日の時点で非推奨となり、サポートは 2026 年 6 月 30 日に終了します。 SDK v1 は、その日付までインストールして使用できます。

2026 年 6 月 30 日より前に SDK v2 に移行することをお勧めします。 SDK v2 の詳細については、「 Azure Machine Learning Python SDK v2SDK v2 リファレンスとは」を参照してください。

この記事では、 Azure Machine Learning SDK for Python を使用して、ID ベースのデータ アクセスと Azure Machine Learning データストアを使用して Azure 上のストレージ サービスに接続する方法について説明します。

通常、データストアは 資格情報ベースの認証 を使用して、ストレージ サービスにアクセスするためのアクセス許可があることを確認します。 データストアは、サブスクリプション ID やトークン認可などの接続情報を、ワークスペースに関連付けられたキー コンテナーに格納します。 ID ベースのデータ アクセスを使用するデータストアを作成すると、Azure アカウント (Microsoft Entra トークン) によって、ストレージ サービスにアクセスするためのアクセス許可があることを確認します。 ID ベースのデータ アクセスのシナリオでは、認証の資格情報が保存されません。 ストレージ アカウント情報のみがデータストアに格納されます。

Azure Machine Learning Studio UI 経由で ID ベースの データ アクセス権を持つデータストアを作成するには、「Azure Machine Learning Studio を使用してデータに接続する」を参照してください。

アクセス キーやサービス プリンシパルなど、 資格情報ベースの 認証を使用するデータストアを作成するには、 Azure 上のストレージ サービスへの接続に関するページを参照してください。

Azure Machine Learning での ID ベースの データ アクセス

Azure Machine Learning では ID ベースのデータ アクセスを 2 つのシナリオで適用できます。 これらのシナリオは、機密データを扱っていて、より詳細なデータ アクセス管理が必要な場合の ID ベースのアクセスに適しています。

警告

自動 ML 実験では、ID ベースのデータ アクセスはサポートされていません。

  • ストレージ サービスへのアクセス
  • プライベート データを使用した機械学習モデルのトレーニング

ストレージ サービスへのアクセス

Azure Machine Learning データストアまたは Azure Machine Learning データセットを使用した ID ベースのデータ アクセスを使用してストレージ サービスに接続できます。

認証資格情報はデータストアに保持されるため、ストレージ サービスにアクセスするためのアクセス許可を持っていることが保証されます。 これらの資格情報がデータストアを介して登録されると、ワークスペースの閲覧者ロールを持つすべてのユーザーがそれらを取得できます。 このようなアクセスのスケールは、組織によってはセキュリティ上の問題になる場合があります。 このリソースのワークスペース閲覧者ロールの詳細を確認します。

ID ベースのデータ アクセスを使用する場合、Azure Machine Learning はデータストアに資格情報を保持しません。 代わりに、データ アクセス認証の Microsoft Entra トークンの入力を求められます。 このアプローチにより、ストレージ レベルでのデータ アクセス管理が可能になり、資格情報のセキュリティが維持されます。

同じ動作が、次の場合にも当てはまります。

注意

資格情報ベースの認証によって格納される資格情報には、サブスクリプション ID、Shared Access Signature (SAS) トークン、ストレージ アクセス キーが含まれます。 また、クライアント ID やテナント ID などのサービス プリンシパル情報も含まれます。

プライベート データでのモデル トレーニング

特定の機械学習のシナリオには、プライベート データを使用したトレーニング モデルが含まれます。 このような場合、データ サイエンティストは、機密入力データを公開せずにトレーニング ワークフローを実行する必要があります。 このシナリオでは、トレーニング コンピューティングのマネージド ID を使ってデータ アクセスを認証します。 このアプローチを使用すると、ストレージ管理者は、トレーニング コンピューティングでトレーニング ジョブを実行するために使用されるマネージド ID に「ストレージ BLOB データ閲覧者」アクセス権を付与できます。 個々のデータ サイエンティストにアクセス権を付与する必要はありません。 詳細については、コンピューティング クラスターでのマネージド ID の設定に関する記事を参照してください。

前提条件

データストアの作成と登録

Azure 上のストレージ サービスをデータストアとして登録すると、特定のワークスペースにそのデータストアが自動的に作成および登録されます。 必要なアクセス許可の種類に関するガイダンスについては、「 ストレージ アクセス 許可」を参照してください。 また、特別なアクセス許可を必要とせずに、名前を指定するだけで、接続先のストレージを手動で作成することもできます。

仮想ネットワークの背後にあるデータ ストレージに接続する方法の詳細については、「仮想ネットワークの操作」を参照してください。

次のコード サンプルでは、 sas_tokenaccount_keysubscription_id、サービス プリンシパル client_idなどの認証パラメーターがないことに注意してください。 この省略は、Azure Machine Learning での認証に ID ベースのデータ アクセスが使われることを示します。 データストアの作成は通常、ノートブックまたはスタジオを使用して対話的に行われます。 データ アクセス認証には Microsoft Entra トークンが使われます。

注意

データストア名は、小文字、数字、アンダースコアのみで構成する必要があります。

Azure BLOB コンテナー

Azure BLOB コンテナーをデータストアとして登録するには、register_azure_blob_container() を使用します。

次のコードでは、credentialless_blob データストアを作成して ws ワークスペースに登録し、それが blob_datastore 変数に割り当てられます。 このデータストアは、ストレージ アカウント my_container_name の BLOB コンテナー my-account-name にアクセスします。

# Create blob datastore without credentials.
blob_datastore = Datastore.register_azure_blob_container(workspace=ws,
                                                      datastore_name='credentialless_blob',
                                                      container_name='my_container_name',
                                                      account_name='my_account_name')

Azure Data Lake Storage Gen1

Azure Data Lake Storage Gen1 に接続するデータストアを登録するには、register_azure_data_lake() を使用します。

次のコード サンプルでは、 credentialless_adls1 データストアを作成し、 workspace ワークスペースに登録して、 adls_dstore 変数に割り当てます。 このデータストアは、adls_storage Azure Data Lake Storage アカウントにアクセスします。

# Create Azure Data Lake Storage Gen1 datastore without credentials.
adls_dstore = Datastore.register_azure_data_lake(workspace = workspace,
                                                 datastore_name='credentialless_adls1',
                                                 store_name='adls_storage')

Azure Data Lake Storage Gen2

Azure Data Lake Storage Gen2 に接続するデータストアを登録するには、register_azure_data_lake_gen2() を使用します。

次のコード サンプルでは、 credentialless_adls2 データストアを作成し、 ws ワークスペースに登録して、 adls2_dstore 変数に割り当てます。 このデータストアは、ストレージ アカウント tabular の ファイル システム myadls2 にアクセスします。

# Create Azure Data Lake Storage Gen2 datastore without credentials.
adls2_dstore = Datastore.register_azure_data_lake_gen2(workspace=ws, 
                                                       datastore_name='credentialless_adls2', 
                                                       filesystem='tabular', 
                                                       account_name='myadls2')

Azure SQL データベース

Azure SQL データベースの場合は、register_azure_sql_database() を使用して、Azure SQL データベース ストレージに接続するデータストアを登録します。

次のコード サンプルでは、 credentialless_sqldb データストアを作成して ws ワークスペースに登録し、 sqldb_dstore 変数に割り当てます。 このデータストアは、myserver SQL DB サーバー内のmydb データベースにアクセスします。

# Create a sqldatabase datastore without credentials
                                                       
sqldb_dstore = Datastore.register_azure_sql_database(workspace=ws,
                                                       datastore_name='credentialless_sqldb',
                                                       server_name='myserver',
                                                       database_name='mydb')                                                       
                                                   

ストレージ アクセスのためのアクセス許可

Azure 上のストレージ サービスに安全に接続できるようにするには、Azure Machine Learning では、対応するデータ ストレージにアクセスするためのアクセス許可が必要です。

警告

ストレージ アカウントへのテナント間アクセスはサポートされていません。 シナリオでテナント間アクセスが必要な場合は、 amldatasupport@microsoft.comの Azure Machine Learning データ サポート チームのエイリアスに連絡して、カスタム コード ソリューションのサポートを受けてください。

ID ベースのデータ アクセスでは、次のストレージ サービスのみへの接続がサポートされます。

  • Azure Blob Storage (アジュール・ブロブ・ストレージ)
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL データベース

これらのストレージ サービスにアクセスするには、少なくともストレージ BLOB データ閲覧者としての、ストレージ アカウントへのアクセス権が必要です。 Azure portal を使用してアクセス レベルを変更できるのは、ストレージ アカウントの所有者だけです。

ユーザー ID (Microsoft Entra ID) を使用しない場合は、データストアを作成するためのワークスペース マネージド システム ID (MSI) アクセス許可を付与することもできます。 これを行うには、ストレージ アカウントに対して所有者アクセス許可を持っている必要があります。また、データ登録メソッドに grant_workspace_access= True パラメーターを追加する必要があります。

リモート コンピューティング ターゲットでモデルをトレーニングし、トレーニング用のデータにアクセスする場合は、コンピューティング ID にストレージ サービスからのストレージ BLOB データ閲覧者ロールを少なくとも付与する必要があります。 詳細については、 コンピューティング クラスター リソースでのマネージド ID の設定に関する説明を 参照してください。

仮想ネットワークの使用

Azure Machine Learning の既定では、ファイアウォールの内側、または仮想ネットワーク内にあるストレージ アカウントとは通信できません。

特定の仮想ネットワークからのアクセスのみを許可するように、ストレージ アカウントを構成できます。 この構成では、データがネットワークの外に漏洩しないようにするため、さらに手順が必要になります。 この動作は、資格情報ベースのデータ アクセスの場合と同じです。 詳細については、「 仮想ネットワーク シナリオを構成する方法」を参照してください。

ストレージ アカウントに仮想ネットワークの設定がある場合は、それによって必要な ID の種類とアクセス許可が決まります。 たとえば、データ プレビューとデータ プロファイルの場合、仮想ネットワーク設定によって、データ アクセスの認証に使用される ID の種類が決まります。

  • 特定の IP とサブネットのみがストレージへのアクセスを許可されているシナリオでは、Azure Machine Learning はワークスペース MSI を使用してデータのプレビューとプロファイルを実現します。

  • ストレージが ADLS Gen 2 または BLOB で、仮想ネットワーク設定がある場合、お客様は作成時に定義されたデータストア設定に応じて、ユーザー ID またはワークスペース MSI を使用できます。

  • 仮想ネットワーク設定が "信頼できるサービスの一覧の Azure サービスにこのストレージ アカウントへのアクセスを許可する" の場合は、ワークスペース MSI が使用されます。

ストレージ内のデータを使用する

Azure Machine Learning でストレージ内のデータを操作する際は、Azure Machine Learning データセットのご使用をお勧めします。

重要

自動 ML 実験では、ID ベースのデータ アクセスを使用するデータセットはサポートされていません。

データセットを使用すると、データを機械学習タスク (トレーニングなど) 用に遅延評価された使用可能なオブジェクトにパッケージ化できます。 また、データセットを使用すると、Azure Blob Storage や Azure Data Lake Storage などの Azure ストレージ サービスからコンピューティング先に任意の形式のファイルをダウンロードまたはマウントできます。

データセットを作成するには、ID ベースのデータ アクセスも使用するデータストアからのパスを参照します。

  • 基となるストレージ アカウントの種類が BLOB または ADLS Gen 2 の場合、ユーザー ID には BLOB 閲覧者ロールが必要です。
  • 基となるストレージが ADLS Gen 1 の場合、ストレージのアクセス制御リスト (ACL) を使ってアクセス許可を設定できます。

次の例では、 blob_datastore は既に存在し、ID ベースのデータ アクセスを使用しています。

blob_dataset = Dataset.Tabular.from_delimited_files(blob_datastore,'test.csv') 

データストアの作成をスキップして、ストレージ URL からデータセットを直接作成することもできます。 現在、この機能では、Azure BLOB と Azure Data Lake Storage Gen1 および Gen2 のみがサポートされています。 ストレージ URL に基づいて作成する場合は、ユーザー ID のみが認証に必要です。

blob_dset = Dataset.File.from_files('https://myblob.blob.core.windows.net/may/keras-mnist-fashion/')

ID ベースのデータ アクセスを使って作成されたデータセットを使うトレーニング ジョブを送信すると、トレーニング コンピューティングのマネージド ID がデータ アクセス認証に使われます。 Microsoft Entra トークンが使用されていません。 このシナリオでは、コンピューティングのマネージド ID に、ストレージ サービスから「ストレージ BLOB データ閲覧者」以上のロールが付与されていることを確認します。 詳細については、「 コンピューティング クラスターでマネージド ID を設定する」を参照してください

次のステップ