10.8. 对 Loki 日志的精细访问
在 logging 子系统 5.8 及更高版本中,ClusterLogging Operator 默认不授予所有用户对日志的访问权限。作为管理员,您需要配置用户访问权限,除非 Operator 已升级并且以前的配置已就位。根据您的配置和需要,您可以使用以下内容配置对日志的精细访问:
- 集群范围内的策略
- 命名空间范围策略
- 创建自定义 admin 组
作为管理员,您需要创建适合部署的角色绑定和集群角色绑定。ClusterLogging Operator 提供以下集群角色:
-
cluster-logging-application-view
授予读取应用程序日志的权限。 -
cluster-logging-infrastructure-view
授予读取基础架构日志的权限。 -
cluster-logging-audit-view
授予读取审计日志的权限。
如果您从以前的版本升级,则额外的集群角色 logging-application-logs-reader
和关联的集群角色绑定 logging-all-authenticated-application-logs-reader
提供向后兼容性,允许任何经过身份验证的用户在命名空间中读取访问权限。
在查询应用程序日志时,具有命名空间权限的用户必须提供命名空间。
10.8.1. 集群范围内的访问
集群角色绑定资源引用集群角色,以及设置集群范围的权限。
ClusterRoleBinding 示例
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: logging-all-application-logs-reader roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-logging-application-view 1 subjects: 2 - kind: Group name: system:authenticated apiGroup: rbac.authorization.k8s.io
10.8.2. 命名空间访问
RoleBinding
资源可用于 ClusterRole
对象来定义用户或组可以访问日志的命名空间。
RoleBinding 示例
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: allow-read-logs
namespace: log-test-0 1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-logging-application-view
subjects:
- kind: User
apiGroup: rbac.authorization.k8s.io
name: testuser-0
- 1
- 指定此
RoleBinding
应用到的命名空间。
10.8.3. 自定义 admin 组访问
如果您的部署有很多需要更广泛的用户,您可以使用 adminGroup
字段创建自定义组。属于 LokiStack CR 的 adminGroups
字段中指定的任何组的成员的用户被视为 admins。如果还被分配了 cluster-logging-application-view
角色,则管理员用户有权访问所有命名空间中的所有应用程序日志。
LokiStack CR 示例
apiVersion: loki.grafana.com/v1 kind: LokiStack metadata: name: logging-loki namespace: openshift-logging spec: tenants: mode: openshift-logging 1 openshift: adminGroups: 2 - cluster-admin - custom-admin-group 3