在AKS中结合pod identity以及CSI Driver mount key vault中的secret

在之前一篇文章中有介绍过在AKS里如何通过CSI driver这个add on,将secret自动mount到pod中,通过将secret放到k云计算ey vak8s经典版电影ult中让应用程序自动获取,可以很好地保护一些机密信息的安全

​​在AKS中通过CSI Drivecloud是什么意思r mousecretary怎么读nt key vault中的secretsecret下载​​

但是这种做法有一个小小问题,就是之前我们是用serps://www.fons.com.cn/tag/vi" target="_blank">vice principal mount的secret,这要求我们需要在AKS上创建一云平台免费网课个secret,里边存放service priidentity怎么读音ncipal的id和pwd,一般情况下如果AKS是由负责运维的team统一管理,应用团队没有权限的secret聊天软件话,这种做法不会有什么问题,但是如果应用团队也有AKS权限,这样就不怎么好了,因为有可能应云平台用团secret是什么软件队的人可能会有权限查看到secret里的值

所以为了避免这种情况,我们云计算最简单解释还可以使用pod identsecretity结合​managed service identity一起把所有获取token的步骤完全交给后台Azure完成,在前端不需要有任何明显的pwd这种痕迹

下边来看下具体做法,这个demo要求的前置条件比较多,如果本文没写到的步骤,可以参考以下两篇文章

​​在AKS中通过云平台CSsecret下载I Driver mount key vault中的secret​​

​​在AKS中使用pod identity获取token - 实践​​

环境准备:

1. AKS Cluster * 1

2. User assigned managed ik8s架构原理denk8s经典版电影ti云平台登录入口ty * 1

3. Key Vault * 1

4. Kubectl client * 1

前置条件:

1. 创建好AKS Cluster

2. 创建好Key Vault

3. 在Key Vault中准备好测试用的secret

4. 创建好测试用的User as云计算是什么signed managed identity

5. 为AKS Cluster Enable CSIk8s和docker区别 driver add on

6. 在AKS Cluster 部署pod identity component

实际操作

给identity授权访问secret

首先先给User assigned managed identity授权访问Key Vauazure配音lt中的secret

Demo就是个User assign云平台登录入口ed managedidentityazurewave


                                            在AKS中结合pod identity以及CSI Driver mount key vault中的secret

准备yaml文件

接下来就是准备pod identity中的Azure Identity和binding部署文件以及pod的部署文件

AzureIdentityazure云服务器

apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzureIdentity
metadata:
name: <any-name>
spec:
type: 0
resourceID: /subscriptions/<subid>/resourcegroups/<resourcegroup>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<idname>
clientID: <clientid>

AzureIdentityBinding

apiVersion: "aadpodidentity.k8s.io/v1"
kind: AzureIdentityBinding
metadata:
name: <any-name>
spec:
azureIdentity: <name of the AzureIdentity created in previous step>
selector: <label value to match in your pod>

准备SecretProviderClass的yamlcloudvivocom查找手机

apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: azure-kvname-podid
spec:
provider: azure
parameters:
usePodIdentity: "true"
keyvaultName: "kvname"
objects: |
array:
- |
objectName: secret1
objectType: secret # object types: secret, key or cert
objectVersion: "" # [OPTIONAL] object versions, default to latest if empty
- |
objectName: key1
objectType: key
objectVersion: ""
tenantId: "tid" # the tenant ID of the KeyVault