【问题标题】:Istio: HTTP Authorization: verify user is the resource ownerIstio:HTTP 授权:验证用户是资源所有者
【发布时间】:2019-11-02 08:19:40
【问题描述】:

研究使用 Istio 为基于 Kubernetes 微服务架构构建的应用程序处理授权。

我们希望完成的一件事是通过利用 Istio 授权来解耦服务的授权。

我们的 API 网关 (Kong) 将处理 JWT 令牌的验证/解析,并将任何必需的属性(用户名、组、角色等)作为标头传递,例如x-username:homer@somewhere.com(从服务中提取)

我们想要完成的是除了基于角色等进行验证之外,我们还希望确保 x-username 也是资源的所有者,例如如果他们正在访问:

/user/{userID}/resource

这意味着如果 userId 与 x-username 标头的值匹配,我们可以继续为请求提供服务,否则我们将发送 401 等

有没有办法将此配置为 Istio 授权的一部分?

提前感谢您的宝贵时间

【问题讨论】:

    标签: kubernetes jwt authorization microservices istio


    【解决方案1】:

    您正在寻找的是基于属性的访问控制 ()。查看授权引擎,例如直接插入 Kong 并提供该级别访问控制(所有权检查)的公理。

    您还可以选择使用基于 Istio 的 authorization template 的适配器从 Istio 调用 Axiomatics。

    Axiomatics 中的策略是使用 XACML 或 ALFA 编写的,它们是 ABAC/细粒度授权的 2 个 OASIS 标准。

    你可以很容易地写一个条件:

    rule checkOwner{
        deny
        condition not(owner==user.uid)
    }
    

    顺便说一句,您可能想要发回 403 而不是 401。后者指的是身份验证失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 1970-01-01
      相关资源
      最近更新 更多