溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes身份認證的操作方法是什么

發(fā)布時間:2021-12-29 08:59:24 來源:億速云 閱讀:124 作者:iii 欄目:云計算

本篇內容介紹了“Kubernetes身份認證的操作方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在生產環(huán)境中,Kubernetes管理員使用命名空間來隔離資源和部署。命名空間作為一個邏輯邊界來強制基本訪問控制。

假設現(xiàn)在我們有個新的管理員叫Bob,要加入開發(fā)團隊為研發(fā)組管理Kubernetes部署。我們現(xiàn)在需要給他提供足夠的訪問權限以便于他管理工程命名空間。假設你是集群管理員并且擁有管理全局資源和對象的權限,你需要登上Bob的賬戶并幫助他獲取訪問Kubernetes集群所需的憑據(jù)。

我在操作中使用的是Minikube,但本文示例的場景適用于任何使用其他方式配置的Kubernetes集群(只要你是集群管理員身份就行)。

首先,創(chuàng)建一個名為cred的目錄,并運行以下命令為Bob生成一個私鑰。

mkdir cred
cd cred
openssl genrsa -out bob.key 2048
Generating RSA private key, 2048 bit long modulus
..................................................................................................................+++
................................................+++
e is 65537 (0x10001)

我們還需要一個可以從私鑰生成的證書簽名請求。

openssl req -new -key bob.key -out bob.csr -subj "/CN=bob/O=eng"\n

將密鑰移動到父級文件夾并在Base64中對其進行編碼。

cp bob.key ..
cd ..
cat cred/bob.csr | base64 | tr -d '\n'
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1lqQ0NBVW9DQVFBd0hURU1NQW9HQTFVRUF3d0RZbTlpTVEwd0N3WURWUVFLREFSbGJtZHVNSUlCSWpBTgpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzSU9oUTArMFJUakpqZjBKTkd2Rmo0YWFlN1hYCkkrZWkzTzZWTEpqMHNKNDBvengyUTVndXBmeFc5b0lEYTJETnhVZjZkNHVMOUJ3V2lhdFdQdnBDNm80MHJQc2EKTjBUdEhEekFYeWppc0E5VXVRMVNKMWg5Mkg0TU9XWEpWNWJWaTlXYjBKU3hLbXVrSUVtaERJcW9TcEh7MU5xaApQMWNXOFFpNXpoVVBmWlpnOUhSaWVUQ2xEMmR3bWRtS1JjbU9uenNGVWhJWmZWanVZNzZJUm9KbksyaHNzVjZoCmMyY1JNTVNEdFA0ZDArYkxOY1BKdExpS3JjQkdwUGxLUEdrSHovM2NNbVhpVi8wY2xqUlppMzJCb3B4NlI1NUIKc0Z6cXZwcWgzNWxLNUVOUGxPZy9sdURFdllGeUtzOUY2aERBRFhDNzQxU0ZCQTI0TERzcTFiWWtVUUlEQVFBQgpvQUF3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxTejgxL2N3bjQxbVRrUDhabWhhUUx3MkpIRkN4ZUlaOFdpCkZOV0U1cnRVd3hrSjJGWVJKRlFUL1hJN0FoL0pXTkhqeHlhOUNyN3c0OThmanN3bDF2ZzQ1QUgrR29DeVEwTWkKOU1MMHl0WmZyaG5jYmtpRG9oSUpuaWhJTjlCUGpHVkw2SG1USytGc0sybG1ZZ1JDdk9Cclg3Rkh7ZjgwM0ZFNAp4ZkgrZlFsdGxDdEZTSEhuaUlzZTFEQ2J4cFVTdnRISXpYMFcyb2hXV3RPVkRpOTAzOW8zY2VaWmdVK3VRYno0Cmp2djJoeVdRNDhORFl3RWF1UUU2S3NBQTFLT0IyUkI2dE45bjFTVWoxU1B2WnBsQkVieDZ5MTkzaUJSVFJRM2wKM2JhdFRNUUEzelBsdk01ZEE2Vy8rQWcwVm0xMk1SR091VFRLSEU2bE5INE1DbHQvRGZZPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K

我們需要將生成的base64編碼的字符串嵌入到YAML文件中,并將其作為證書簽名請求提交給Kubernetes。這一步驟基本上可以將Bob的私鑰與Kubernetes集群相關聯(lián)。

apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
  name: bob-csr
