基于角色的访问控制

IBM® Cloud Private 支持多种角色。 您的角色决定了您可以执行的操作。

集群管理员角色和操作

IBM Cloud Private 支持集群管理员角色。

表 1. 集群管理员角色和操作
角色 描述 操作
集群管理员 具有对 IBM Cloud Private 平台的完全访问权。 以下操作只能由集群管理员完成:
  • 连接到 LDAP 目录
  • 添加用户并为其分配 IAM 角色
  • 管理所有名称空间中的工作负载、基础结构和应用程序
  • 创建名称空间
  • 分配配额
  • 添加 pod 安全策略
  • 添加内部 Helm 存储库
  • 删除内部 Helm 存储库
  • 将 Helm Chart 添加到内部 Helm 存储库
  • 将 Helm Chart 从内部 Helm 存储库中移除
  • 同步内部和外部 Helm 存储库
  • 管理所有名称空间的存储类和持久卷。
  • 添加/移除/更新映像安全性实施策略。
  • 添加/移除/更新集群中的服务标识。

关于添加 Pod 安全策略的更多信息,请参阅创建 Pod 安全策略

IAM 角色和操作

您可以在将用户或用户组添加到团队中时为其分配 IAM 角色。 在团队中,每个用户或用户组都只能有一个角色。 但是,如果单独添加某个用户,并同时将其添加为团队组的成员,那么该用户可以在团队中具有多个角色。 如果是这种情况,那么该用户可以根据分配给它的最高角色执行操作。 例如,如果您将用户添加为管理员,并向用户的组分配查看者角色,那么用户可以充当团队的管理员。

用户或用户组可以是多个团队的成员,并且可以在每个团队中具有不同角色。

IAM 角色定义了用户可以对团队资源执行的操作。

IBM Cloud Private 支持以下 IAM 角色:

注:只有“集群管理员”和“管理员”能够管理团队、用户和角色。 “管理员”无法将“集群管理员”角色分配给任何用户或组。

角色 描述 操作
查看者 具有只读访问权。 缺省情况下,在将用户添加到团队中时,系统会为用户分配查看者角色。 查看者可以查看有关团队资源的信息。
“查看者”无法查看下列 management console 页面:
  • 仪表板
  • 密钥
  • 节点
  • 身份 & 访问权
  • Pod

安全

  • 团队
  • | |编辑者|具有读取和编辑访问权。|编辑者可以查看和编辑团队资源。
    “编辑者”无法查看下列 management console 页面: | |操作者|具有读取、编辑和创建访问权。|操作者可以查看、编辑和创建团队资源。
    “操作者”无法查看下列 management console 页面: | |管理员|具有添加、更新、查看和删除访问权。|以下操作可由管理员完成:
    “管理员”无法查看下列 management console 页面: | |集群管理员|具有对 IBM Cloud Private 平台的完全访问权。|请参阅集群管理员角色和操作|

    注:“查看者”和“编辑者”无法查看任何 IBM Cloud Private management console 页面上的日志。

    针对目录和 Helm 资源的 RBAC

    表 3. 基于 IAM 角色的允许操作
    操作 管理员 操作者 编辑者 查看者
    添加内部 Helm 存储库
    同步内部和外部 Helm 存储库
    删除内部 Helm 存储库
    将 Helm Chart 添加到内部 Helm 存储库 X
    将 Helm Chart 从内部 Helm 存储库中移除 X
    部署 Helm Chart X *
    回滚 Helm 发行版 X
    升级 Helm 发行版 X *
    删除 Helm 发行版 X

    X - 支持操作

    * - 使用挂钩或作业移除资源的 Chart 不支持部署和升级 Helm 发行版。 有关更多信息,请参阅 Chart 自述文件或文档。

    Kubernetes 资源的 RBAC

    您分配给用户的 IAM 角色还定义了该用户可以对分配给团队的 Kubernetes 资源执行的操作。 例如,如果 user1 是 team1 中的操作者,而 team1 具有 namespace1 资源,那么 user1 可以查看和更新 namespace1 信息。 User1 还可以在 namespace1 中创建资源,例如 pod。 如果从 team1 中移除 user1,那么将移除 user1 对 team1 中资源的角色绑定。 如果 user1 属于另一个具有相同名称空间的团队(例如 team2),那么在您从 team1 中移除 user1 时,该用户在 team2 中对该名称空间的角色绑定不受影响。

    表 4. 基于 IAM 角色的允许操作
    操作 管理员 操作者 编辑者 查看者
    get X X X X
    list X X X X
    watch X X X X
    update X X X
    patch X X X
    create X X
    delete X
    deletecollection X
    表 5. 允许的资源许可权(按角色排列)
    资源 管理员 操作者 编辑者 查看者
    clusterrolebindings.rbac.authorization.k8s.io X
    clusterservicebrokers.servicecatalog.k8s.io (仅查看访问权) X X X X
    clusterserviceclasses.servicecatalog.k8s.io (仅查看访问权) X X X X
    clusterserviceplans.servicecatalog.k8s.io (仅查看访问权) X X X X
    configmaps X X X X
    cronjobs.batch X X X X
    daemonsets.apps X X X X
    daemonsets.extensions X X X X
    deployments.apps X X X X
    deployments.extensions X X X X
    deployments.apps/rollback X X X
    deployments.extensions/rollback X X X
    deployments.apps/scale X X X X
    deployments.extensions/scale X X X X
    endpoints X X X X
    events X X X X
    horizontalpodautoscalers.autoscaling X X X X
    images.icp.ibm.com X X X X
    ingresses.extensions X X X X
    jobs.batch X X X X
    limitranges X X X X
    localsubjectaccessreviews.authorization.k8s.io X
    namespaces X X X X
    namespaces/status X X X X
    networkpolicies.extensions X X X X
    networkpolicies.networking.k8s.io X X X X
    persistentvolumeclaims X X X X
    poddisruptionbudgets.policy X
    pods X X X X
    pods/attach X X X
    pods/exec X X X
    pods/log X X X X
    pods/portforward X X X
    pods/proxy X X X
    pods/status X X X X
    replicasets.apps X X X X
    replicasets.extensions X X X X
    replicasets.apps/scale X X X X
    replicasets.extensions/scale X X X X
    replicationcontrollers X X X X
    replicationcontrollers/scale X X X X
    replicationcontrollers.extensions/scale X X X X
    replicationcontrollers/status X X X X
    resourcequotas X X X X
    resourcequotas/status X X X X
    rolebindings.rbac.authorization.k8s.io X
    roles.rbac.authorization.k8s.io X
    scheduledjobs.batch X
    secrets X X X
    serviceaccounts X X X X
    servicebindings.servicecatalog.k8s.io X X X X
    servicebindings.servicecatalog.k8s.io/status X X X X
    serviceinstances.servicecatalog.k8s.io X X X X
    serviceinstances.servicecatalog.k8s.io/status X X X X
    services X X X
    services/proxy X X X X
    statefulsets.apps X X X X