我已经创建了一个apim网关,现在我需要添加一些用户,并且他们仅具有对API进行某些特定操作的权利,例如,某些用户仅有权执行GET请求,而某些用户仅有权执行执行POST请求等。如何实现?
答案 0 :(得分:0)
基于角色的访问控制可以帮助您,请参阅以下URL
中的摘录RBAC如何确定用户是否有权访问资源 以下是RBAC用于确定您是否有权访问管理平面上的资源的高级步骤。这有助于您了解是否要对访问问题进行故障排除。
用户(或服务主体)为Azure资源管理器获取令牌。
令牌包含用户的组成员身份(包括传递组成员身份)。
用户使用附加的令牌对Azure资源管理器进行REST API调用。
Azure资源管理器检索适用于对其执行操作的资源的所有角色分配,并拒绝所有分配。
Azure资源管理器缩小了适用于该用户或其组的角色分配,并确定了该用户对该资源具有哪些角色。
Azure资源管理器确定用户对该资源具有的角色中是否包括API调用中的操作。
如果用户在请求的范围内没有操作的角色,则不会授予访问权限。否则,Azure资源管理器将检查是否应用了拒绝分配。
如果应用拒绝分配,则访问被阻止。否则将授予访问权限。
答案 1 :(得分:0)
APIM运行时部分不依赖ARM RBAC。相反,APIM维护自己的用户数据库。通过将操作分为多个API,并通过订阅控制对这些API的访问,可以实现您所描述的方案。
APIM内置的所有内容,因此设置简单,但维护起来很麻烦。如果是这种情况,那么您的下一个选择是使用策略和策略表达式。查看choose
策略,它可以让您有条件地停止请求处理(return-response
策略)。当然,这要求您完全能够根据请求中提供的内容(即路径,标头,用户ID等)来做出授权决定。
在这种情况下,最好使用validate-jwt
策略,因为它允许您依赖提供的身份中的有限声明集,而不是用户ID /名称的硬编码列表。但这确实要求您在每个请求中都具有JWT令牌。