国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Kubernetes運維篇】RBAC認證授權(quán)詳解(二)

這篇具有很好參考價值的文章主要介紹了【Kubernetes運維篇】RBAC認證授權(quán)詳解(二)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、RBAC認證授權(quán)策略

官方中文參考連接:

在K8S中,所有資源對象都是通過API進行操作,他們保存在ETCD里面,而對ETCD的操作,我們需要通過訪問kube-apiserver來實現(xiàn),ServiceAccount其實就是apiserver的認證過程,而授權(quán)的機制是通過RBAC,基于角色的訪問控制實現(xiàn)。

RBAC中有四個資源對象,分別是Role、ClusterRole、RoleBinding、ClusterRoleBinding

1、Role角色

Role是一組權(quán)限的集合,在名稱空間下定義的角色,只能對名稱空間下進行資源授權(quán)。如果是集群級別的資源,可以使用clusterrole進行授權(quán)。

實例:定義一個Role賦予讀取 default 名稱空間下所有Pod的權(quán)限:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: rbac-pod
  namespace: default     # 針對default名稱空間下資源進行授權(quán)
rules:
- apiGroups: ['']
  resources: ["pods"]   # 針對那些資源做授權(quán),這里是Pod資源
  resourceNames: []     # 上面指定Pod資源,這里表示針對那些Pod資源做授權(quán),空表示名稱空間下所有Pod
  verbs: ["get", "watch", "list"]  # 授予那些權(quán)限

2、ClusterRole集群角色

ClusterRole是集群角色,跨名稱空間,沒有名稱空間的限制

實例:定義一個ClusterRole賦予讀取所有的Server的權(quán)限:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: clusterrole-svc
rules:
- apiGroups: [""]
  resources: ["services"]
  verbs: ["get", "watch" ,"list"]

3、RoleBinding角色綁定和ClusterRoleBinding集群角色綁定

角色綁定就是將Role角色和一個目錄進行綁定,可以User、Group、Server Account

使用RoleBinding有名稱空間限制,只能綁定同一個名稱空間的角色,使用ClusterRoleBinding沒有名稱空間限制,為集群范圍內(nèi)授權(quán)。

實例:創(chuàng)建RoleBinding綁定 default名稱空間下rbac-pod 角色授予給 qinzt用戶

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rbac-pod-qinzt
  namespace: default
subjects:
- kind: User
  name: qinzt
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: rbac-pod
  apiGroup: rbac.authorizatioin.k8s.io

RoleBinding也可以綁定ClusterRole,對屬于同個命名空間的ClusterRole定義的資源主體進行授權(quán),具體如下:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rbac-pod-qinzt
  namespace: default
subjects:
- kind: User
  name: qinzt
  apiGroup: rbac.authorization.k8s.io
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole	
  name: clusterrole-svc

二、通過API接口授權(quán)訪問K8S資源

多數(shù)資源可以使用名稱的字符串表示,也就是endpoint中的URL相對路徑,比如Pod中的日志是 GET /api/v1/namaspaces/{namespace}/pods/{podname}/log,如果需要在一個RBAC對象中授權(quán)上下級資源,就需要使用 “/” 分割資源和上下級資源。

實例如下:

第一步:創(chuàng)建 test 名稱空間:

kubectl create namespace test

第二步:創(chuàng)建 logs-reader角色 賦予查看Pod權(quán)限

cat logs-reader.yaml 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: logs-reader
  namespace: test
rules:
- apiGroups: [""]
  resources: ["pods","pods/log"]
  verbs: ["get","list","watch"]
kubectl apply -f logs-reader.yaml
kubectl get role -n test

第三步:創(chuàng)建 sa-test 服務(wù)賬戶

kubectl create sa sa-test -n test

第四步:創(chuàng)建sa-test-1 RoleBinding,將服務(wù)賬戶和角色綁定

kubectl create RoleBinding sa-test-1 -n test --role=logs-readr --serviceaccount=test:sa-test

第五步:創(chuàng)建Pod并使用 sa-test服務(wù)賬戶

cat rbac-pod.yaml 
---
apiVersion: v1
kind: Pod
metadata:
  name: rbac-pod-demo
  namespace: test
  labels:
    app: rbac
spec:
  serviceAccount: sa-test
  containers:
  - name: rbac-pod-demo
    image: nginx
    imagePullPolicy: IfNotPresent

第六步:測試權(quán)限

kubectl exec -it rbac-pod-demo -n test -- /bin/bash
cd /var/run/secrets/kubernetes.io/serviceaccount

# 訪問test名稱空間下rbac-pod-demo Pod日志
curl --cacert ./ca.crt  -H "Authorization: Bearer $(cat ./token)" https://kubernetes.default/api/v1/namespaces/test/pods/rbac-pod-demo/log

