我不明白为什么一个特定的GoogleCloud服务帐户可以访问GKE内特定名称空间中的资源。
似乎没有证据表明它应该具有访问权限,或者,可能是我误解了IAM/RBAC集成。
- 是否有任何日志可供我检查,以了解当此SA尝试访问Kubernetes中的特定资源时,Kubernetes中正在使用哪些访问策略?**
对于上下文,我有此服务帐户:
github@my-project.iam.gserviceaccount.com
帐户分配有以下内容:
- 在Google Cloud IAM级别上,我将
roles/container.developer
分配给上述服务帐户, - 在**Kubernetes(GKE)**级别上,我创建了一个角色+角色绑定:
x一个一个一个一个x一个一个二个x
此SA可以按预期在deployment
上执行patch
:
kubectl auth can-i patch deployment/my-backend \
--namespace default \
--as github@my-project.iam.gserviceaccount.com
yes
令人困惑的是,我无法向自己解释的是,为什么此帐户尝试修补不同名称空间中的不同名称的部署会成功(如所观察到的),我可以通过使用云审计日志进行确认来交叉检查:
insertId: 10f277c5-041c-4e61-afa6-5ca669393a50
labels:
authorization.k8s.io/decision: allow
authorization.k8s.io/reason: access granted by IAM permissions.
logName: projects/my-project/logs/cloudaudit.googleapis.com%2Factivity
operation:
first: true
id: 10fc17c5-041c-4e61-afa6-5ca661793a50
last: true
producer: k8s.io
protoPayload:
'@type': type.googleapis.com/google.cloud.audit.AuditLog
authenticationInfo:
principalEmail: github@my-project.iam.gserviceaccount.com
authorizationInfo:
- granted: true
permission: io.k8s.apps.v1.deployments.patch
resource: apps/v1/namespaces/review-apps/deployments/my-backend-5005
methodName: io.k8s.apps.v1.deployments.patch
request:
# ...
- *...始终返回
no
**:
kubectl auth can-i patch deployment/my-backend-5005 \
--namespace review-apps \
--as github@my-project.iam.gserviceaccount.com
no
我在这里不知所措。快来帮忙。
1条答案
按热度按时间csbfibhn1#
问题是我误解了“Authenticating to the Kubernetes API server“文章“Google云中的应用程序”部分的第2项。
尤其是,我发现这样的措辞令人困惑:
您还可以使用RBAC授予IAM...
我的错误在于我已经完全实现了文章中的建议,例如,既授予了IAM权限又添加了Kubernetes级别的RBAC。
kubectl auth can-i
得到的结果与前面的条目相矛盾,我希望 * 您也可以使用RBAC来授予IAM...* 可以改写为 * 或者,使用RBAC来授予IAM..."。为该页面的Google Cloud提交了文档更新请求。