亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    Kubernetes API服務(wù)器的安全防護(hù)

    正文

    12.1.了解認(rèn)證機(jī)制

      啟動(dòng)API服務(wù)器時(shí),通過(guò)命令行選項(xiàng)可以開(kāi)啟認(rèn)證插件。

    12.1.1.用戶和組

    了解用戶:

      分為兩種連接到api服務(wù)器的客戶端:

      1.真實(shí)的人

      2.pod,使用一種稱為ServiceAccount的機(jī)制

    了解組:

      認(rèn)證插件會(huì)連同用戶名,和用戶id返回組,組可以一次性給用戶服務(wù)多個(gè)權(quán)限,不用單次賦予,

      system:unauthenticated組:用于所有認(rèn)證插件都不會(huì)認(rèn)證客戶端身份的請(qǐng)求。

      system:authenticated組:會(huì)自動(dòng)分配給一個(gè)成功通過(guò)認(rèn)證的用戶。

      system:serviceaccount組:包含 所有在系統(tǒng)中的serviceaccount。

      system:serviceaccount:<namespace>組:包含了所有在特定命名空間中的serviceAccount。

    12.1.2 ServiceAccount介紹

      每個(gè)pod中都包含/var/run/secrets/kubernetes.io/serviceaccount/token文件,如下圖所示,文件內(nèi)容用于對(duì)身份進(jìn)行驗(yàn)證,token文件持有serviceaccount的認(rèn)證token。

      Kubernetes API服務(wù)器的安全防護(hù)

      應(yīng)用程序使用token去連接api服務(wù)器時(shí),認(rèn)證插件會(huì)對(duì)serviceaccount進(jìn)行身份認(rèn)證,并將serviceaccount的用戶名傳回到api服務(wù)器內(nèi)部。

           serviceaccount的用戶名格式如下:

      system:serviceaccount:<namespace>:<service account name>

      ServiceAccount是運(yùn)行在pod中的應(yīng)用程序,和api服務(wù)器身份認(rèn)證的一中方式。

    了解ServiceAccount資源

      ServiceAcount作用在單一命名空間,為每個(gè)命名空間創(chuàng)建默認(rèn)的ServiceAccount。

           Kubernetes API服務(wù)器的安全防護(hù)

      多個(gè)pod可以使用相同命名空間下的同一的ServiceAccount,

     ServiceAccount如何與授權(quán)文件綁定

       在pod的manifest文件中,可以指定賬戶名稱的方式,將一個(gè)serviceAccount賦值給一個(gè)pod,如果不指定,將使用該命名空間下默認(rèn)的ServiceAccount.

       可以 將不同的ServiceAccount賦值給pod,讓pod訪問(wèn)不同的資源。

     

     

    12.1.3創(chuàng)建ServiceAccount

      為了集群的安全性,可以手動(dòng)創(chuàng)建ServiceAccount,可以限制只有允許的pod訪問(wèn)對(duì)應(yīng)的資源。

            創(chuàng)建方法如下:

    $ kubectl get sa
    NAME      SECRETS  AGE
    default  1        21h
     
     
    $ kubectl create serviceaccount yaohong
    serviceaccount/yaohong created
     
     
    $ kubectl get sa
    NAME      SECRETS  AGE
    default  1        21h
    yaohong  1        3s

      使用describe來(lái)查看ServiceAccount。

    $ kubectl describe sa yaohong
    Name:                yaohong
    Namespace:          default
    Labels:              <none>
    Annotations:        <none>
    Image pull secrets:  <none>
    Mountable secrets:  yaohong-token-qhbxn  //如果強(qiáng)制使用可掛載秘鑰。那么使用這個(gè)serviceaccount的pod只能掛載這個(gè)秘鑰
    Tokens:              yaohong-token-qhbxn
    Events:              <none>

      查看該token,

    $ kubectl describe secret yaohong-token-qhbxn
    Name:        yaohong-token-qhbxn
    Namespace:    default
    Labels:      <none>
    Annotations:  kubernetes.io/service-account.name: yaohong
                  kubernetes.io/service-account.uid: a3d0d2fe-bb43-11e9-ac1e-005056870b4d
     
    Type:  kubernetes.io/service-account-token
     
    Data
    ====
    ca.crt:    1342 bytes
    namespace:  7 bytes
    token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Inlhb2hvbmctdG9rZW4tcWhieG4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoieWFvaG9uZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImEzZDBkMmZlLWJiNDMtMTFlOS1hYzFlLTAwNTA1Njg3MGI0ZCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Onlhb2hvbmcifQ.BwmbZKoM95hTr39BuZhinRT_vHF-typH4anjkL0HQxdVZEt_eie5TjUECV9UbLRRYIqYamkSxmyYapV150AQh-PvdcLYPmwKQLJDe1-7VC4mO2IuVdMCI_BnZFQBJobRK9EdPdbZ9uxc9l0RL5I5WyWoIjiwbrQvtCUEIkjT_99_NngdrIr7QD9S5SxHurgE3HQbmzC6ItU911LjmxtSvBqS5NApJoJaztDv0cHKvlT67ZZbverJaStQdxr4yiRbpSycRNArHy-UZKbNQXuzaZczSjVouo5A5hzgSHEBBJkQpQ6Tb-Ko5XGjjCgV_b9uQvhmgdPAus8GdFTTFAbCBw  

     

    12.1.4將ServiceAccount分配給pod

      在pod中定義的spec.serviceAccountName字段上設(shè)置,此字段必須在pod創(chuàng)建時(shí)設(shè)置后續(xù)不能被修改。

      自定義pod的ServiceAccount的方法如下圖

          Kubernetes API服務(wù)器的安全防護(hù)

    12.2通過(guò)基于角色的權(quán)限控制加強(qiáng)集群安全

    12.2.1.介紹RBAC授權(quán)插件

      RBAC授權(quán)插件將用戶角色作為決定用戶能否執(zhí)行操作的關(guān)機(jī)因素。

     

    12.2.2介紹RBAC授權(quán)資源

      RBAC授權(quán)規(guī)則通過(guò)四種資源來(lái)進(jìn)行配置的,他們可以分為兩組:

        Role和ClusterRole,他們決定資源上可執(zhí)行哪些動(dòng)詞。

             RoleBinding和ClusterRoleBinding,他們將上述角色綁定到特定的用戶,組或者ServiceAccounts上。

      Role和RoleBinding是namespace級(jí)別資源

      ClusterRole和ClusterRoleBinding是集群級(jí)別資源

    12.2.3使用Role和RoleBinding

       Role資源定義了哪些操作可以在哪些資源上執(zhí)行,

    創(chuàng)建Role

      service-reader.yml

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      namespace: kube-system
      name: service-reader
    rules:
    – apiGroups: [“”]
      verbs: [“get”, “list”]
      resources: [“services”]

      在kube-system中創(chuàng)建Role

    #kubectl -n kube-system create -f service-reader.yml

      查看該namespace下的role

    $ kubectl -n kube-system get role
    NAME                                            AGE
    extension-apiserver-authentication-reader        41h
    kube-state-metrics-resizer                      41h
    service-reader                                  2m17s
    system::leader-locking-kube-controller-manager  41h
    system::leader-locking-kube-scheduler            41h
    system:controller:bootstrap-signer              41h
    system:controller:cloud-provider                41h
    system:controller:token-cleaner                  41h

    綁定角色到ServiceAccount

       將service-reader角色綁定到default ServiceAccount

    $ kubectl  create rolebinding test –role=service-reader
    rolebinding.rbac.authorization.k8s.io/test created

      Kubernetes API服務(wù)器的安全防護(hù)

    $ kubectl  get rolebinding test -o yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      creationTimestamp: 2019-08-11T03:40:51Z
      name: test
      namespace: default
      resourceVersion: “239323”
      selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/test
      uid: d0aff243-bbe9-11e9-ac1e-005056870b4d
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: service-reader

     

    12.2.4使用ClusterRole和ClusterRoleBinding

     查看集群ClusterRole

    # kubectl get clusterrole
    NAME                                                                  AGE
    admin                                                                  42h
    cluster-admin                                                          42h
    edit                                                                  42h
    flannel                                                                42h
    kube-state-metrics                                                    42h
    system:aggregate-to-admin                                              42h

    創(chuàng)建ClusterRole

    kubectl create clusterrole flannel –verb=get,list -n kube-system

    查看yaml文件

    # kubectl get  clusterrole flannel -o yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {“apiVersion”:”rbac.authorization.k8s.io/v1″,”kind”:”ClusterRole”,”metadata”:{“annotations”:{},”name”:”flannel”},”rules”:[{“apiGroups”:[“”],”resources”:[“pods”],”verbs”:[“get”]},{“apiGroups”:[“”],”resources”:[“nodes”],”verbs”:[“list”,”watch”]},{“apiGroups”:[“”],”resources”:[“nodes/status”],”verbs”:[“patch”]}]}
      creationTimestamp: 2019-08-09T09:58:42Z
      name: flannel
      resourceVersion: “360”
      selfLink: /apis/rbac.authorization.k8s.io/v1/clusterroles/flannel
      uid: 45100f6f-ba8c-11e9-8f57-005056870608
    rules:
    – apiGroups:
      – “”
      resources:
      – pods
      verbs:
      – get
    – apiGroups:
      – “”
      resources:
      – nodes
      verbs:
      – list
      – watch
    – apiGroups:
      – “”
      resources:
      – nodes/status
      verbs:
      – patch

     

    創(chuàng)建clusterRoleBinding

    $ kubectl  create clusterrolebinding  cluster-tetst  –clusterrole=pv-reader  –serviceaccount=kuebsystem:yaohong
    clusterrolebinding.rbac.authorization.k8s.io/cluster-tetst created

      Kubernetes API服務(wù)器的安全防護(hù)

     

     

    12.2.5了解默認(rèn)的ClusterRole和ClusterRoleBinding

    如下所示使用kubectl get clusterroles和kubectl get clusterrolesbinding可以獲取k8s默認(rèn)資源。

    用edit ClusterRole允許對(duì)資源進(jìn)行修改

    用admin ClusterRole賦予一個(gè)命名空間全部的權(quán)限

    $ kubectl get clusterroles
    NAME                                                                  AGE
    admin                                                                  44h
    cluster-admin                                                          44h
    edit                                                                  44h
    flannel                                                                44h
    kube-state-metrics                                                    44h
    system:aggregate-to-admin                                              44h
    system:aggregate-to-edit                                              44h
    system:aggregate-to-view                                              44h
    system:auth-delegator                                                  44h
    system:aws-cloud-provider                                              44h
    system:basic-user                                                      44h
    system:certificates.k8s.io:certificatesigningrequests:nodeclient      44h
    system:certificates.k8s.io:certificatesigningrequests:selfnodeclient  44h
    system:controller:attachdetach-controller                              44h
    system:controller:certificate-controller                              44h
    system:controller:clusterrole-aggregation-controller                  44h
    。。。

    wps@wps:~$ kubectl get clusterrolebindings
    NAME                                                  AGE
    clust-tetst                                            17m
    cluster-admin                                          44h
    cluster-tetst                                          13m
    flannel                                                44h
    kube-state-metrics                                    44h
    kubelet-bootstrap                                      44h
    system:aws-cloud-provider                              44h
    system:basic-user                                      44h
    system:controller:attachdetach-controller              44h
    system:controller:certificate-controller              44h
    。。。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)