使用受控識別驗證外部數據表
外部數據表是參考儲存在 Azure 數據總管資料庫外部數據的架構實體。 外部數據表可以定義為參考 Azure 儲存體 或 SQL Server 中的數據,並支援各種驗證方法。
在本文中,您將瞭解如何建立使用受控識別進行驗證的外部數據表。
必要條件
受控識別有兩種:
選取下列其中一個索引標籤,以設定慣用的受控識別類型。
請遵循將使用者指派的身分識別新增至叢集的步驟,並儲存物件(主體)標識碼以供稍後使用。
執行 .alter-merge 原則 managed_identity 命令。 此命令會在叢集上設定 受控識別原則 ,以允許搭配外部數據表使用受控識別。 將 取代 <objectId>
為 Object (principal) 識別碼。
.alter-merge cluster policy managed_identity ```[
{
"ObjectId": "<objectId>",
"AllowedUsages": "ExternalTable"
}
]```
注意
若在特定資料庫上設定原則,請使用 database <DatabaseName>
而非 cluster
。
請遵循將系統指派的身分識別新增至叢集的步驟。
執行下列 .alter-merge 原則 managed_identity 命令。 此命令會在叢集上設定 受控識別原則 ,以允許搭配外部數據表使用受控識別。
.alter-merge cluster policy managed_identity ```[
{
"ObjectId": "system",
"AllowedUsages": "ExternalTable"
}
]```
注意
若在特定資料庫上設定原則,請使用 database <DatabaseName>
而非 cluster
。
2 - 授與受控識別外部資源許可權
受控識別必須具有外部資源的許可權,才能成功進行驗證。
選取相關外部資源的索引標籤,並指派必要的許可權。
下表顯示外部資源的必要許可權。 若要從外部資源匯入或查詢數據,請授與受控識別讀取許可權。 若要將數據匯出至外部資源,請授與受控識別寫入許可權。
外部數據存放區 |
讀取權限 |
寫入權限 |
授與許可權 |
Azure Blob 儲存體 |
儲存體 Blob 資料讀者 |
儲存體 Blob 資料參與者 |
指派 Azure 角色 |
Data Lake Storage Gen2 |
儲存體 Blob 資料讀者 |
儲存體 Blob 資料參與者 |
指派 Azure 角色 |
Data Lake Storage Gen1 |
讀取者 |
參與者 |
指派 Azure 角色 |
若要從 SQL 資料庫匯入或查詢數據,請授與受控識別數據表 SELECT 許可權。 若要將數據匯出至 SQL 資料庫,請授與受控識別 CREATE、UPDATE 和 INSERT 許可權。 若要深入瞭解,請參閱 許可權。
若要從 Cosmos DB 資料庫匯入或查詢數據,請授與受控識別讀取許可權。
若要深入瞭解,請參閱 許可權。
3 - 建立外部數據表
有兩種類型的外部數據表支援使用受控識別進行驗證:Azure 儲存體 外部數據表和 SQL Server 外部數據表。
選取下列其中一個索引標籤,以設定 Azure 儲存體 或 SQL Server 外部數據表。
若要建立 Azure 儲存體 外部數據表,請執行下列步驟:
根據記憶體 連接字串 範本建立 連接字串。 此字串表示要存取的資源及其驗證資訊。 指定受控識別驗證方法。
執行 .create 或 .alter 外部數據表來建立數據表。 使用上一個步驟中的 連接字串 作為 storageConnectionString 自變數。
範例
下列命令會MyExternalTable
建立 ,其會參考 Azure Blob 儲存體 中的 mycontainer
mystorageaccount
CSV 格式數據。 資料表有兩個資料行,一個用於整數 x
,一個用於字串 s
。 連接字串 結尾為 ;managed_identity=system
,表示使用系統指派的受控識別進行驗證以存取數據存放區。
.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv
(
h@'https://mystorageaccount.blob.core.windows.net/mycontainer;managed_identity=system'
)
注意
若要使用使用者指派的受控識別進行驗證,請將 取代 system
為受控識別物件標識符。
若要建立 SQL Server 外部數據表,請執行下列步驟:
建立 SQL Server 連接字串。 此字串表示要存取的資源及其驗證資訊。 指定受控識別驗證方法。
執行 .create 或 .alter external table 命令來建立數據表。 使用 連接字串 作為 SqlConnectionString 自變數。
範例
下列命令會 MySqlExternalTable
建立參考 MySqlTable
SQL Server 中的 MyDatabase
數據表。 資料表有兩個資料行,一個用於整數 x
,一個用於字串 s
。 連接字串 包含 ;Authentication="Active Directory Managed Identity";User Id=123456789
,指出使用具有物件標識符123456789
的使用者指派受控識別來存取數據表。
.create external table MySqlExternalTable (x:int, s:string) kind=sql table=MySqlTable
(
h@'Server=tcp:myserver.database.windows.net,1433;Authentication="Active Directory Managed Identity";User Id=123456789;Initial Catalog=MyDatabase;'
)
注意
若要使用系統指派的受控識別進行驗證,請移除 ;User Id={object_id}
並只指定 ;Authentication="Active Directory Managed Identity"
。
若要建立 Cosmos DB 外部資料表,請執行下列步驟:
建立 Cosmos DB 連接字串。 此字串表示要存取的資源及其驗證資訊。 指定受控識別驗證方法。
執行 .create 或 .alter external table 命令來建立數據表。 使用 連接字串 作為 SqlConnectionString 自變數。
範例
使用者指派的受控識別
下列命令會MyCosmosDbExternalTable
建立 ,參考 Cosmos DB 帳戶 mycosmos
資料庫中MyDatabase
的數據MyCollection
。
- 連接字串 包含
;Authentication="Active Directory Managed Identity";User Id=123456789
,指出使用具有 對象識別碼123456789
的使用者指派受控識別來存取數據表。
.create external table MyCosmosDbExternalTable (x:int, s:string) kind=sql
(
h@'AccountEndpoint=https://mycosmos.documents.azure.com:443/;Database=MyDatabase;Collection=MyCollection;Authentication="Active Directory Managed Identity";User Id=123456789;'
)
with
(
sqlDialect = "CosmosDbSQL"
)
系統指派的受控識別
連接字串 只;Authentication="Active Directory Managed Identity";
包含 ,表示使用系統指派的受控識別
.create external table MyCosmosDbExternalTable (x:int, s:string) kind=sql
(
h@'AccountEndpoint=https://mycosmos.documents.azure.com:443/;Database=MyDatabase;Collection=MyCollection;Authentication="Active Directory Managed Identity";'
)
with
(
sqlDialect = "CosmosDbSQL"
)
相關內容