×

关于作用域令牌

您可以创建作用域令牌,以将您的部分权限委派给其他用户或服务帐户。例如,项目管理员可能希望委派创建 Pod 的权限。

作用域令牌是标识为给定用户但其作用域限制了某些操作的令牌。只有具有 `dedicated-admin` 角色的用户才能创建作用域令牌。

作用域通过将令牌的作用域集转换为 `PolicyRules` 集来评估。然后,将请求与这些规则匹配。请求属性必须与至少一个作用域规则匹配才能传递给“常规”授权器以进行进一步的授权检查。

用户作用域

用户作用域专注于获取有关给定用户的信息。它们是基于意图的,因此规则会自动为您创建。

  • user:full - 允许对 API 进行完全读/写访问,包括用户的所有权限。

  • user:info - 允许只读访问有关用户的信息,例如姓名和组。

  • user:check-access - 允许访问 `self-localsubjectaccessreviews` 和 `self-subjectaccessreviews`。这些是在请求对象中传递空用户和组的变量。

  • user:list-projects - 允许只读访问列出用户有权访问的项目。

角色作用域

角色作用域允许您拥有与给定角色相同的访问级别,并按命名空间进行过滤。

  • role:<cluster-role name>:<namespace or * for all> - 将作用域限制为集群角色指定的规则,但仅限于指定的命名空间。

    警告:这可以防止权限升级。即使该角色允许访问诸如密钥、角色绑定和角色之类的资源,此作用域也会拒绝访问这些资源。这有助于防止意外的权限升级。许多人并不认为像 `edit` 这样的角色是升级角色,但如果可以访问密钥,它就是。

  • role:<cluster-role name>:<namespace or * for all>:! - 这与上面的示例类似,除了包含感叹号会导致此作用域允许权限升级。

将未经身份验证的组添加到集群角色

作为集群管理员,您可以通过创建集群角色绑定来将未经身份验证的用户添加到 AWS 上的 Red Hat OpenShift Service 中的以下集群角色。未经身份验证的用户无权访问非公共集群角色。这应仅在必要时在特定用例中执行。

您可以将未经身份验证的用户添加到以下集群角色:

  • system:scope-impersonation

  • system:webhook

  • system:oauth-token-deleter

  • self-access-reviewer

修改未经身份验证的访问权限时,请务必验证是否符合您组织的安全标准。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问集群。

  • 您已安装 OpenShift CLI(`oc`)。

步骤
  1. 创建一个名为 `add-<cluster_role>-unauth.yaml` 的 YAML 文件并添加以下内容:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
     annotations:
       rbac.authorization.kubernetes.io/autoupdate: "true"
     name: <cluster_role>access-unauthenticated
    roleRef:
     apiGroup: rbac.authorization.k8s.io
     kind: ClusterRole
     name: <cluster_role>
    subjects:
     - apiGroup: rbac.authorization.k8s.io
       kind: Group
       name: system:unauthenticated
  2. 运行以下命令应用配置:

    $ oc apply -f add-<cluster_role>.yaml