azure-keyvault - 如何将存储在保管库中的服务主体密码传递给 az aks create --client-secret 参数
问题描述
我无法为 az aks create --client-secret 参数传递存储在保险库中的服务主体密码
重现 1.) 创建一个保险库
az keyvault create \
--name ${AZURE_VAULT_NAME} \
--resource-group ${AZURE_RESOURCE_GROUP} \
--location ${AZURE_LOCATION} \
--enabled-for-deployment 'true'
2.) 使用保管库创建服务主体帐户
az ad sp create-for-rbac \
--skip-assignment \
--name ${AZURE_SERVICE_PRINCIPAL_NAME} \
--create-cert \
--cert ${AZURE_VAULT_SERVICE_PRINCIPAL_KEY_NAME} \
--keyvault ${AZURE_VAULT_NAME}
3.) 到 az ad sp create 的输出显示为
{
"appId": "d216c019-cd17-4350-a467-77be6e76c135",
"displayName": "aksServicePrincipalPOC",
"name": "http://aksServicePrincipalPOC",
"password": null,
"tenant": "06dd2342-6928-44d9-bd0f-bfb06b15a097"
}
注意密码为空。
4.) 使用服务主体创建 aks 集群。似乎没有办法为 az aks create 命令传递机密或保管库名称。我没有设置 --client-secret 的价值,因为它在创建服务主体帐户时没有返回。
az aks create \
--resource-group ${AZURE_RESOURCE_GROUP} \
--name ${AKS_CLUSTER_NAME} \
--admin-username ${AKS_NODE_ADMIN_USERNAME} \
--node-count ${AKS_MIN_NUMBER_OF_NODES} \
--service-principal ${AZURE_SERVICE_PRINCIPAL} \
--client-secret ??????????? \
--ssh-key-value ${AKS_VM_SSH_KEY_FILE_DIR}/${AKS_VM_SSH_KEY_FILE_NAME}.pub \
--network-plugin azure \
--vnet-subnet-id ${AZURE_PRIVATE_SUBNET_ID} \
--docker-bridge-address ${AZURE_AKS_DOCKER_BRIDGE_ADDRESS} \
--dns-service-ip ${AZURE_AKS_DNS_SERVICE_IP} \
--service-cidr ${AZURE_AKS_SERVICE_CIDR}
预期行为: az aks create 应该有一个选项,可以让它从维护该机密的保管库中提取服务主体密码。
解决方案
这不起作用,因为这会为服务主体创建证书身份验证,而不是密码身份验证(因此它不返回任何密码值)。
因为您要求它创建一个启用证书身份验证的服务主体。
推荐阅读
- next.js - next.config 重定向排除 2 个路径参数
- python - 皮莫 | 使用索引集创建简单模型
- cucumber - 即使在其中一个步骤失败并且其他示例被跳过后,Serenity 报告也会显示绿色
- python - 有没有办法向除了发件人之外的所有人发送消息?
- php - 我的 Axios 发布请求 URL 应该是什么?
- java - 确保 slf4j 在日志文件中捕获堆栈跟踪
- python - Python Selenium:在 SQL 中使用通配符
- android - Agora:ReactNative 没有在视频通话中渲染显示远程用户视频
- python - 在 Python 3.9 中,weakref.proxy 是否变得可散列?
- c++ - 如何在 gtk+-3.0 应用程序中连接信号以在 Arch linux 系统上使用 glade ang geany ide 处理?