10.3. 为服务帐户授予角色的示例
您可以像为常规用户帐户授予角色一样,为服务帐户授予角色。
您可以修改当前项目的服务帐户。例如,将
view
角色添加到top-secret
项目中的robot
服务帐户:$ oc policy add-role-to-user view system:serviceaccount:top-secret:robot
提示您还可以应用以下 YAML 来添加角色:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: view namespace: top-secret roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view subjects: - kind: ServiceAccount name: robot namespace: top-secret
您也可以向项目中的特定服务帐户授予访问权限。例如,在服务帐户所属的项目中,使用
-z
标志并指定<service_account_name>
$ oc policy add-role-to-user <role_name> -z <service_account_name>
重要如果要向项目中的特定服务帐户授予访问权限,请使用
-z
标志。使用此标志有助于预防拼写错误,并确保只为指定的服务帐户授予访问权限。提示您还可以应用以下 YAML 来添加角色:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: <rolebinding_name> namespace: <current_project_name> roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: <role_name> subjects: - kind: ServiceAccount name: <service_account_name> namespace: <current_project_name>
要修改不同的命名空间,可以使用
-n
选项指定它要应用到的项目命名空间,如下例所示。例如,允许所有项目中的所有服务帐户查看
my-project
项目中的资源:$ oc policy add-role-to-group view system:serviceaccounts -n my-project
提示您还可以应用以下 YAML 来添加角色:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: view namespace: my-project roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:serviceaccounts
允许
managers
项目中的所有服务帐户编辑my-project
项目中的资源:$ oc policy add-role-to-group edit system:serviceaccounts:managers -n my-project
提示您还可以应用以下 YAML 来添加角色:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: edit namespace: my-project roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: edit subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: system:serviceaccounts:managers