예제 앞에서, 우리가 만들 ServiceAccount는 바인딩 및 클러스터 관리자는 기본 사용자가 가장 높은 권위, 실제 생산 환경, 종종 운영 및 유지 보수 인력에 대해 다른 미리 할당 된 다른 권한이 필요합니다. 그리고 실제 상황에 따라이있다 읽기 전용하는 개발자 권한을 부여 할 수있다.이 절에서 우리는 다른 사용자의 권한을 만드는 방법을 설명합니다.
우리가 시작하기 전에 우리는 먼저는 Kubernetes RABA의에 대한 몇 가지 기본 개념을 이해합니다.
- 역할
역할 명시 적 허가는 축적 할 수, 일련의 규칙, 역할이 네임 스페이스에 정의 할 수 있습니다, 단지 리소스에 대한 액세스의 단일 네임 스페이스에 대한 권한을 부여 할 수 있습니다. 예를 들어, 우리는 역할 포드의 기본 네임 스페이스를 만들에 액세스 할 수 있습니다
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
- ClusterRole
ClusterRole는 차이가, 그것을 사용할 수 있습니다 ClusterRole 클러스터 수준이다 동일한 권한 역할 역할 제어 할 수 있습니다 :
클러스터 수준 자원 제어 (예를 들어, 액세스 노드)
비 기반 자원 엔드 포인트 (예를 들면, / healthz 액세스)
모든 공간 자원 제어 (예 : 포드 등)
예를 들어, 우리는 비밀 클러스터 역할에 액세스 할 수 (바인딩 모드에 따라) 특정 네임 스페이스에 대한 권한 부여 또는 모든 네임 스페이스를 만들려면 :
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
# "namespace" omitted since ClusterRoles are not namespaced
name: secret-reader
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list"]
- RoleBinding和ClusterRoleBinding
사용자 또는 사용자 그룹에 부여 할 수있는 정의 된 권한 역할을 RoloBinding, RoleBinding 권한 목록 (과목)의 집합, 자원 유형 (사용자, 그룹, 서비스 계정)의 다른 형태가 될 수있는 권한이 부여 된 권한의 목록이 포함되어 포함 RoleBinding A에 대한 네임 스페이스의 권한 내에서, 그리고 ClusterRoleBinding 권한 부여 전체 클러스터에 적용됩니다.
예를 들어, 우리는 사용자 제인에게 부여 포드 리더 역할 네임 스페이스를 기본되므로, 사용자 네임 스페이스 후 기본 권한은 포드 리더있을 것이다 :
# This role binding allows "jane" to read pods in the "default" namespace.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: read-pods
namespace: default
subjects:
- kind: User
name: jane
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
RoleBinding도 ClusterRole 현재 사용자, 사용자 그룹 또는 ServiceAccount 내에서 네임 스페이스를 허가 참조 할 수 있습니다,이 작업은 클러스터 관리자는 클러스터 전반에 걸쳐 일반적인 ClusterRole를 정의하고 참조하는 다른 네임 스페이스 RoleBinding을 사용할 수 있습니다
하지만 (RoleBinding 개발에 네임 스페이스를 정의하기 때문에) 만 데이브 개발 공간의 비밀에 액세스 할 권한을 부여, 예를 들어, 다음 RoleBinding는 ClusterRole이 ClusterRole는 전체 클러스터의 비밀에 대한 액세스 권한을 인용
# This role binding allows "dave" to read secrets in the "development" namespace.
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: read-secrets
namespace: development # This only grants permissions within the "development" namespace.
subjects:
- kind: User
name: dave
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io
ClusterRoleBinding 모든 네임 스페이스 자원 권한 전체 클러스터의 사용을 허가 할 수있다; ClusterRoleBinding 다음 예는 그룹 관리자 내의 모든 사용자가 네임 스페이스의 모두 비밀에 접근 할 권한을 보여줍니다
# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: read-secrets-global
subjects:
- kind: Group
name: manager
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: secret-reader
apiGroup: rbac.authorization.k8s.io
사용자 권한 대시 보드를 제한
우리는 새로운 사용자를 생성 할 수 있기 때문에 우리는 다음과 같은 기능을 달성하기 위해이기 때문에 위의 이론적 기반으로, 사용자의 등을 특정 액세스 권한을 할당 :
새 사용자 타일러 (tyler.yml)를 추가
사용자는 네임 스페이스 포드 배포를 다음 시스템을 KUBE 및 관리 할 수 있습니다
먼저,이를 만들 수
ServiceAccount
kubectl는 타일러를 만들 수 -n-KUBE 시스템
- 그리고 우리는 새로운 역할 역할 타일러 (역할 tyler.yml)를 만들
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: kube-system
name: role-tyler
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
- apiGroups: ["extensions", "apps"]
resources: ["deployments"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
관리 권한 포드 및 배포 : 위의 규칙이 지배합니다.
사용자는 권한 역할이 그래서 그 다음 우리는, 역할 바인딩을 만드는 역할 - 타일러 타일러 역할에 사용자를 바인딩합니다.
파일을 생성하는 명령을 실행
$ kubect create -f tyler.yml
$ kubect create -f role-tyler.yml
안무 동작 기관, 쉽지 않은 버전 관리 더 복잡한 안무 권한을 복잡 우리가 역할을 생성하는 명령을 사용하고있는 이전 및 바인딩 기존의 역할은,이 방법은 여기 쉽게 간단하고 할 빠른 것이 아니라, YML은 선언적인 방법을 사용하여 작성하는 것이 좋습니다.
토큰을 사용하여 로그인 만들기
우리가 말한 것처럼, 대한 사용자의 비밀 이름 用户名-token-随机字符串
형식은. 우리가 사용할 수있는 kubectl describe secret secret名称 -n=kube-system
당신이 착륙 할 수있는 대시 보드 방문 페이지를 토큰 비밀 볼 방법을 다음 토큰을 복사합니다.