kubernetes 为什么此旧式SA可以访问资源

hwamh0ep  于 2023-01-08  发布在  Kubernetes
关注(0)|答案(1)|浏览(128)

我不明白为什么一个特定的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

我在这里不知所措。快来帮忙。

csbfibhn

csbfibhn1#

问题是我误解了“Authenticating to the Kubernetes API server“文章“Google云中的应用程序”部分的第2项。
尤其是,我发现这样的措辞令人困惑:
还可以使用RBAC授予IAM...
我的错误在于我已经完全实现了文章中的建议,例如,既授予了IAM权限又添加了Kubernetes级别的RBAC。

  • 由于IAM权限,服务帐户可以有效地跨名称空间对大多数对象执行操作,而不考虑任何Kubernetes级RBAC规则,
  • 由于我使用的RBAC策略,我从kubectl auth can-i得到的结果与前面的条目相矛盾,

我希望 * 您也可以使用RBAC来授予IAM...* 可以改写为 * 或者,使用RBAC来授予IAM..."。为该页面的Google Cloud提交了文档更新请求。

相关问题