如何在 Azure APIM 中使用角色型存取控制

適用於:所有 API 管理 層

Azure API 管理需要 Azure 角色型存取控制 (Azure RBAC),才能針對 API 管理服務及實體 (例如 API 和原則) 啟用更細緻的存取管理。 本文章將為您提供 API 管理中內建角色和自訂角色的概觀。 如需有關 Azure 入口網站中的存取管理的詳細資訊,請參閱開始在 Azure 入口網站中使用存取管理

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

內建服務角色

API 管理目前提供三個內建角色,不久之後會再新增兩個角色。 這些角色可以指派到不同的範圍,包括訂用帳戶、資源群組,以及個別 API 管理執行個體。 例如,若您將「API 管理服務讀者」角色指派給資源群組層級的使用者,則該使用者會具有該資源群組內所有 API 管理執行個體的讀取存取。

下表提供內建角色的簡短描述。 您可以使用 Azure 入口網站或其他工具 (包括 Azure PowerShellAzure CLIREST API) 指派這些角色。 如需如何指派內建角色的詳細資料,請參閱指派 Azure 角色來管理 Azure 訂用帳戶資源的存取權

角色 讀取權限[1] 寫入權限[2] 服務建立、刪除、調整規模、VPN 及自訂網域設定 存取舊版發行者入口網站 描述
API 管理服務參與者 進階使用者。 具有 API 管理服務及實體 (例如 API 和原則) 的完整 CRUD 存取。 具有舊版發行者入口網站的存取權限。
API 管理服務讀取者 具有 API 管理服務及實體的唯讀權限。
API 管理服務操作員 可以管理 API 管理服務,但無法管理實體。

[1] API 管理服務及實體 (例如 API 和原則) 的讀取權限

[2] API 管理服務及實體的寫入權限,下列作業除外:建立、刪除和調整執行個體;VPN 設定;以及自訂網域設定。

內建工作區角色

APIM 會在 APIM 執行個體中,為工作區中的共同作業者提供下列內建角色。

工作區共同作業者必須同時獲指派工作區範圍角色和服務範圍角色。

角色 影響範圍 描述
APIM 工作區參與者 工作區 可以管理工作區和檢視,但無法修改其成員。 此角色應在工作區範圍上指派。
APIM 工作區讀者 工作區 具備工作區中實體的唯讀權限。 此角色應在工作區範圍上指派。
APIM 工作區 API 開發人員 工作區 具備工作區中實體的讀取權限,以及用於編輯 API 之實體的讀取和寫入權限。 此角色應在工作區範圍上指派。
APIM 工作區 API 產品管理員 工作區 具備工作區中實體的讀取權限,以及用於發佈 API 之實體的讀取和寫入權限。 此角色應在工作區範圍上指派。
APIM 服務工作區 API 開發人員 服務 具備標籤和產品的讀取權限,以及允許下列動作的寫入權限:

▪️ 將 API 指派給產品
▪️ 將標籤指派給產品和 API

此角色應在服務範圍上指派。
APIM 服務工作區 API 產品管理員 服務 具備與 APIM 服務工作區 API 開發人員相同的存取權,以及使用者的讀取權限和寫入權限,以允許將使用者指派給群組。 此角色應在服務範圍上指派。

自訂角色

如果內建角色都無法滿足您的特定需求,您可以建立自訂角色來提供更精細的 API 管理實體存取管理。 例如,您可以建立自訂角色,使其具有 API 管理服務的唯讀權限,但只有單一特定 API 的寫入權限。 若要深入了解自訂角色,請參閱 Azure RBAC 中的自訂角色

注意

若要能夠在 Azure 入口網站中看到 API 管理執行個體,自訂角色必須包含 Microsoft.ApiManagement/service/read 動作。

當您建立自訂角色時,從其中一個內建角色開始會比較輕鬆。 編輯屬性來新增 ActionsNotActionsAssignableScopes,然後將變更另存為新角色。 下列範例從「APIM 服務讀者」角色開始,然後建立名為「計算機 API 編輯者」的自訂角色。您可以在特定 API 的範圍指派自訂角色。 因此,這個角色只能存取該 API。

$role = Get-AzRoleDefinition "API Management Service Reader Role"
$role.Id = $null
$role.Name = 'Calculator API Contributor'
$role.Description = 'Has read access to Contoso APIM instance and write access to the Calculator API.'
$role.Actions.Add('Microsoft.ApiManagement/service/apis/write')
$role.Actions.Add('Microsoft.ApiManagement/service/apis/*/write')
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add('/subscriptions/<Azure subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ApiManagement/service/<APIM service instance name>/apis/<API name>')
New-AzRoleDefinition -Role $role
New-AzRoleAssignment -ObjectId <object ID of the user account> -RoleDefinitionName 'Calculator API Contributor' -Scope '/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ApiManagement/service/<APIM service instance name>/apis/<API name>'

Azure Resource Manager 資源提供者作業一文包含可在 API 管理層級上授與的權限清單。

下一步

若要深入了解 Azure 中的角色型存取控制,請參閱下列文章: