使用 Microsoft Entra ID 授權存取資料表

Azure 儲存體支援使用 Microsoft Entra ID 來授權資料表資料的要求。 使用 Microsoft Entra ID,您可以使用 Azure 角色型存取控制 (Azure RBAC) 將權限授與安全性主體,其可能是使用者、群組或應用程式服務主體。 安全性主體是由 Microsoft Entra ID 進行驗證,以傳回 OAuth 2.0 權杖。 然後,可以使用權杖來授權對資料表服務的要求。

使用 Microsoft Entra ID 來授權對 Azure 儲存體的要求,相較於共用金鑰授權,可提供更優異的安全性,也更容易使用。 Microsoft 建議您盡可能對資料表應用程式使用 Microsoft Entra 授權,以確保存取權具有最低必要權限。

所有公用區域和國家雲端中的所有一般用途都可以使用 Microsoft Entra ID 進行授權。 只有使用 Azure Resource Manager 部署模型所建立的儲存體帳戶才支援 Microsoft Entra 授權。

資料表的 Microsoft Entra ID 概觀

當安全性主體 (使用者、群組或應用程式) 嘗試存取資料表資源時,要求必須獲得授權。 使用 Microsoft Entra ID 時,存取資源的流程分為兩個步驟。 首先,安全性主體的身分識別已通過驗證,並傳回 OAuth 2.0 權杖。 接下來,權杖會當做要求的一部分傳至資料表服務,讓服務使用該權杖來授與指定資源的存取權。

驗證步驟需要應用程式在執行階段要求 OAuth 2.0 存取權杖。 如果應用程式是在 Azure 實體內執行,例如 Azure VM、虛擬機器擴展集或 Azure Functions 應用程式,則可以使用受控識別來存取資料表。

授權步驟需要將一或多個 Azure 角色指派給安全性主體。 Azure 儲存體提供的 Azure 角色包含資料表資料的一般權限集合。 指派給安全性主體的角色會決定該主體所擁有的權限。 若要深入了解如何指派用於資料表存取的 Azure 角色,請參閱指派 Azure 角色以存取資料表資料

下表指出在各種案例中授權資料存取的其他資訊:

語言 .NET Java JavaScript Python Go
使用 Microsoft Entra ID 進行驗證的概觀 如何使用 Azure 服務驗證 .NET 應用程式 使用 Java 和 Azure 身分識別進行 Azure 驗證 使用 Azure SDK 向 Azure 驗證 JavaScript 應用程式 使用 Azure SDK向 Azure 驗證 Python 應用程式
使用開發人員服務主體驗證 於本機開發期間使用服務主體向 Azure 服務驗證 .NET 應用程式 使用服務主體進行 Azure 驗證 使用服務主體向 Azure 服務驗證 JS 應用程式 於本機開發期間使用服務主體向 Azure 服務驗證 Python 應用程式 使用服務主體進行 Azure SDK for Go 驗證
使用開發人員或用戶帳戶進行驗證 於本機開發期間使用開發人員帳戶向 Azure 服務驗證 .NET 應用程式 使用使用者認證進行 Azure 驗證 使用開發人員帳戶向 Azure 服務驗證 JS 應用程式 於本機開發期間使用開發人員帳戶向 Azure 服務驗證 Python 應用程式 使用 Azure SDK for Go 進行 Azure 驗證
從 Azure 裝載的應用程式驗證 使用 Azure SDK for .NET 向 Azure 資源驗證 Azure 裝載的應用程式 驗證 Azure 裝載的 Java 應用程式 使用 Azure SDK for JavaScript 向 Azure 資源驗證 Azure 裝載的 JavaScript 應用程式 使用 Azure SDK for Python 向 Azure 資源驗證 Azure 裝載的應用程式 使用受控識別向 Azure SDK for Go 進行驗證
從內部部署應用程式驗證 從裝載於內部部署的 .NET 應用程式向 Azure 資源進行驗證 向 Azure 資源驗證內部部署 JavaScript 應用程式 從裝載於內部部署的 Python 應用程式向 Azure 資源進行驗證
身分識別用戶端程式庫概觀 適用於 .NET 的 Azure 身分識別用戶端程式庫 適用於 Java 的 Azure 身分識別用戶端程式庫 適用於 JavaScript 的 Azure 身分識別用戶端程式庫 適用於 Python 的 Azure 身分識別用戶端程式庫 適用於 Go 的 Azure 身分識別用戶端程式庫

