国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

kubernetes RBAC實戰(zhàn) kubernetes 用戶角色訪問控制,dashboard訪問,

sherlock221 / 1739人閱讀

摘要:這個用戶或者組用于后面的角色綁定使用生成的證書就會生成下面的文件校驗證書生成文件已經(jīng)生成了,我們可以直接利用這個文件,省的自己再去配置集群參數(shù)設(shè)置客戶端認(rèn)證參數(shù)設(shè)置上下文參數(shù)設(shè)置莫認(rèn)上下文以上執(zhí)行一個步驟就可以看一下的變化。

kubernetes RBAC實戰(zhàn) 環(huán)境準(zhǔn)備

先用kubeadm安裝好kubernetes集群,kubernetes1.8.2安裝包 | kubernetes1.9.2安裝包好用又方便,服務(wù)周到,童叟無欺

本文目的,讓名為devuser的用戶只能有權(quán)限訪問特定namespace下的pod

命令行kubectl訪問 安裝cfssl

此工具生成證書非常方便, pem證書與crt證書,編碼一致可直接使用

wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
chmod +x cfssl_linux-amd64
mv cfssl_linux-amd64 /bin/cfssl

wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssljson_linux-amd64
mv cfssljson_linux-amd64 /bin/cfssljson

wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /bin/cfssl-certinfo
簽發(fā)客戶端證書

根據(jù)ca證書與么鑰簽發(fā)用戶證書
根證書已經(jīng)在/etc/kubernetes/pki目錄下了

[root@master1 ~]# ls /etc/kubernetes/pki/
apiserver.crt                 ca-config.json  devuser-csr.json    front-proxy-ca.key      sa.pub
apiserver.key                 ca.crt          devuser-key.pem     front-proxy-client.crt
apiserver-kubelet-client.crt  ca.key          devuser.pem         front-proxy-client.key
apiserver-kubelet-client.key  devuser.csr     front-proxy-ca.crt  sa.key

注意以下幾個文件: ca.crt ca.key ca-config.json devuser-csr.json

創(chuàng)建ca-config.json文件

cat > ca-config.json <

創(chuàng)建devuser-csr.json文件:
k8s的用戶名就是從CN上獲取的。 組是從O上獲取的。這個用戶或者組用于后面的角色綁定使用

cat > devuser-csr.json <

生成user的證書:

$ cfssl gencert -ca=ca.crt -ca-key=ca.key -config=ca-config.json -profile=kubernetes devuser-csr.json | cfssljson -bare devuser

就會生成下面的文件:

devuser.csr  devuser-key.pem  devuser.pem
校驗證書
# cfssl-certinfo -cert kubernetes.pem
生成config文件

kubeadm已經(jīng)生成了admin.conf,我們可以直接利用這個文件,省的自己再去配置集群參數(shù)

$  cp /etc/kubernetes/admin.conf devuser.kubeconfig

設(shè)置客戶端認(rèn)證參數(shù):

kubectl config set-credentials devuser 
--client-certificate=/etc/kubernetes/ssl/devuser.pem 
--client-key=/etc/kubernetes/ssl/devuser-key.pem 
--embed-certs=true 
--kubeconfig=devuser.kubeconfig

設(shè)置上下文參數(shù):

kubectl config set-context kubernetes 
--cluster=kubernetes 
--user=devuser 
--namespace=kube-system 
--kubeconfig=devuser.kubeconfig

設(shè)置莫認(rèn)上下文:

kubectl config use-context kubernetes --kubeconfig=devuser.kubeconfig

以上執(zhí)行一個步驟就可以看一下 devuser.kubeconfig的變化。里面最主要的三個東西

cluster: 集群信息,包含集群地址與公鑰

user: 用戶信息,客戶端證書與私鑰,正真的信息是從證書里讀取出來的,人能看到的只是給人看的。

context: 維護一個三元組,namespace cluster 與 user

創(chuàng)建角色

創(chuàng)建一個叫pod-reader的角色

[root@master1 ~]# cat pod-reader.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: kube-system
  name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["pods"]
  verbs: ["get", "watch", "list"]
kubectl create -f pod-reader.yaml
綁定用戶

