共用方式為


如何使用身分識別型資料存取搭配 SDK v1 連線至儲存體

重要事項

本文提供使用 Azure Machine Learning SDK v1 的相關信息。 SDK v1 自 2025 年 3 月 31 日起已被取代。 其支援將於 2026 年 6 月 30 日結束。 您可以在該日期之前安裝並使用 SDK v1。 您使用 SDK v1 的現有工作流程將在支援終止日期後繼續運作。 不過,如果產品發生架構變更,它們可能會面臨安全性風險或重大變更。

建議您在 2026 年 6 月 30 日之前轉換至 SDK v2。 如需 SDK v2 的詳細資訊,請參閱 什麼是 Azure Machine Learning CLI 和 Python SDK v2?SDK v2 參考

在本文中,您將瞭解如何透過適用於 Python 的 Azure Machine Learning SDK,使用身分識別型資料存取和 Azure Machine Learning 資料存放區連線到 Azure 上的記憶體服務。

一般而言,數據存放區會使用 認證型驗證 來驗證您是否有權存取記憶體服務。 資料存放區會在與工作區相關聯的金鑰保存庫中保留連線資訊,例如您的訂用帳戶識別碼和權杖授權。 當您建立使用 身分識別型數據存取的數據存放區時,您的 Azure 帳戶 (Microsoft Entra Token) 會確認您有權存取記憶體服務。 在身分識別型資料存取案例中,不會儲存任何驗證認證。 只有儲存體帳戶資訊會儲存在資料存放區中。

若要透過 Azure Machine Learning Studio UI 建立具有 身分識別型 資料存取的數據存放區,請流覽 使用 Azure Machine Learning Studio 連線到數據

若要建立使用 認證型 驗證的數據存放區,例如存取密鑰或服務主體,請造訪 連線到 Azure 上的記憶體服務

Azure Machine Learning 中的身分識別型資料存取

您可以在兩個情節中,您可以在 Azure Machine Learning 中套用身分識別型資料存取。 當您使用機密資料時,這些情節很適合身分識別型存取,而且您需要更細微的資料存取管理:

警告

自動化 ML 實驗不支援以身分識別為基礎的數據存取。

  • 存取儲存體服務
  • 使用私人資料來定型機器學習模型

存取儲存體服務

您可以使用 Azure Machine Learning 資料存放區或 Azure Machine Learning 資料集,透過身分識別型資料存取來連線到儲存體服務。

您的驗證認證會保留在資料存放區中,以確保您有權存取儲存體服務。 當這些認證透過資料存放區註冊時,具有工作區讀者角色的任何使用者都可以擷取它們。 這種存取規模對某些組織而言可能是一種安全顧慮。 在此資源深入了解工作區讀者角色。

當您使用身分識別型數據存取時,Azure Machine Learning 不會將您的認證保留在數據存放區中。 相反地,它會提示您輸入Microsoft Entra 令牌以進行數據存取驗證。 這種方法允許在儲存體層級進行資料存取管理,並維護認證安全性。

當您執行下列動作時,同樣的行為也適用:

附註

透過認證型驗證儲存的認證包括訂用帳戶標識碼、共用存取簽章(SAS) 令牌和記憶體存取密鑰。 它也包含服務主體資訊,例如用戶端標識碼和租使用者標識碼。

根據私人資料定型的模型

某些機器學習案例涉及使用私人資料定型模型。 在這類案例中,資料科學家必須在不公開機密輸入資料的情況下執行定型工作流程。 在此案例中,定型計算受控識別會驗證資料存取。 這種方法可讓儲存體管理員將儲存體 Blob 資料讀取者存取權授與定型計算用來執行定型作業的受控識別。 不需要將存取權授與個別資料科學家。 如需詳細資訊,請流覽在計算叢集上設定受控識別

先決條件

建立和註冊資料存放區

當您將 Azure 上的儲存體服務註冊為資料存放區時,將會自動建立該資料存放區,並將其註冊至特定工作區。 如需必要許可權類型的指引,請瀏覽 記憶體訪問許可權 。 您也可以手動建立您想要在沒有任何特殊權限的情況下連線的儲存體,而且只需要名稱。

如需了解如何通過虛擬網路連接到資料儲存空間的詳細資訊,請瀏覽 使用虛擬網路

在下列程式代碼範例中,請注意缺少驗證參數如 sas_tokenaccount_keysubscription_id,以及服務主體 client_id。 此省略指出 Azure Machine Learning 會使用身分識別型資料存取進行驗證。 建立資料存放區通常會以互動方式在筆記本中或透過工作室進行。 資料存取驗證會使用您的 Microsoft Entra 權杖。

附註

資料存放區名稱只由小寫字母、數字和底線組成。

Azure Blob 容器

