Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No complemento de malha de serviço baseado em Istio para o Serviço Kubernetes do Azure, por padrão, a autoridade de certificação (CA) do Istio gera um certificado raiz e uma chave autoassinados e os usa para assinar os certificados de carga de trabalho. Para proteger a chave da autoridade de certificação raiz, deve-se usar uma autoridade de certificação raiz que funcione numa máquina segura e offline. Pode usar a CA raiz para emitir certificados intermediários para as CAs do Istio que são executadas em cada cluster. Uma autoridade de certificação do Istio pode assinar certificados de carga de trabalho usando o certificado e a chave especificados pelo administrador e distribuir um certificado raiz especificado pelo administrador para as cargas de trabalho como a raiz da confiança. Este artigo aborda como trazer seus próprios certificados e chaves para a Autoridade de Certificação (CA) do Istio no complemento de malha de serviço baseado em Istio para o Azure Kubernetes Service.
Este artigo aborda como você pode configurar a autoridade de certificação do Istio com um certificado raiz, certificado de assinatura e chave fornecidos como entradas usando o Cofre de Chaves do Azure para o complemento de malha de serviço baseado em Istio.
Antes de começar
Verificar a versão da CLI do Azure
O complemento requer a CLI do Azure versão 2.57.0 ou posterior instalada. Você pode executar az --version para verificar a versão. Para instalar ou atualizar, consulte [Instalar a CLI do Azure][azure-cli-install].
Configurar o Azure Key Vault
Você precisa de um recurso do Azure Key Vault para fornecer o certificado e as entradas de chave para o complemento Istio.
Você precisa gerar certificado raiz, certificados intermediários, chave intermediária e a cadeia de certificados offline. Os passos 1-3 nesta página têm um exemplo de como gerar esses ficheiros.
Crie segredos no Cofre da Chave do Azure usando os certificados e a chave:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path-to-folder/cert-chain.pem>Habilite o provedor Azure Key Vault para o Driver CSI do Secret Store para o seu cluster:
az aks enable-addons --addons azure-keyvault-secrets-provider --resource-group $RESOURCE_GROUP --name $CLUSTERObservação
Para controlar a rapidez com que os segredos são sincronizados com o cluster ao rodar certificados, pode usar o parâmetro
--rotation-poll-intervaldo complemento do Provedor de Segredos do Azure Key Vault. Por exemplo:az aks addon update --resource-group $RESOURCE_GROUP --name $CLUSTER --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 20sSe o seu Key Vault estiver a usar Azure RBAC para o modelo de permissões, siga as instruções aqui para atribuir um papel Azure de Key Vault Secrets User para a identidade gerida atribuída pelo utilizador do add-on. Alternativamente, se o seu cofre de chaves estiver a usar o modelo de permissões da política de acesso ao cofre, autorize a identidade gerida atribuída pelo utilizador ao add-on para aceder ao recurso do Azure Key Vault usando a política de acesso.
OBJECT_ID=$(az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query 'addonProfiles.azureKeyvaultSecretsProvider.identity.objectId' -o tsv) az keyvault set-policy --name $AKV_NAME --object-id $OBJECT_ID --secret-permissions get
Configurar complemento de malha de serviços baseado em Istio com certificados CA de plug-in
Habilite o complemento de malha de serviço Istio para seu cluster AKS existente enquanto faz referência aos segredos do Cofre de Chaves do Azure que foram criados anteriormente:
az aks mesh enable --resource-group $RESOURCE_GROUP --name $CLUSTER \ --root-cert-object-name root-cert \ --ca-cert-object-name ca-cert \ --ca-key-object-name ca-key \ --cert-chain-object-name cert-chain \ --key-vault-id /subscriptions/$SUBSCRIPTION/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$AKV_NAMEObservação
Para clusters existentes com addon Istio usando certificado raiz auto-assinado gerado pela CA do Istio, a transição para a CA do plug-in não é suportada. Você precisa desativar a malha nesses clusters primeiro e, em seguida, habilitá-la novamente usando o comando acima para passar pelas entradas de CA do plugin.
Verifique se o plano de controle do Istio adquiriu a autoridade de certificação personalizada.
kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationController | grep x509A saída esperada deve ser semelhante a:
2023-11-06T15:49:15.493732Z info x509 cert - Issuer: "CN=Intermediate CA - A1,O=Istio,L=cluster-A1", Subject: "", SN: e191d220af347c7e164ec418d75ed19e, NotBefore: "2023-11-06T15:47:15Z", NotAfter: "2033-11-03T15:49:15Z" 2023-11-06T15:49:15.493764Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Intermediate CA - A1,O=Istio,L=cluster-A1", SN: 885034cba2894f61036f2956fd9d0ed337dc636, NotBefore: "2023-11-04T01:40:02Z", NotAfter: "2033-11-01T01:40:02Z" 2023-11-06T15:49:15.493795Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Root A,O=Istio", SN: 18e2ee4089c5a7363ec306627d21d9bb212bed3e, NotBefore: "2023-11-04T01:38:27Z", NotAfter: "2033-11-01T01:38:27Z"
Rotação da autoridade de certificação
Pode ser necessário alternar periodicamente as autoridades de certificação por motivos de segurança ou de política. Esta seção orienta você sobre como lidar com cenários de rotação de CA intermediária e de autoridade de certificação raiz.
Rotação intermédia da autoridade de certificação
Você pode girar a autoridade de certificação intermediária enquanto mantém a autoridade de certificação raiz a mesma. Atualize os segredos no recurso Cofre de Chaves do Azure com o novo certificado e arquivos de chave:
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>Aguarde a duração do
--rotation-poll-interval. Verifique se os certificados foram atualizados no cluster com base na nova autoridade de certificação intermediária que foi atualizada no recurso Cofre de Chaves do Azure:kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerA saída esperada deve ser semelhante a:
2023-11-07T06:16:21.091844Z info Update Istiod cacerts 2023-11-07T06:16:21.091901Z info Using istiod file format for signing ca files 2023-11-07T06:16:21.354423Z info Istiod has detected the newly added intermediate CA and updated its key and certs accordingly 2023-11-07T06:16:21.354910Z info x509 cert - Issuer: "CN=Intermediate CA - A2,O=Istio,L=cluster-A2", Subject: "", SN: b2753c6a23b54d8364e780bf664672ce, NotBefore: "2023-11-07T06:14:21Z", NotAfter: "2033-11-04T06:16:21Z" 2023-11-07T06:16:21.354967Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Intermediate CA - A2,O=Istio,L=cluster-A2", SN: 17f36ace6496ac2df88e15878610a0725bcf8ae9, NotBefore: "2023-11-04T01:40:22Z", NotAfter: "2033-11-01T01:40:22Z" 2023-11-07T06:16:21.355007Z info x509 cert - Issuer: "CN=Root A,O=Istio", Subject: "CN=Root A,O=Istio", SN: 18e2ee4089c5a7363ec306627d21d9bb212bed3e, NotBefore: "2023-11-04T01:38:27Z", NotAfter: "2033-11-01T01:38:27Z" 2023-11-07T06:16:21.355012Z info Istiod certificates are reloadedAs cargas de trabalho recebem certificados do plano de controle do Istio que são válidos por 24 horas por padrão. Se você não reiniciar os pods, todas as cargas de trabalho obterão novos certificados folha com base na nova CA intermediária em 24 horas. Caso deseje forçar todas essas cargas de trabalho a obter novos certificados de folha imediatamente da nova autoridade de certificação intermediária, será necessário reiniciar as cargas de trabalho.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>
Rotação da autoridade de certificação raiz
Você precisa atualizar os segredos do Azure Key Vault com o arquivo de certificado raiz que contém a concatenação dos certificados raiz antigo e novo.
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>Conteúdo de
root-cert.pemsegue este formato:-----BEGIN CERTIFICATE----- <contents of old root certificate> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <contents of new root certificate> -----END CERTIFICATE-----Verifique
istiodos logs, uma vez que os certificados tenham sido sincronizados com o cluster.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-systemResultados esperados:
2023-11-07T06:42:00.287916Z info Updating new ROOT-CA 2023-11-07T06:42:00.287928Z info update root cert and generate new dns certs 2023-11-07T06:42:00.288254Z info Update trust anchor with new root cert 2023-11-07T06:42:00.288279Z info trustBundle updating Source IstioCA with certs 2023-11-07T06:42:00.288298Z info Istiod has detected the newly added intermediate CA and updated its key and certs accordingly 2023-11-07T06:42:00.288303Z info Istiod certificates are reloadedÉ necessário aguardar pelas 24 horas (o tempo padrão para a validade do certificado de folha) ou forçar o reinício de todas as cargas de trabalho. Dessa forma, todas as cargas de trabalho reconhecem as autoridades de certificação antigas e novas para verificação de mTLS.
kubectl rollout restart deployment <deployment name> -n <deployment namespace>Agora você pode atualizar os segredos do Cofre da Chave do Azure apenas com a nova autoridade de certificação (sem a autoridade de certificação antiga):
az keyvault secret set --vault-name $AKV_NAME --name root-cert --file <path-to-folder/root-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-cert --file <path-to-folder/ca-cert.pem> az keyvault secret set --vault-name $AKV_NAME --name ca-key --file <path-to-folder/ca-key.pem> az keyvault secret set --vault-name $AKV_NAME --name cert-chain --file <path/cert-chain.pem>Verifique
istiodos logs, uma vez que os certificados tenham sido sincronizados com o cluster.kubectl logs deploy/istiod-asm-1-17 -c discovery -n aks-istio-system | grep -v validationControllerResultados esperados:
2023-11-07T08:01:17.780299Z info x509 cert - Issuer: "CN=Intermediate CA - B1,O=Istio,L=cluster-B1", Subject: "", SN: 1159747c72cc7ac7a54880cd49b8df0a, NotBefore: "2023-11-07T07:59:17Z", NotAfter: "2033-11-04T08:01:17Z" 2023-11-07T08:01:17.780330Z info x509 cert - Issuer: "CN=Root B,O=Istio", Subject: "CN=Intermediate CA - B1,O=Istio,L=cluster-B1", SN: 2aba0c438652a1f9beae4249457023013948c7e2, NotBefore: "2023-11-04T01:42:12Z", NotAfter: "2033-11-01T01:42:12Z" 2023-11-07T08:01:17.780345Z info x509 cert - Issuer: "CN=Root B,O=Istio", Subject: "CN=Root B,O=Istio", SN: 3f9da6ddc4cb03749c3f43243a4b701ce5eb4e96, NotBefore: "2023-11-04T01:41:54Z", NotAfter: "2033-11-01T01:41:54Z"A partir das saídas de exemplo mostradas neste artigo, você pode observar que mudamos da Raiz A (usada ao habilitar o addon) para a Raiz B.