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

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

Esse recurso fornece aos serviços acesso seguro ao servidor de API do AKS através do uso do back-end do Azure sem a necessidade de 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 pelo sistema para autenticar com os serviços e aplicativos gerenciados que você deseja usar com seus clusters do AKS.

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

Observação

A API de Acesso Confiável está disponível para o público geral. Fornecemos suporte a GA (disponibilidade geral) para a CLI do Azure, mas ela ainda está em versão prévia 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.

  • Dar a um administrador de serviços do Azure acesso à API do Kubernetes não segue a melhor prática de acesso a 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 altos 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 do AKS usando um recurso do Azure chamado associação de função. Os recursos do Azure acessam os clusters do AKS por meio do gateway regional do AKS via autenticação de identidade gerenciada atribuída pelo sistema. As permissões apropriadas do Kubernetes são atribuídas por meio de um recurso do Azure chamado função. Por meio do Acesso Confiável, você pode acessar clusters do AKS com configurações diferentes, incluindo, entre outros, clusters privados, clusters que têm contas locais desativadas, clusters do Microsoft Entrae clusters de intervalo de IP autorizados.

Pré-requisitos

Criar um cluster AKS

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

Selecione as funções de acesso confiável obrigatórias

As funções selecionadas dependem dos serviços do Azure que você deseja para acessar o cluster do 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 do 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>

Veja 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 tem um serviço de origem associado, você pode atualizar a associação de função com novas funções.

Observação

O gerenciador de complementos atualiza os clusters a cada cinco minutos, portanto, a nova associação de função pode levar até cinco minutos para entrar em vigor. Antes que a nova associação de função entre em vigor, a associaçã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 associaçã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>

Veja 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 associação de função de Acesso Confiável

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

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 comando az aks trustedaccess rolebinding list:

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

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

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

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