Obtenha acesso seguro para recursos do Azure no Serviço Kubernetes do Azure usando o Acesso Confiável

Muitos serviços do Azure que se integram ao Serviço Kubernetes do Azure (AKS) precisam de acesso ao servidor de API do Kubernetes. Para evitar conceder acesso de administrador a esses serviços ou tornar seus clusters AKS públicos para acesso à rede, você pode usar o recurso AKS Trusted Access.

Esse recurso dá aos serviços acesso seguro ao servidor de API AKS usando o back-end do Azure sem exigir um ponto de extremidade privado. Em vez de depender de identidades que têm permissões do Microsoft Entra , esse recurso pode usar sua identidade gerenciada atribuída ao sistema para autenticar com os serviços gerenciados e aplicativos que você deseja usar com seus clusters AKS.

Este artigo mostra como obter acesso seguro para seus serviços do Azure ao seu servidor de API do Kubernetes no AKS usando o Acesso Confiável.

Nota

A API de Acesso Confiável está disponível em geral. Fornecemos suporte de disponibilidade geral (GA) para a CLI do Azure, mas ela ainda está em visualização e requer o uso da extensão aks-preview.

Visão geral do recurso Acesso Confiável

O Acesso Confiável aborda os seguintes cenários:

  • Se um intervalo de IP autorizado estiver definido ou em um cluster privado, os serviços do Azure talvez não consigam acessar o servidor de API do Kubernetes, a menos que você implemente um modelo de acesso de ponto de extremidade privado.

  • Conceder a um administrador de serviço do Azure acesso à API do Kubernetes não segue as práticas recomendadas de acesso com privilégios mínimos e pode levar a escalonamentos de privilégios ou risco de vazamento de credenciais. Por exemplo, talvez seja necessário implementar permissões de serviço a serviço com privilégios elevados, e elas não são ideais em uma revisão de auditoria.

Você pode usar o Acesso Confiável para dar consentimento explícito à sua identidade gerenciada atribuída pelo sistema de recursos permitidos para acessar seus clusters AKS usando um recurso do Azure chamado associação de função. Os seus recursos do Azure acedem a clusters AKS através do gateway regional AKS através da autenticação de identidade gerida atribuída pelo sistema. As permissões apropriadas do Kubernetes são atribuídas por meio de um recurso do Azure chamado função. Através do Acesso Fidedigno, pode aceder a clusters AKS com diferentes configurações, incluindo, entre outros, clusters privados, clusters com contas locais desativadas, clusters Microsoft Entra e clusters de intervalo IP autorizados.

Pré-requisitos

Criar um cluster do AKS

Na mesma assinatura que o recurso do Azure que você deseja acessar o cluster, crie um cluster AKS.

Selecione as funções de Acesso Confiável necessárias

As funções selecionadas dependem dos serviços do Azure que você deseja acessar o cluster AKS. Os serviços do Azure ajudam a criar funções e associações de função que criam a conexão do serviço do Azure com o AKS.

Criar uma associação de função de Acesso Confiável

Depois de confirmar qual função usar, use a CLI do Azure para criar uma associação de função de Acesso Confiável no cluster AKS. A associação de função associa sua função selecionada ao serviço do Azure.

# Create a Trusted Access role binding in an AKS cluster

az aks trustedaccess rolebinding create  --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <role binding name> -s <connected service resource ID> --roles <roleName1, roleName2>

Eis um exemplo:

# Sample command

az aks trustedaccess rolebinding create \
-g myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--source-resource-id /subscriptions/000-000-000-000-000/resourceGroups/myResourceGroup/providers/Microsoft.MachineLearningServices/workspaces/MyMachineLearning \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin

Atualizar uma associação de função de Acesso Confiável existente

Para uma associação de função existente que tenha um serviço de origem associado, você pode atualizar a associação de função com novas funções.

Nota

O gerenciador de complementos atualiza clusters a cada cinco minutos, portanto, a nova vinculação de função pode levar até cinco minutos para entrar em vigor. Antes que a nova vinculação de função entre em vigor, a vinculação de função existente ainda funciona.

Você pode usar az aks trusted access rolebinding list --name <role binding name> --resource-group <resource group> para verificar a vinculação de função atual.

# Update the RoleBinding command

az aks trustedaccess rolebinding update --resource-group <AKS resource group> --cluster-name <AKS cluster name> -n <existing role binding name>  --roles <newRoleName1, newRoleName2>

Eis um exemplo:

# Update the RoleBinding command with sample resource group, cluster, and roles

az aks trustedaccess rolebinding update \
--resource-group myResourceGroup \
--cluster-name myAKSCluster -n test-binding \
--roles Microsoft.Compute/virtualMachineScaleSets/test-node-reader,Microsoft.Compute/virtualMachineScaleSets/test-admin

Mostrar uma vinculação de função de Acesso Confiável

Mostrar uma ligação de função de Acesso Confiável específica usando o az aks trustedaccess rolebinding show comando:

az aks trustedaccess rolebinding show --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>

Listar todas as associações de função de Acesso Confiável para um cluster

Liste todas as associações de função de Acesso Confiável para um cluster usando o az aks trustedaccess rolebinding list comando:

az aks trustedaccess rolebinding list --resource-group <AKS resource group> --cluster-name <AKS cluster name>

Excluir uma associação de função de Acesso Confiável para um cluster

Aviso

A exclusão de uma associação de função de Acesso Confiável existente desconecta o serviço do Azure do cluster AKS.

Exclua uma associação de função de Acesso Confiável existente usando o az aks trustedaccess rolebinding delete comando:

az aks trustedaccess rolebinding delete --name <role binding name> --resource-group <AKS resource group> --cluster-name <AKS cluster name>