Azure API Management でロールベースのアクセス制御を使用する方法

適用対象: すべての API Management レベル

Azure API Management では、Azure のロールベースのアクセス制御 (RBAC) の使用により、API Management のサービスとエンティティ (API やポリシーなど) に関するきめ細かいアクセス管理が可能になります。 この記事では、API Management における組み込みロールとカスタム ロールについて説明します。 Azure ポータルでのアクセス管理の詳細については、「Azure ポータルでのアクセス管理の概要」を参照してください。

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

組み込みのサービス ロール

API Management には、現在、組み込みロールが 3 つ提供されており、近い将来、さらに 2 つのロールが追加されます。 これらのロールは、サブスクリプション、リソース グループ、および個々の API Management インスタンスなどのさまざまなスコープで割り当てることができます。 たとえば、"API Management サービスのリーダー" ロールをリソース グループ レベルのユーザーに割り当てた場合、そのユーザーはリソース グループ内のすべての API Management インスタンスに読み取りアクセスを行うことができます。

次の表に、組み込みのロールについての簡単な説明を示します。 これらのロールは Azure ポータルや、Azure PowerShellAzure CLIREST API などのツールを使用して割り当てることができます。 組み込みロールを割り当てる方法の詳細については、Azure サブスクリプション リソースへのアクセスを管理するための Azure ロールの割り当てに関するページを参照してください。

Role 読み取りアクセス[1] 書き込みアクセス[2] サービスの作成、削除、スケーリング、VPN、カスタム ドメインの構成 以前のパブリッシャー ポータルへのアクセス 説明
API Management Service Contributor スーパー ユーザー。 API Management のサービスとエンティティ (API やポリシーなど) への完全な CRUD アクセス権がある。 以前のパブリッシャー ポータルにアクセスできる。
API Management サービス リーダー API Management のサービスとエンティティへの読み取り専用アクセスがある。
API Management サービス オペレーター API Management サービスは管理できるが、エンティティの管理はできない。

[1] API Management サービスとエンティティ (API やポリシーなど) への読み取りアクセス

[2] 次の操作以外の API Management サービスとエンティティへの書き込みアクセス: インスタンスの作成、削除、およびスケーリング、VPN 構成、カスタム ドメインのセットアップ

組み込みのワークスペース ロール

API Management では、API Management インスタンスのワークスペース内のコラボレーターに対して、次の組み込みロールが提供されます。

ワークスペースのコラボレーターには、ワークスペース スコープのロールとサービス スコープのロールの両方が割り当てられる必要があります。

ロール スコープ 説明
API Management ワークスペース共同作成者 ワークスペース ワークスペースとビューを管理できますが、そのメンバーは変更できません。 このロールは、ワークスペース スコープに割り当てる必要があります。
API Management ワークスペース閲覧者 ワークスペース ワークスペース内のエンティティに対する読み取り専用アクセス権があります。 このロールは、ワークスペース スコープに割り当てる必要があります。
API Management ワークスペース API 開発者 ワークスペース ワークスペース内のエンティティに対する読み取りアクセス権と、API を編集するためのエンティティへの読み取りおよび書き込みアクセス権があります。 このロールは、ワークスペース スコープに割り当てる必要があります。
API Management ワークスペース API プロダクト マネージャー ワークスペース ワークスペース内のエンティティに対する読み取りアクセス権と、API を発行するためのエンティティへの読み取りおよび書き込みアクセス権があります。 このロールは、ワークスペース スコープに割り当てる必要があります。
API Management サービス ワークスペース API 開発者 サービス (service) タグと製品への読み取りアクセス権と、以下を可能にする書き込みアクセス権があります。

▪️ 製品への API の割り当て
▪️ 製品と API へのタグの割り当て

このロールは、サービス スコープに割り当てる必要があります。
API Management サービス ワークスペース API プロダクト マネージャー サービス (service) API Management サービス ワークスペース API 開発者と同じアクセス権だけでなく、ユーザーへの読み取りアクセス権と、グループへのユーザーの割り当てを可能にする書き込みアクセス権があります。 このロールは、サービス スコープに割り当てる必要があります。

カスタム ロール

特定のニーズを満たす組み込みロールがない場合は、カスタム ロールを作成して、API Management エンティティのアクセス管理をより詳細にすることができます。 たとえば、API Management サービスへの読み取り専用アクセス権はあるが、特定の 1 つの API にしか書き込みアクセス権がないカスタム ロールを作成できます。 カスタム ロールの詳細については、「Azure RBAC のカスタム ロール」を参照してください。

Note

Azure portal で API Management インスタンスを表示できるようにするには、カスタム ロールに Microsoft.ApiManagement/service/read アクションを含める必要があります。

カスタム ロールを作成するときは、いずれかの組み込みロールを土台にすると簡単です。 ActionsNotActions、または AssignableScopes を追加して属性を編集した後、変更内容を新しいロールとして保存します。 次の例では、"API Management サービス リーダー" ロールから、"Calculator API Editor (Calculator 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 Management レベルで許可できる権限の一覧が含まれています。

次のステップ

Azure でのロールベースのアクセス制御の詳細については、次の記事を参照してください。