指派 Azure 角色以取得存取權限

Microsoft Entra 會透過 Azure 角色型存取控制 (Azure RBAC) 來授與存取受保護資源的權限。 Azure 儲存體會定義一組 Azure 內建角色,其中包含一般用來存取資料表資料的權限集合。 您也可以定義自訂角色以存取資料表資料。

將 Azure 角色指派給 Microsoft Entra 安全性主體時,Azure 會將那些資源的存取權授與該安全性主體。 Microsoft Entra 安全性主體可以是使用者、群組或應用程式服務主體,或是適用於 Azure 資源的受控識別

資源範圍

在將 Azure RBAC 角色指派給安全性主體之前,請先確定安全性主體應具有的存取範圍。 最佳做法指出,最好只授與最窄的可能範圍。 在更廣泛的範圍內定義的 Azure RBAC 角色會由其下的資源繼承。

您可以在下列層級設定存取 Azure 資料表資源的範圍,從最小範圍開始:

  • 個別的資料表。 在此範圍中,角色指派會套用至指定的資料表。
  • 儲存體帳戶。 在此範圍中,角色指派會套用至帳戶中的所有資料表。
  • 資源群組。 在此範圍中,角色指派會套用至資源群組中所有儲存體帳戶內的所有資料表。
  • 訂用帳戶。 在此範圍中,角色指派會套用至訂用帳戶中所有資源群組的所有儲存體帳戶內所包含的所有資料表。
  • 管理群組。 在此範圍中,角色指派會套用至管理群組的所有訂用帳戶中,所有資源群組的所有儲存體帳戶內所包含的所有資料表。

如需 Azure RBAC 角色指派範圍的詳細資訊,請參閱了解 Azure RBAC 的範圍

適用於資料表的 Azure 內建角色

Azure RBAC 提供內建角色,可讓您使用 Microsoft Entra ID 和 OAuth 來授與資料表資料的存取權。 有權對 Azure 儲存體中的資料表進行存取的內建角色包括:

若要了解如何將 Azure 內建角色指派給安全性主體,請參閱指派 Azure 角色以存取資料表資料。 若要了解如何列出 Azure RBAC 角色及其權限,請參閱列出 Azure 角色定義

如需有關如何為 Azure 儲存體定義內建角色的詳細資訊,請參閱了解角色定義。 如需建立 Azure 自訂角色的相關資訊,請參閱 Azure 自訂角色

只有針對資料存取明確定義的角色,才能允許安全性主體存取或資料表資料。 內建角色 (例如 擁有者參與者儲存體帳戶參與者) 允許安全性主體管理儲存體帳戶,但是不會透過 Microsoft Entra ID 提供該帳戶內資料表資料的存取權。 不過,如果角色包含 Microsoft.Storage/storageAccounts/listKeys/action,則獲指派該角色的使用者可以透過具有帳戶存取金鑰的共用金鑰授權來存取儲存體帳戶中的資料。

如需有關適用於資料服務和管理服務的 Azure 儲存體 Azure 內建角色的詳細資訊,請參閱 Azure RBAC 的 Azure 內建角色中的儲存體一節。 此外,如需在 Azure 中提供權限的不同類型角色的詳細資訊,請參閱Azure 角色、Microsoft Entra 角色和傳統訂用帳戶管理員角色 (部分機器翻譯)。

重要

Azure 角色指派最多需要 30 分鐘的時間來傳播。

資料作業的存取權限

如需呼叫特定資料表服務作業所需權限的詳細資訊,請參閱呼叫資料作業的權限

下一步