【Kubernetes運維篇】RBAC認證授權(quán)詳解(二),# 3-Kubernetes容器編排,kubernetes,運維,容器

curl --cacert ./ca.crt  -H "Authorization: Bearer $(cat ./token)" https://kubrnetes.default/api/v1/namespaces/default/pods/web-nginx-785b94bb7-x298h/log

【Kubernetes運維篇】RBAC認證授權(quán)詳解(二),# 3-Kubernetes容器編排,kubernetes,運維,容器

三、案例:常見授權(quán)策略

1、常見的角色授權(quán)策略案例

案例一:允許讀取核心API組的Pod資源

rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get","list","watch"]

案例二:允許讀寫apps API組中的deployment資源

rules:
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["get","list","watch","create","update","patch","delete"]

案例三:允許讀取Pod以及讀寫job信息

rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["jobs"]
  verbs: ["get","list","watch","create","update","patch","delete"]

案例四:允許讀取名為nginx.conf的ConfigMap

注意:必須綁定到一個RoleBinding來限制到一個Namespace下的ConfigMap

rules:
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["nginx.conf"]
  verbs: ["get"]

案例五:允許讀取核心組的Node資源

注意:Node屬于集群級別的資源,必須使用ClusterRole進行授權(quán),且必須使用ClusterRoleBinding進行綁定

rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get","list","watch"]

案例六:允許對非資源端點 “/healthz” 及所有子路徑進行GET和POST操作

注意:必須使用ClusterRole和ClusterRoleBinding

rules:
- nonResourceURLs: ["/healthz","/healthz/*"]
  verbs: ["get","post"]

2、常見的角色綁定案例

案例一:綁定qinzt用戶

subjects:
- kind: User
  name: qinzt
  apiGroup: rbac.authorization.k8s.io

案例二:綁定qinzt組

subjects:
- kind: Group
  name: alice
  apiGroup: rbac.authorization.k8s.io

案例三:綁定SA,kube-system名稱空間下默認ServiceAccount

subjects:
- kind: ServiceAccount
  name: default
  namespace: kube-system

3、常見的ServiceAccount授權(quán)綁定案例

案例一:創(chuàng)建名為 t1的RoleBinding將view集群角色和my-namespace名稱空間下 的my-sa SA綁定

kubectl create RoleBinding t1 --clusterrole=view --serviceaccount=my-namespace:my-sa --namespace=my-namespace

案例二:創(chuàng)建名為default-view的RoleBinding將view集群角色和my-namespace名稱空間下的defaultSA綁定

注意:創(chuàng)建名稱空間后,都會存在一個默認的SA賬戶,如果該名稱空間下創(chuàng)建的資源沒有指定SA,默認使用default SA。

kubectl create RoleBinding default-view --clusterrole=view --serviceaccount=my-namespace:default --namespace=my-namespace

案例三:創(chuàng)建名為sa-view 的RoleBinding將view集群角色和my-namespace名稱空間下system:serviceaccounts群組進行綁定

注意:如果希望在一個名稱空間下的所有serviceaccount都具有一個權(quán)限,則可以針對群組授權(quán)如下:

kubectl create RoleBinding sa-view --clusterrole=view --group=system:serviceaccounts:my-namespace --namespace=my-namespace

案例四:為集群范圍內(nèi)所有的serviceaccount都授予一個低權(quán)限角色

kubectl create clusterRoleBinding sa-view --clusterrole=view --group=system:serviceaccounts

案例五:為所有serviceaccount賦予一個超級用戶權(quán)限文章來源地址http://www.zghlxwxcb.cn/news/detail-568227.html

kubectl create clusterRoleBinding sa-view --clusterrole=cluster-admin --group=system:serviceaccounts