創(chuàng)建一個角色綁定,把pod-reader角色綁定到 devuser上

[root@master1 ~]# cat devuser-role-bind.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: read-pods
  namespace: kube-system
subjects:
- kind: User
  name: devuser   # 目標(biāo)用戶
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader  # 角色信息
  apiGroup: rbac.authorization.k8s.io
kubectl create -f devuser-role-bind.yaml
使用新的config文件
$ rm .kube/config && cp devuser.kubeconfig .kube/config

效果, 已經(jīng)沒有別的namespace的權(quán)限了,也不能訪問node信息了:

[root@master1 ~]# kubectl get node
Error from server (Forbidden): nodes is forbidden: User "devuser" cannot list nodes at the cluster scope

[root@master1 ~]# kubectl get pod -n kube-system
NAME                                       READY     STATUS    RESTARTS   AGE
calico-kube-controllers-55449f8d88-74x8f   1/1       Running   0          8d
calico-node-clpqr                          2/2       Running   0          8d
kube-apiserver-master1                     1/1       Running   2          8d
kube-controller-manager-master1            1/1       Running   1          8d
kube-dns-545bc4bfd4-p6trj                  3/3       Running   0          8d
kube-proxy-tln54                           1/1       Running   0          8d
kube-scheduler-master1                     1/1       Running   1          8d

[root@master1 ~]# kubectl get pod -n default
Error from server (Forbidden): pods is forbidden: User "devuser" cannot list pods in the namespace "default": role.rbac.authorization.k8s.io "pod-reader" not found
dashboard訪問 service account原理

k8s里面有兩種用戶,一種是User,一種就是service account,User給人用的,service account給進程用的,讓進程有相關(guān)的權(quán)限。

如dasboard就是一個進程,我們就可以創(chuàng)建一個service account給它,讓它去訪問k8s。

我們看一下是如何把admin權(quán)限賦給dashboard的:

╰─?  cat dashboard-admin.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system

把 kubernetes-dashboard 這個ServiceAccount綁定到cluster-admin這個ClusterRole上,這個cluster role非常牛逼,啥權(quán)限都有

[root@master1 ~]# kubectl describe clusterrole cluster-admin -n kube-system
Name:         cluster-admin
Labels:       kubernetes.io/bootstrapping=rbac-defaults
Annotations:  rbac.authorization.kubernetes.io/autoupdate=true
PolicyRule:
  Resources  Non-Resource URLs  Resource Names  Verbs
  ---------  -----------------  --------------  -----
             [*]                []              [*]
  *.*        []                 []              [*]

而創(chuàng)建dashboard時創(chuàng)建了這個service account:

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system

然后deployment里指定service account

      volumes:
      - name: kubernetes-dashboard-certs
        secret:
          secretName: kubernetes-dashboard-certs
      - name: tmp-volume
        emptyDir: {}
      serviceAccountName: kubernetes-dashboard
更安全的做法
[root@master1 ~]# cat admin-token.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
[root@master1 ~]# kubectl get secret -n kube-system|grep admin
admin-token-7rdhf                        kubernetes.io/service-account-token   3         14m
[root@master1 ~]# kubectl describe secret admin-token-7rdhf -n kube-system
Name:         admin-token-7rdhf
Namespace:    kube-system
Labels:       
Annotations:  kubernetes.io/service-account.name=admin
              kubernetes.io/service-account.uid=affe82d4-d10b-11e7-ad03-00163e01d684

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi03cmRoZiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImFmZmU4MmQ0LWQxMGItMTFlNy1hZDAzLTAwMTYzZTAxZDY4NCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.jSfQhFsY7V0ZmfqxM8lM_UUOoUhI86axDSeyVVtldSUY-BeP2Nw4q-ooKGJTBBsrOWvMiQePcQxJTKR1K4EIfnA2FOnVm4IjMa40pr7-oRVY37YnR_1LMalG9vrWmqFiqIsKe9hjkoFDuCaP7UIuv16RsV7hRlL4IToqmJMyJ1xj2qb1oW4P1pdaRr4Pw02XBz9yBpD1fs-lbwheu1UKcEnbHS_0S3zlmAgCrpwDFl2UYOmgUKQVpJhX4wBRRQbwo1Sn4rEFVI1NIa9l_lM7Mf6YEquLHRu3BCZTdu9YfY9pevQz4OfHE0NOvDIqmGRL8Z9kPADAXbljWzcD1m1xCQ

