Azure AI Studio 中的角色型存取控制
在本文中,您將了解如何管理 Azure AI Studio 中樞的存取權 (授權)。 Azure 角色型存取控制 (Azure RBAC) 可用來管理對 Azure 資源的存取,例如建立新資源或使用現有資源的能力。 Microsoft Entra ID 的使用者獲派特定角色,因此有權存取資源。 Azure 會同時提供內建角色以及可以建立自訂角色的能力。
警告
套用某些角色可能會限制其他使用者在 Azure AI Studio 中的 UI 功能。 例如,如果使用者的角色沒有建立計算執行個體的能力,則無法在工作室中使用建立計算執行個體的選項。 這是預期的行為,可防止使用者嘗試執行會傳回拒絕存取錯誤的作業。
AI Studio 中樞與專案
在 Azure AI Studio 中,有兩個層級的存取權:中樞和專案。 中樞是基礎結構的根本 (包括虛擬網路設定、客戶自控金鑰、受控識別和原則),而且是您設定 Azure AI 服務的所在位置。 中樞存取權可讓您修改基礎結構、建立新的中樞,以及建立專案。 專案是中樞的子集,可作為工作區使用,讓您可以建置和部署 AI 系統。 在專案中,您可以開發流程、部署模型及管理專案資產。 專案存取權可讓您開發 AI 端對端,同時利用中樞的基礎結構設定。
這種中樞和專案關係所帶來的主要優點之一,是開發人員可以建立繼承中樞安全性設定的自有專案。 您可能還可以讓開發人員成為專案的參與者,但不能建立新的專案。
中樞的預設角色
AI Studio 中樞具有預設可供使用的內建角色。
以下是中樞的內建角色及其權限資料表:
角色 | 描述 |
---|---|
負責人 | 中樞的完整存取權,包括管理和建立新中樞並指派權限的能力。 此角色會自動指派給中樞建立者 |
參與者 | 使用者具有中樞的完整存取權,包括建立新中樞的能力,但無法管理現有資源的中樞權限。 |
Azure AI 開發人員 | 執行所有動作,但建立新的中樞和管理中樞權限除外。 例如,使用者可以建立專案、計算和連線。 使用者可以在其專案內指派權限。 使用者可以與現有的 Azure AI 資源互動,例如 Azure OpenAI、Azure AI 搜尋服務和 Azure AI 服務。 |
Azure AI 推斷部署運算子 | 執行在資源群組內建立資源部署所需的所有動作。 |
讀取者 | 中樞的唯讀存取權。 此角色會自動指派給中樞內的所有專案成員。 |
參與者與 Azure AI 開發人員之間的主要差異在於能夠建立新的中樞。 如果您不想讓使用者建立新的中樞 (因為配額、成本或只管理您擁有的中樞數量),請指派 Azure AI 開發人員角色。
只有擁有者和參與者角色可讓您建立中樞。 目前,自訂角色無法授與您建立中樞的權限。
Azure AI 開發人員角色
新「Azure AI 開發人員」角色的完整權限集如下所示:
{
"Permissions": [
{
"Actions": [
"Microsoft.MachineLearningServices/workspaces/*/read",
"Microsoft.MachineLearningServices/workspaces/*/action",
"Microsoft.MachineLearningServices/workspaces/*/delete",
"Microsoft.MachineLearningServices/workspaces/*/write",
"Microsoft.MachineLearningServices/locations/*/read",
"Microsoft.Authorization/*/read",
"Microsoft.Resources/deployments/*"
],
"NotActions": [
"Microsoft.MachineLearningServices/workspaces/delete",
"Microsoft.MachineLearningServices/workspaces/write",
"Microsoft.MachineLearningServices/workspaces/listKeys/action",
"Microsoft.MachineLearningServices/workspaces/hubs/write",
"Microsoft.MachineLearningServices/workspaces/hubs/delete",
"Microsoft.MachineLearningServices/workspaces/featurestores/write",
"Microsoft.MachineLearningServices/workspaces/featurestores/delete"
],
"DataActions": [
"Microsoft.CognitiveServices/accounts/OpenAI/*",
"Microsoft.CognitiveServices/accounts/SpeechServices/*",
"Microsoft.CognitiveServices/accounts/ContentSafety/*"
],
"NotDataActions": [],
"Condition": null,
"ConditionVersion": null
}
]
}
如果內建的 Azure AI 開發人員角色不符合您的需求,您可以建立 自定義角色。
專案的預設角色
AI Studio 中的專案具有預設可供使用的內建角色。
以下是專案的內建角色及其權限資料表:
角色 | 描述 |
---|---|
負責人 | 專案的完整存取權,包括指派權限給專案使用者的能力。 |
參與者 | 使用者擁有專案的完整存取權,但無法指派權限給專案使用者。 |
Azure AI 開發人員 | 使用者可以執行包括建立部署在內的大部分動作,但無法將權限指派給專案使用者。 |
Azure AI 推斷部署運算子 | 執行在資源群組內建立資源部署所需的所有動作。 |
讀取者 | 專案的唯讀存取權。 |
當使用者獲得專案存取權時 (例如,透過 AI Studio 權限管理),系統會自動將另外兩個角色指派給使用者。 第一個角色是中樞上的讀者。 第二個角色是推斷部署操作員角色,可讓使用者在專案所在的資源群組中建立部署。 此角色包含這兩個權限:"Microsoft.Authorization/*/read"
和 "Microsoft.Resources/deployments/*"
。
為了完成端對端 AI 開發和部署,使用者只需要這兩個自動指派的角色,以及專案的參與者或 Azure AI 開發人員角色。
建立專案所需的最低權限是允許在中樞上執行 Microsoft.MachineLearningServices/workspaces/hubs/join
動作的角色。 Azure AI 開發人員內建角色具有此權限。
相依性服務 Azure RBAC 權限
中樞具有相依於其他 Azure 服務的相依性。 下表列出建立中樞時這些服務所需要的權限。 建立中樞的人員需要這些權限。 從中樞建立專案的人員不需要這些權限。
權限 | 目的 |
---|---|
Microsoft.Storage/storageAccounts/write |
使用指定參數建立儲存體帳戶、更新指定儲存體帳戶的屬性或標記,或新增指定儲存體帳戶的自訂網域。 |
Microsoft.KeyVault/vaults/write |
建立新的金鑰保存庫,或更新現有金鑰保存庫的屬性。 某些屬性可能需要更多權限。 |
Microsoft.CognitiveServices/accounts/write |
寫入 API 帳戶。 |
Microsoft.MachineLearningServices/workspaces/write |
建立新的工作區,或更新現有工作區的屬性。 |
企業 RBAC 設定範例
下表是如何為企業的 Azure AI Studio 設定角色型存取控制的範例。
角色 | 角色 | 目的 |
---|---|---|
IT 系統管理員 | 中樞的擁有者 | IT 系統管理員可以確保中樞已設定為其企業標準。 如果想要讓管理員建立新的中樞,他們可以在資源上指派參與者角色。 或者,他們可以將資源的 Azure AI 開發人員角色指派給管理員,不允許建立新的中樞。 |
主管 | 中樞的參與者或 Azure AI 開發人員 | 管理員可以管理中樞、稽核計算資源、稽核連線,以及建立共用連線。 |
小組主管/潛在客戶開發人員 | 中樞的 Azure AI 開發人員 | 開發人員負責人可以為其小組建立專案,並在中樞層級建立共用資源 (例如,計算和連線)。 專案建立之後,專案擁有者就可以邀請其他成員。 |
小組成員/開發人員 | 專案的參與者或 Azure AI 開發人員 | 開發人員可以在專案中建置和部署 AI 模型,並建立可用於計算和連線等開發作業的資產。 |
在中樞外部建立的資源存取權
當您建立中樞時,內建的角色型存取控制權限會授與您使用資源的存取權。 不過,如果您想要在代表您建立的資源之外使用資源,您必須確保下列兩項:
- 您嘗試使用的資源已設定權限,可讓您存取該資源。
- 您的中樞可加以存取。
例如,如果您嘗試取用新的 Blob 儲存體,則必須確定中樞的受控識別已新增至 Blob 的 Blob 儲存體讀者角色。 如果嘗試使用新的 Azure AI 搜尋服務來源,您可能需要將中樞新增至 Azure AI 搜尋服務的角色指派中。
使用角色管理存取權
如果您是中樞的擁有者,您可以新增和移除 AI Studio 的角色。 移至 AI Studio 中的 [首頁],然後選取您的中樞。 然後選取 [使用者] 以新增和移除中樞的使用者。 您也可以在 Azure 入口網站的存取控制 (IAM) 之下或透過 Azure CLI 來管理權限。 例如,在 Azure CLI 中使用下列命令,將 Azure AI 開發人員角色指派給資源群組 "this-rg" 的 joe@contoso.com:
az role assignment create --role "Azure AI Developer" --assignee "joe@contoso.com" --resource-group this-rg
建立自訂角色
如果內建角色不足,您可以建立自訂角色。 自訂角色可具有該 AI Studio 中的讀取、寫入、刪除和計算資源權限。 您可以在特定專案層級、特定資源群組層級或特定訂用帳戶層級提供該角色。
注意
您必須是該層級資源的擁有者,才能在該資源內建立自訂角色。
下列 JSON 範例會在訂用帳戶層級定義自訂 AI Studio 開發人員角色:
{
"properties": {
"roleName": "AI Studio Developer",
"description": "Custom role for AI Studio. At subscription level",
"assignableScopes": [
"/subscriptions/<your-subscription-id>"
],
"permissions": [
{
"actions": [
"Microsoft.MachineLearningServices/workspaces/write",
"Microsoft.MachineLearningServices/workspaces/endpoints/write",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.KeyVault/vaults/write",
"Microsoft.Authorization/roleAssignments/read",
"Microsoft.Authorization/roleDefinitions/read",
"Microsoft.CognitiveServices/*/read"
],
"notActions": [
"Microsoft.MachineLearningServices/workspaces/delete",
"Microsoft.MachineLearningServices/workspaces/write",
"Microsoft.MachineLearningServices/workspaces/listKeys/action",
"Microsoft.MachineLearningServices/workspaces/hubs/write",
"Microsoft.MachineLearningServices/workspaces/hubs/delete",
"Microsoft.MachineLearningServices/workspaces/featurestores/write",
"Microsoft.MachineLearningServices/workspaces/featurestores/delete"
],
"dataActions": [
"Microsoft.CognitiveServices/accounts/OpenAI/*/read",
"Microsoft.CognitiveServices/accounts/OpenAI/engines/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/engines/search/action",
"Microsoft.CognitiveServices/accounts/OpenAI/engines/generate/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/search/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/chat/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/extensions/chat/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/embeddings/action",
"Microsoft.CognitiveServices/accounts/OpenAI/images/generations/action"
],
"notDataActions": []
}
]
}
}
如需建立自定義角色的步驟,請使用下列其中一篇文章:
如需一般建立自定義角色的詳細資訊,請流覽 Azure 自定義角色 一文。
在 AI Studio 中指派角色
您可以在中樞或專案層級,直接從 Azure AI Studio 新增使用者並指派角色。 從中樞或專案概觀頁面,選取 [新增使用者 ] 以新增使用者。
注意
您只能選取內建角色。 如果您需要指派自定義角色,您必須使用 Azure 入口網站、Azure CLI 或 Azure PowerShell。
接著,系統會提示您輸入使用者資訊,然後選取內建角色。
案例:使用客戶自控金鑰
設定中樞使用客戶自控金鑰 (CMK) 時,會使用 Azure Key Vault 來儲存金鑰。 用來建立工作區的使用者或服務主體必須擁有金鑰保存庫的擁有者或參與者存取權。
如果您的 AI Studio 中樞已設定使用者指派的受控識別,則必須將身分識別授與下列角色。 這些角色可讓受控識別建立使用客戶自控密鑰時使用的 Azure 儲存體、Azure Cosmos DB 和 Azure 搜尋服務資源:
Microsoft.Storage/storageAccounts/write
Microsoft.Search/searchServices/write
Microsoft.DocumentDB/databaseAccounts/write
在金鑰保存庫中,使用者或服務主體必須透過金鑰保存庫存取原則建立、取得、刪除和清除金鑰的存取權。 如需詳細資訊,請參閱 Azure Key Vault 安全性。
案例:使用 Microsoft Entra ID 驗證的連線
當您建立使用 Microsoft Entra ID 驗證的連線時,您必須將角色指派給開發人員,以便他們可以存取資源。
資源連線 | 角色 | 描述 |
---|---|---|
Azure AI 搜尋服務 | 參與者 | 從 Azure AI Studio 列出 API 金鑰,以列出索引。 |
Azure AI 搜尋服務 | 搜尋索引資料參與者 | 編製索引案例的必要項目 |
Azure AI 服務/Azure OpenAI | 認知服務 OpenAI 參與者 | 從 Azure AI Studio 呼叫公用擷取 API。 |
Azure AI 服務/Azure OpenAI | 認知服務使用者 | 從 Azure AI Studio 列出 API 金鑰。 |
Azure AI 服務/Azure OpenAI | 認知服務參與者 | 允許呼叫控制平面。 |
Azure Blob 儲存體 | 儲存體 Blob 資料參與者 | 讀取和寫入數據至 Blob 記憶體的必要專案。 |
Azure Data Lake Storage Gen 2 | 儲存體 Blob 資料參與者 | 讀取和寫入數據湖的必要專案。 |
Microsoft OneLake | 參與者 | 若要授與某人Microsoft OneLake,您必須 授與他們存取 Microsoft Fabric 工作區的存取權。 |
重要
如果您使用 Promptflow 搭配 Azure 儲存體 (包括 Azure Data Lake Storage Gen 2),您也必須指派記憶體檔案數據特殊許可權參與者角色。
在聊天遊樂場中使用 Microsoft Entra ID 驗證的連線時,服務必須互相授權才能存取所需的資源。 執行設定的系統管理員必須擁有這些資源的擁有者角色,才能新增角色指派。 下表列出每個資源的必要角色指派。 [受託人] 資料行是指所列出資源之系統指派的受控識別。 [資源] 資料行是指受託人需要存取的資源。 例如,Azure OpenAI 具有系統指派的受控識別,需要為 Azure AI 搜尋服務資源指派搜尋索引資料讀取者角色。
角色 | 受託人 | 資源 | 描述 |
---|---|---|---|
搜尋索引資料讀取者 | Azure AI 服務/Azure OpenAI | Azure AI 搜尋服務 | 推斷服務會從索引查詢資料。 僅適用於推斷案例。 |
搜尋索引資料參與者 | Azure AI 服務/Azure OpenAI | Azure AI 搜尋服務 | 索引中內容的讀寫存取權。 匯入、重新整理或查詢索引的文件集合。 僅用於擷取和推斷案例。 |
搜尋服務參與者 | Azure AI 服務/Azure OpenAI | Azure AI 搜尋服務 | 對物件定義 (索引、別名、同義字對應、索引子、資料來源和技能集) 的讀寫存取權。 推斷服務會查詢自動欄位對應的索引結構描述。 資料擷取服務會建立索引、資料來源、技能集、索引子,以及查詢索引子狀態。 |
認知服務 OpenAI 參與者 | Azure AI 搜尋服務 | Azure AI 服務/Azure OpenAI | 自訂技能 (部分機器翻譯) |
認知服務 OpenAI 使用者 | 適用於聊天模型的 Azure OpenAI 資源 | 適用於內嵌模型的 Azure OpenAI 資源 | 只有在使用兩個 Azure OpenAI 資源進行通訊時才需要。 |
儲存體 Blob 資料參與者 | Azure AI 搜尋服務 | Azure 儲存體帳戶 | 讀取 Blob 和寫入知識存放區。 |
儲存體 Blob 資料參與者 | Azure AI 服務/Azure OpenAI | Azure 儲存體帳戶 | 從輸入容器讀取,並將前置處理結果寫入輸出容器。 |
注意
只有在您使用兩個 Azure OpenAI 資源時,才需要認知服務 OpenAI 使用者角色:一個用於聊天模型,另一個用於內嵌模型。 如果適用,請啟用 [信任的服務],「並」確定內嵌模型 Azure OpenAI 資源的連線已啟用 Microsoft Entra ID。
案例:使用現有的 Azure OpenAI 資源
當您建立現有 Azure OpenAI 資源的連線時,您也必須將角色指派給使用者,讓他們可以存取資源。 依據使用者需要執行的工作而定,您應該指派認知服務 OpenAI 使用者或認知服務 OpenAI 參與者角色。 如需這些角色及其啟用工作的資訊,請參閱 Azure OpenAI 角色。
案例:使用 Azure Container Registry
Azure Container Registry 執行個體是 Azure AI Studio 中樞的選擇性相依性。 下表會列出向 Azure Container Registry 驗證中樞時的支援矩陣,實際內容會依驗證方法和 Azure Container Registry 的公用網路存取設定而定。
驗證方法 | 公用網路存取 已停用 |
Azure Container Registry 公用網路存取已啟用 |
---|---|---|
管理使用者 | ✓ | ✓ |
AI Studio 中樞系統指派的受控識別 | ✓ | ✓ |
AI Studio 中樞使用者指派的受控識別 ,具有指派給身分識別的 ACRPull 角色 |
✓ |
建立中樞時,系統指派的受控識別會自動指派給正確的角色。 如果您使用使用者指派的受控識別,則必須將 ACRPull 角色指派給身分識別。
案例:使用 Azure Application Insights 進行記錄
Azure Application Insights 是 Azure AI Studio 中樞的選擇性相依性。 下表列出當您建立中樞時,想要使用 Application Insights 所需的權限。 建立中樞的人員需要這些權限。 從中樞建立專案的人員不需要這些權限。
權限 | 目的 |
---|---|
Microsoft.Insights/Components/Write |
寫入 Application Insights 元件設定。 |
Microsoft.OperationalInsights/workspaces/write |
建立新的工作區,或藉由提供來自現有工作區的客戶識別碼來連結至現有工作區。 |
案例:佈建的輸送量單位採購者
下列範例會定義可採購佈建的輸送量單位 (PTU) 的自訂角色。
{
"properties": {
"roleName": "PTU procurer",
"description": "Custom role to purchase PTU",
"assignableScopes": [
"/subscriptions/<your-subscription-id>"
],
"permissions": [
{
"actions": [
"Microsoft.CognitiveServices/accounts/commitmentplans/read",
"Microsoft.CognitiveServices/accounts/commitmentplans/write",
"Microsoft.CognitiveServices/accounts/commitmentplans/delete",
"Microsoft.CognitiveServices/locations/commitmentTiers/read",
"Microsoft.CognitiveServices/accounts/commitmentplans/read",
"Microsoft.CognitiveServices/accounts/commitmentplans/write",
"Microsoft.CognitiveServices/accounts/commitmentplans/delete",
"Microsoft.Features/features/read",
"Microsoft.Features/providers/features/read",
"Microsoft.Features/providers/features/register/action",
"Microsoft.Insights/logDefinitions/read",
"Microsoft.Insights/metricdefinitions/read",
"Microsoft.Insights/metrics/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/operations/read",
"Microsoft.Resources/subscriptions/operationresults/read",
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/subscriptions/resourcegroups/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
案例:Azure OpenAI 助理 API
下列範例會使用 Azure OpenAI 助理來定義開發人員的角色。
{
"id": "",
"properties": {
"roleName": "Azure OpenAI Assistants API Developer",
"description": "Custom role to work with Azure OpenAI Assistants API",
"assignableScopes": [
"<your-scope>"
],
"permissions": [
{
"actions": [
"Microsoft.CognitiveServices/*/read",
"Microsoft.Authorization/roleAssignments/read",
"Microsoft.Authorization/roleDefinitions/read"
],
"notActions": [],
"dataActions": [
"Microsoft.CognitiveServices/accounts/OpenAI/*/read",
"Microsoft.CognitiveServices/accounts/OpenAI/engines/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/engines/search/action",
"Microsoft.CognitiveServices/accounts/OpenAI/engines/generate/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/search/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/chat/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/extensions/chat/completions/action",
"Microsoft.CognitiveServices/accounts/OpenAI/deployments/embeddings/action",
"Microsoft.CognitiveServices/accounts/OpenAI/images/generations/action",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/write",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/read",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/delete",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/files/write",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/files/read",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/files/delete",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/write",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/read",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/delete",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/messages/write",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/messages/read",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/messages/files/read",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/runs/write",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/runs/read",
"Microsoft.CognitiveServices/accounts/OpenAI/assistants/threads/runs/steps/read"
],
"notDataActions": []
}
]
}
}
疑難排解
錯誤:主體無法存取 API/作業
徵兆
使用 Azure AI Studio 聊天遊樂場時,您會收到錯誤訊息,指出「主體無法存取 API/作業」。 此錯誤也可能包含 「Apim-request-id」。
原因
用來驗證 Azure OpenAI 或 Azure AI 搜尋要求的使用者或服務主體沒有存取資源所需的許可權。
解決方案
將下列角色指派給用戶或服務主體。 您指派的角色取決於您所使用的服務,以及使用者或服務主體所需的存取層級:
正在存取的服務 | 角色 | 描述 |
---|---|---|
Azure OpenAI | 認知服務 OpenAI 參與者 | 從 Azure AI Studio 呼叫公用擷取 API。 |
Azure OpenAI | 認知服務使用者 | 從 Azure AI Studio 列出 API 金鑰。 |
Azure AI 搜尋服務 | 搜尋索引資料參與者 | 索引編製案例的必要專案。 |
Azure AI 搜尋服務 | 搜尋索引資料讀取者 | 推斷服務會從索引查詢資料。 僅適用於推斷案例。 |