【发布时间】:2020-12-07 16:24:49
【问题描述】:
apiVersion: "security.istio.io/v1beta1"
kind: "RequestAuthentication"
metadata:
name: "jwt-example"
namespace: istio-system
spec:
selector:
matchLabels:
istio: ingressgateway
jwtRules:
- issuer: "https://cognito-idp.ap-southeast-1.amazonaws.com/ap-southeast-xxxxx"
jwksUri: "https://cognito-idp.ap-southeast-1.amazonaws.com/ap-southeast-xxxxx/.well-known/jwks.json"
和
spec:
selector:
matchLabels:
istio: ingressgateway
action: ALLOW
rules:
- from:
- source:
notRequestPrincipals: ["*"]
to:
- operation:
paths: ["/api/v1/*"]
when:
- key: request.auth.claims[cognito:groups]
values: ["testing"]
如果 JWT 令牌基于 AWS Cognito 的 testing 组,我尝试使用上述代码 sn-ps 以允许访问使用 /api/v1/*。不幸的是,它现在正在显示RBAC: access denied。请告诉我如何解决?
【问题讨论】:
-
如果我对this 的理解正确,您应该使用
DENY和notRequestPrincipals,或者使用相反的ALLOW和requestPrincipals,所以您可以尝试将操作从ALLOW到DENY或将源从notRequestPrincipals更改为requestPrincipals?如果其中任何一个都不起作用,您可以尝试使用- key: request.auth.claims[groups]而不是request.auth.claims[cognito:groups]吗?还有一件事是键值应该在键下,所以你缺少2个空格。 -
即使我将
request.auth.claims[groups]和ALLOW或DENY更改为requestPrincipals和requestPrincipals,它根本不起作用。我也在我的问题中添加了RequestAuthentication。 -
@Jakub 由于
requestPrincipals,我已根据您的评论修复了问题。您可以将其发布为答案吗?我会把它标记为正确答案。 -
很高兴它为您工作!所以它实际上适用于
action: ALLOW和requestPrincipals,对吗? -
@Jakub yap,那个有效。
标签: amazon-cognito istio