使用受控識別驗證來擷取的佇列 Blob

將 Blob 排入佇列以從自己的儲存體帳戶擷取時,您可以使用受控識別作為 共用存取簽章的替代方案, (SAS) 權杖和 共用金鑰 驗證方法。 受控識別是擷取資料更安全的方式,因為它們不需要您與服務共用客戶 SAS 權杖或共用金鑰。 相反地,受控識別會指派給您的叢集,並授與用來擷取資料的儲存體帳戶讀取權限。 您可以隨時撤銷這些許可權。

注意

  • 此驗證方法僅適用于位於客戶擁有儲存體帳戶中的 Azure Blob 和 Azure Data Lake 檔案。 它不適用於使用 Kusto SDK 上傳的本機檔案。
  • 僅支援佇列擷取。 不支援使用 SDK API 的內嵌內嵌擷取Kusto 查詢語言和直接擷取。

將受控識別指派給叢集

遵循 受控識別概觀 ,將系統或使用者指派的受控識別新增至叢集。 如果您的叢集已指派所需的受控識別,請使用下列步驟複製其物件識別碼:

  1. 使用與包含叢集的 Azure 訂用帳戶相關聯的帳戶登入Azure 入口網站

  2. 流覽至您的叢集,然後選取 [ 身分識別]。

  3. 選取適當的身分識別類型、系統或使用者指派,然後複製必要身分識別的物件識別碼。

概觀頁面的螢幕擷取畫面,其中顯示系統受控識別物件識別碼

授與受控識別的許可權

  1. 在Azure 入口網站中,流覽至包含您要內嵌資料的儲存體帳戶。

  2. 選取[存取控制],然後選取 [+ 新增新增>角色指派]。

  3. 如果您想要使用儲存體帳戶的DeleteSourceOnSuccess來源選項,請授與受控識別儲存體 Blob 資料讀取器或儲存體Blob 資料參與者

重要

授與 擁有者參與者 許可權不足,且會導致擷取失敗。

[新增角色指派] 頁面的螢幕擷取畫面,其中顯示使用受控識別擷取的系統指派角色

在 Azure Data Explorer中設定受控識別原則

若要使用受控識別將資料內嵌到叢集中,請允許 NativeIngestion 所選受控識別的使用選項。 原生擷取是指使用 SDK 從外部來源擷取的能力。 如需可用 SDK 的詳細資訊,請參閱 用戶端程式庫

使用量受控識別原則可以在目標叢集的叢集或資料庫層級定義。

若要在資料庫層級套用原則,請執行下列命令:

.alter-merge database <database name> policy managed_identity "[ { 'ObjectId' : '<managed_identity_id>', 'AllowedUsages' : 'NativeIngestion' }]"

若要在叢集層級套用原則,請執行下列命令:

.alter-merge cluster policy managed_identity "[ { 'ObjectId' : '<managed_identity_id>', 'AllowedUsages' : 'NativeIngestion' }]"

將 取代 <managed_identity_id> 為必要受控識別的物件識別碼。

注意

您必須擁有 All Database Admin 叢集的許可權,才能編輯受控識別原則。

使用 Kusto SDK 使用受控識別來擷取的佇列 Blob

使用 Kusto SDK擷取資料時,使用 受控識別驗證 產生 Blob URI,方法是附加 ;managed_identity={objectId} 至未經授權的 Blob URI。 如果您使用叢集系統指派的受控識別來內嵌資料,您可以附加 ;managed_identity=system 至 Blob URI。

重要

您必須使用佇列擷取用戶端。 不支援在 Kusto 查詢語言 中使用具有直接擷取或內嵌擷取的受控識別。

以下是系統與使用者指派受控識別的 Blob URI 範例。

  • 系統指派: https://demosa.blob.core.windows.net/test/export.csv;managed_identity=system
  • 使用者指派: https://demosa.blob.core.windows.net/test/export.csv;managed_identity=6a5820b9-fdf6-4cc4-81b9-b416b444fd6d

重要

  • 使用受控識別搭配 C# SDK 擷取資料時,您必須在 中 BlobSourceOptions 提供 Blob 大小。 如果未設定大小,SDK 會嘗試藉由存取儲存體帳戶來填入 Blob 大小,導致失敗。
  • size參數應該是未經壓縮 (未壓縮) 資料大小,不一定是 Blob 大小。
  • 如果您不知道擷取時的大小,可能會提供零值 (0) 。 服務會嘗試使用受控識別進行驗證來探索大小。