用此token在界面上登錄即可

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27139.html

相關(guān)文章

  • 【容器云 UK8S】最佳實踐:權(quán)限管理之了解RBAC和權(quán)限管理實踐

    摘要:本文介紹了模型中四個最主要的對象,即,大致了解了的工作原理和使用方法,如果要更加深入地了解和掌握,可以查看官方文檔。只是這個不能復(fù)用到其他,一般只有在做精細(xì)化權(quán)限管理的時候,我們才會創(chuàng)建對象,比如一個只能查看名稱為的。了解RBAC簡介RBAC是一種基于角色來管理對計算機或網(wǎng)絡(luò)資源訪問策略的方法。我們知道,對K8S內(nèi)所有API對象的操作都是通過訪問kube-apiserver來完成的,因此ku...

    Tecode 評論0 收藏0
  • 【k8s】在AWS EKS部署并通過ALB訪問k8s Dashboard保姆級教程

    摘要:本教程適用范圍本教程適用范圍在上使用服務(wù)部署,并通過訪問集群計算節(jié)點采用托管,并使用啟動模板。到此,完成集群的搭建,部署,部署,并實現(xiàn)了外網(wǎng)訪問。本教程適用范圍在AWS上使用EKS服務(wù)部署k8s Dashboard,并通過ALB訪問EKS集群計算節(jié)點采用托管EC2,并使用啟動模板。使用AWS海外賬號,us-west-2區(qū)域使用賬號默認(rèn)vpc(172.31.0.0/16)和子網(wǎng)使用awscli...

    番茄西紅柿 評論0 收藏2637
  • Rancher中的K8S認(rèn)證和RBAC

    摘要:在中使用驗證使用身份驗證策略來認(rèn)證用戶的。審閱狀態(tài)包含名稱和組等用戶信息。中的授權(quán)模塊稍后將以此確定該用戶的訪問級別。認(rèn)證請求認(rèn)證服務(wù)決定該用戶是否通過認(rèn)證,并向發(fā)送響應(yīng)。在對的請求成功進行認(rèn)證之后,必須授權(quán)該請求。 Rancher Kubernetes擁有RBAC(基于角色的訪問控制)功能,此功能可以讓管理員配置不同的策略,允許或拒絕用戶和服務(wù)帳戶訪問Kubernetes API資源...

    raise_yang 評論0 收藏0
  • Rancher中的K8S認(rèn)證和RBAC

    摘要:在中使用驗證使用身份驗證策略來認(rèn)證用戶的。審閱狀態(tài)包含名稱和組等用戶信息。中的授權(quán)模塊稍后將以此確定該用戶的訪問級別。認(rèn)證請求認(rèn)證服務(wù)決定該用戶是否通過認(rèn)證,并向發(fā)送響應(yīng)。在對的請求成功進行認(rèn)證之后,必須授權(quán)該請求。 Rancher Kubernetes擁有RBAC(基于角色的訪問控制)功能,此功能可以讓管理員配置不同的策略,允許或拒絕用戶和服務(wù)帳戶訪問Kubernetes API資源...

    Forest10 評論0 收藏0
  • Kubernetes安全三步談:三種方法保護Kubernetes免受內(nèi)部威脅

    摘要:若企業(yè)想要保護集群不受內(nèi)部威脅無論是來自實際的惡意內(nèi)部威脅,還是僅僅是防止錯誤或錯誤編碼傳播時,防御的手段非常少。不過所幸的是,有一些解決方案已經(jīng)著眼于保護集群免受未經(jīng)授權(quán)的內(nèi)部訪問。 這是關(guān)于Kubernetes安全系列三篇文章中的第二篇。在上篇文章中我們分享了如何確保企業(yè)的Kubernetes集群免受外部攻擊,這篇文章中我們將分享三種保護Kubernetes免受內(nèi)部威脅的方法,后續(xù)...

    ghnor 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<