若要將 Azure Blob 容器註冊作為資料存放區,請使用 register_azure_blob_container()

下列程式碼會建立 credentialless_blob 資料存放區、將其註冊至 ws 工作區,並將其指派給 blob_datastore 變數。 此資料存放區會存取 my_container_name 儲存體帳戶上的 my-account-name Blob 容器。

# 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

使用 register_azure_data_lake() 來註冊連線至 Azure Data Lake Storage Gen1 的資料存放區。

下列程式代碼範例會建立數據 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

使用 register_azure_data_lake_gen2() 來註冊連線至 Azure Data Lake Storage 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變數。 此資料存放區會存取位於 mydb SQL DB 伺服器中的 myserver 資料庫。

# 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 要求您必須有權存取對應的資料儲存體。

警告

不支援跨租使用者存取儲存帳戶。 如果您的情境需要跨租戶存取,請聯絡 Azure Machine Learning 數據支援小組的電子郵件別名 amldatasupport@microsoft.com,以取得自訂程式碼解決方案的協助。

身分識別型資料存取支援下列儲存體服務的連線。

  • Azure Blob 儲存體
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2
  • Azure SQL Database

若要存取這些儲存體服務,您必須至少具有對於儲存體帳戶的儲存體 Blob 資料讀取者存取權。 只有儲存體帳戶擁有者可以透過 Azure 入口網站變更您的存取層級

如果您不想使用使用者身分識別(Microsoft Entra ID),您也可以授與工作區受控系統識別 (MSI) 許可權來建立數據存放區。 若要這樣做,您必須擁有儲存體帳戶的擁有者權限,並且必須將 grant_workspace_access= True 參數新增至您的資料註冊方法。

如果您在遠端計算目標上定型模型而且想要存取資料以進行定型,則必須至少將儲存體服務中的「儲存體 Blob 資料讀取者」角色授與計算身分識別。 如需詳細資訊,請瀏覽 在計算叢集資源上設定受控識別

使用虛擬網路

根據預設,Azure Machine Learning 無法與位於防火牆後方或虛擬網路中的儲存體帳戶進行通訊。

您可以將儲存體帳戶設定為只允許從特定虛擬網路內進行存取。 此設定需要更多步驟,以確保資料不會在網路外外洩。 這種行為與認證型資料存取相同。 如需詳細資訊,請流覽 如何設定虛擬網路案例

如果您的儲存體帳戶具有虛擬網路設定,則會指定所需的身分識別類型和權限存取權。 例如,對於數據預覽和數據配置檔,虛擬網路設定會決定使用何種類型的身分識別來驗證數據存取。

  • 在只允許特定IP和子網存取記憶體的情況下,Azure Machine Learning 會使用工作區 MSI 來完成數據預覽和配置檔。

  • 如果您的儲存體是 ADLS Gen 2 或 Blob 且具有虛擬網路設定,客戶可以根據建立期間定義的資料存放區設定,使用使用者身分識別或工作區 MSI。

  • 如果虛擬網路設定為「允許受信任服務清單中的 Azure 服務存取此儲存體帳戶」,則會使用工作區 MSI。

使用儲存體中的資料

當您使用 Azure Machine Learning 與儲存體中的資料互動時,建議您使用 Azure Machine Learning 資料集

重要事項

使用身分識別型數據存取的數據集不支援用於自動化機器學習實驗。

資料集會將您的資料封裝為延遲評估的可取用物件,以進行機器學習工作 (例如定型)。 此外,使用資料集,您可以從 Azure 儲存體服務 (例如 Azure Blob 儲存體和 Azure Data Lake Storage) 將任何格式的檔案下載或掛接至計算目標。

若要建立資料集,您可以參考資料存放區中也使用身分識別型資料存取的路徑。

  • 如果您的基礎儲存體帳戶類型為 Blob 或 ADLS Gen 2,則您的使用者身分識別需要 Blob 讀者角色。
  • 如果您的基礎儲存體是ADLS Gen 1,您可以透過儲存體的存取控制清單 (ACL) 來設定權限。

在下列範例中, blob_datastore 已經存在,而且會使用以身分識別為基礎的數據存取。

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

您也可以略過資料存放區建立,並直接從儲存體 URL 建立資料集。 這種功能目前僅支援 Azure Blob 和 Azure Data Lake Storage Gen1 與 Gen2。 若要根據儲存體 URL 建立,只需要使用者身分識別即能進行驗證。

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

當您提交使用身分識別型資料存取所建立資料集的定型作業時,定型計算受控識別會用於資料存取驗證。 未使用您的 Microsoft Entra 權杖。 針對此案例,請確定已從儲存體服務將至少一個儲存體 Blob 資料讀取者角色授與計算的受控識別。 如需詳細資訊,請瀏覽 在計算叢集上設定受控識別

後續步驟