
# 集群联邦RBAC授权
UCS集群联邦可以实现基于华为云IAM的精细化权限管理。并在联邦中创建 Kubernetes 原生 RBAC 资源，实现联邦访问权限的精细化管理。
#### 使用须知
- UCS的[权限管理](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0009.html)功能与当前联邦RBAC授权互不影响。使用UCS API时，前者生效；使用KubeConfig直接操作联邦时，后者生效。
- 在集群联邦和成员集群上分别创建的RBAC资源互相不感知、不影响。通过集群联邦入口配置的RBAC权限仅直接访问联邦时生效；直接访问成员集群时，仅成员集群上配置的RBAC生效。
- 在分配细粒度鉴权时，谨慎使用ClusterRole、ClusterRoleBinding等相关权限和角色配置，避免将资源查看权限赋予"Karmada-"为前缀的命名空间；建议使用Role、RoleBinding对指定用户命名空间的资源赋予权限。
 
#### 集群联邦RBAC授权
UCS集群联邦使用Kubernetes原生RBAC鉴权方式，通过创建RBAC资源，为子用户授予联邦访问权限。
1. 使用拥有Tenant Administrator权限的用户，下载并配置好 KubeConfig 文件。详细请参见[使用kubectl连接集群联邦](https://support.huaweicloud.com/usermanual-ucs/ucs_01_0320.html)。
2. 将如下内容保存为list-deploy.yaml文件。 
   ```
   apiVersion: rbac.authorization.k8s.io/v1
   kind: RoleBinding
   metadata:
     name: list-deploy-role-binding
     namespace: default
   roleRef:
     apiGroup: rbac.authorization.k8s.io
     kind: Role
     name: list-deploy-role
   subjects:
     - apiGroup: rbac.authorization.k8s.io
       kind: User
       name: <user-id>    # IAM用户ID
     - apiGroup: rbac.authorization.k8s.io
       kind: Group
       name: <group-id>   # IAM用户组的ID
   ---
   apiVersion: rbac.authorization.k8s.io/v1
   kind: Role
   metadata:
     name: list-deploy-role
     namespace: default
   rules:
     - apiGroups:
         - apps
       resources:
         - deployments
       verbs:
         - list
         - get
   ```
   其中，\<user-id\>为IAM用户ID，\<group-id\>为IAM用户组ID。Role与RoleBinding的字段含义详见[使用 RBAC 鉴权](https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/)。
   使用如下命令创建对应的资源：
   ```
   kubectl apply -f list-deploy.yaml
   ```
   创建完成后，\<user-id\>用户或\<group-id\>用户组下的用户可使用查看default命名空间的deployment：
   ```
   kubectl get deploy -n default
   ```
   
   
 