到了這里,關(guān)于【Kubernetes運維篇】RBAC認證授權(quán)詳解(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Kubernetes運維篇】ingress-nginx實現(xiàn)業(yè)務(wù)灰度發(fā)布詳解

    【Kubernetes運維篇】ingress-nginx實現(xiàn)業(yè)務(wù)灰度發(fā)布詳解

    1、場景一:將新版本灰度給部分用戶 假設(shè)線上運行了一套對外提供 7 層服務(wù)的 Service A 服務(wù),后來開發(fā)了個新版本 Service AA需要上線,但不想直接替換掉原來的 Service A,希望先灰度一小部分用戶,等運行一段時間足夠穩(wěn)定了再逐漸全量上線新版本,最后平滑下線舊版本。 這

    2024年02月15日
    瀏覽(23)
  • K8s RBAC認證授權(quán)深度解析

    K8s RBAC認證授權(quán)深度解析

    ? ??明明跟你說過:個人主頁 ??個人專欄:《Kubernetes航線圖:從船長到K8s掌舵者》??? ??行路有良友,便是天堂?? 目錄 一、前言 1、k8s簡介 2、RBAC簡介? 二、RBAC核心概念 1、角色(Role)與集群角色(ClusterRole) 2、角色綁定(RoleBinding)與集群角色綁定(ClusterRoleBindin

    2024年04月28日
    瀏覽(26)
  • 【容器編排】初識 Kubernetes

    【容器編排】初識 Kubernetes

    目錄 1.簡介 2.為什么需要 k8s 3.k8s 能做什么? 4.k8s 不是什么? 1.簡介 摘取官網(wǎng): 概述 | Kubernetes ????????Kubernetes 這個名字源于希臘語,意為 舵手 或 飛行員 。k8s 這個縮寫是因為 k 和 s 之間有八個字符的關(guān)系。 Google 在 2014 年開源了 Kubernetes 項目。 Kubernetes 建立在 Google 大規(guī)模

    2024年02月14日
    瀏覽(24)
  • 【云原生】容器編排工具Kubernetes

    【云原生】容器編排工具Kubernetes

    目錄 一、 K8S介紹 官網(wǎng)地址: 1.1docker編排與k8s編排相比 1.2特性 1.3功能 二、K8S重要組件 2.1核心組件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler (4)Node ①kubelet ②kube-proxy ③docker (5)etcd 2.2Kubernetes工作原理 三、Pod 3.1 Pod控制器 (1)Deployment (2)ReplicaSet (3)

    2024年02月09日
    瀏覽(32)
  • 【云原生】Kubernetes容器編排工具

    【云原生】Kubernetes容器編排工具

    目錄 1. K8S介紹 1.1 k8s的由來 下載地址 1.2 docker編排與k8s編排相比 1.3 傳統(tǒng)后端部署與k8s 的對比 傳統(tǒng)部署 k8s部署? ?2. k8s的集群架構(gòu)與組件 (1) Kube-apiserver (2)Kube-controller-manager? (3)Kube-scheduler?? 2.2?k8s的配置存儲中心 2.3? k8s的Node 組件? ?(1)Kubelet? ?(2)Kube-Proxy?

    2024年02月10日
    瀏覽(23)
  • 容器編排的未來:探索基于Kubernetes的微服務(wù)編排解決方案

    容器編排的未來:探索基于Kubernetes的微服務(wù)編排解決方案

    作者:禪與計算機程序設(shè)計藝術(shù) 當今的云計算環(huán)境下,容器技術(shù)正在成為主流,越來越多的公司選擇基于容器技術(shù)實現(xiàn)應(yīng)用部署及運行。容器編排技術(shù)也逐漸被普遍采用。通過容器編排工具可以將復(fù)雜的分布式系統(tǒng)架構(gòu)部署、管理及擴展起來,從而提供一個高可用、易于維護

    2024年02月14日
    瀏覽(27)
  • Docker和Kubernetes:構(gòu)建現(xiàn)代應(yīng)用容器編排系統(tǒng)

    作者:禪與計算機程序設(shè)計藝術(shù) Docker是一個開源的應(yīng)用容器引擎,可以輕松打包、部署及運行應(yīng)用程序。Kubernetes(簡稱K8s)是一個開源的,用于管理云平臺中多個主機上的容器化的應(yīng)用的容器集群管理系統(tǒng)。通過對Docker和Kubernetes的結(jié)合,能夠更高效地自動化地部署和管理容

    2024年02月07日
    瀏覽(37)
  • 【容器化應(yīng)用程序設(shè)計和開發(fā)】2.2 容器編排和Kubernetes調(diào)度

    往期回顧: 第一章:【云原生概念和技術(shù)】 第二章:2.1 容器化基礎(chǔ)知識和Docker容器 第二章:2.2 Dockerfile 的編寫和最佳實踐 容器編排是指自動化部署、管理和運行容器化應(yīng)用程序的過程。Kubernetes 是一個流行的容器編排平臺,它提供了一種自動化的方式來創(chuàng)建、部署和管理容

    2024年02月03日
    瀏覽(27)
  • 容器編排工具的比較:Kubernetes、Docker Swarm、Nomad

    容器編排工具的比較:Kubernetes、Docker Swarm、Nomad

    隨著容器化技術(shù)的普及,容器編排工具成為了現(xiàn)代應(yīng)用部署和管理的重要組成部分。容器編排工具能夠自動化容器的部署、擴展和管理,從而提高應(yīng)用的可靠性和可伸縮性。在眾多的容器編排工具中,Kubernetes、Docker Swarm和Nomad是三個備受關(guān)注的主要候選。本文將對這三個工具

    2024年02月09日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包