考虑使用Istio为Kubernetes中基于微服务架构构建的应用程序处理授权。
我们希望完成的一件事是通过利用Istio授权来分离服务的授权。
我们的API网关(Kong)将处理JWT令牌的验证/解析,并将任何必需的属性(用户名,组,角色等)作为标头传递,例如x-用户名:homer@somewhere.com(从服务中抽象出来)
我们要完成的工作是根据角色进行验证等,我们还想确保x用户名也是资源的所有者,例如如果他们正在访问:
/user/{userID}/resource
这意味着,如果userId与x-username标头的值匹配,我们可以继续处理请求,否则我们将发送401等
是否可以将其配置为Istio授权的一部分?
提前感谢您的时间
答案 0 :(得分:1)
您正在寻找的是基于属性的访问控制(abac)。查看授权引擎,例如直接插入Kong并提供该级别的访问控制(所有权检查)的公理学。
有关集成的技术{{3}}
您还可以选择使用基于Istio的webcast的适配器从Isitio调用公理学。
公理学政策是使用XACML或authorization template编写的,XACML或ALFA是ABASIS /细粒度授权的2种OASIS标准。
您可以按照以下方式轻松编写条件:
rule checkOwner{
deny
condition not(owner==user.uid)
}
顺便说一句,您可能想发送回403而不是401。后者是指身份验证失败。