spec:
  groups:
  - system:authenticated
 
  request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQ1lqQ0NBVW9DQVFBd0hURU1NQW9HQTFVRUF3d0RZbTlpTVEwd0N3WURWUVFLREFSbGJtZHVNSUlCSWpBTgpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEzSU9oUTArMFJUakpqZjBKTkd2Rmo0YWFlN1hYCkkrZWkzTzZWTEpqMHNKNDBvengyUTVndXBmeFc5b0lEYTJETnhVZjZkNHVMOUJ3V2lhdFdQdnBDNm80MHJQc2EKTjBUdEhEekFYeWppc0E5VXVRMVNKMWg5Mkg0TU9XWEpWNWJWaTlXYjBKU3hLbXVrSUVtaERJcW9TcEh7MU5xaApQMWNXOFFpNXpoVVBmWlpnOUhSaWVUQ2xEMmR3bWRtS1JjbU9uenNGVWhJWmZWanVZNzZJUm9KbksyaHNzVjZoCmMyY1JNTVNEdFA0ZDArYkxOY1BKdExpS3JjQkdwUGxLUEdrSHovM2NNbVhpVi8wY2xqUlppMzJCb3B4NlI1NUIKc0Z6cXZwcWgzNWxLNUVOUGxPZy9sdURFdllGeUtzOUY2aERBRFhDNzQxU0ZCQTI0TERzcTFiWWtVUUlEQVFBQgpvQUF3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxTejgxL2N3bjQxbVRrUDhabWhhUUx3MkpIRkN4ZUlaOFdpCkZOV0U1cnRVd3hrSjJGWVJKRlFUL1hJN0FoL0pXTkhqeHlhOUNyN3c0OThmanN3bDF2ZzQ1QUgrR29DeVEwTWkKOU1MMHl0WmZyaG5jYmtpRG9oSUpuaWhJTjlCUGpHVkw2SG1USytGc0sybG1ZZ1JDdk9Cclg3Rkh7ZjgwM0ZFNAp4ZkgrZlFsdGxDdEZTSEhuaUlzZTFEQ2J4cFVTdnRISXpYMFcyb2hXV3RPVkRpOTAzOW8zY2VaWmdVK3VRYno0Cmp2djJoeVdRNDhORFl3RWF1UUU2S3NBQTFLT0IyUkI2dE45bjFTVWoxU1B2WnBsQkVieDZ5MTkzaUJSVFJRM2wKM2JhdFRNUUEzelBsdk01ZEE2Vy8rQWcwVm0xMk1SR091VFRLSEU2bE5INE1DbHQvRGZZPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K
  
  usages:
  - digital signature
  - key encipherment
  - server auth
kubectl create -f signing-request.yaml
certificatesigningrequest.certificates.k8s.io/bob-csr created

使用以下kubectl命令驗證CSR:

kubectl get csr
NAME      AGE   REQUESTOR       CONDITION
bob-csr   41s   minikube-user   Pending

請注意,請求此時依舊處于pending狀態(tài)。集群管理員需要批準它,才會變成active狀態(tài)。

kubectl certificate approve bob-csr
certificatesigningrequest.certificates.k8s.io/bob-csr approved
kubectl get csr
NAME      AGE    REQUESTOR       CONDITION
bob-csr   104s   minikube-user   Approved,Issued

既然證書已經(jīng)批準并發(fā)布,我們需要從集群中獲取簽名證書。這是登錄Bob賬戶最關鍵的一步。

kubectl get csr bob-csr -o jsonpath='{.status.certificate}' | base64 --decode > bob.crt

bob.crt這一文件是用于Bob身份認證的客戶端證書。我們現(xiàn)在擁有Kubernetes的私鑰(bob.key)和批準的證書(bob.crt)。只要Bob擁有這兩個憑據(jù),他就可以通過集群進行身份認證。

那么,現(xiàn)在就可以將Bob作為用戶添加到Kubernetes中。

kubectl config set-credentials bob --client-certificate=bob.crt --client-key=bob.key
User "bob" set.

打開~/.kube/config 文件確認憑據(jù)已經(jīng)設置完成。

Kubernetes身份認證的操作方法是什么

讓我們創(chuàng)建一個名為engineering的新命名空間,Bob是其管理員。

kubectl create namespace engineering
namespace/engineering created
kubectl get namespace
NAME              STATUS   AGE
default           Active   37m
engineering       Active   0s
kube-node-lease   Active   37m
kube-public       Active   37m
kube-system       Active   37m

kubectl CLI以auth的形式提供了非常有用的開關,可以驗證特定用戶的權限。讓我們檢查一下當前的管理員用戶是否可以訪問engineering命名空間。鑒于您集群管理員的身份,因此可以輕易看到輸出結果。

 kubectl auth can-i list pods --namespace engineering
yes

我們也能夠檢查Bob能否訪問engineering命名空間。

kubectl auth can-i list pods --namespace engineering --as bob
no

很顯然,Bob無法訪問命名空間,這是因為我們創(chuàng)建了憑據(jù)但是沒有明確授權Bob對任何對象進行任何特定的動作。

“Kubernetes身份認證的操作方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI