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

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

O recurso Acesso Confiável fornece 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.

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

Conectar-se ao cluster

Configure kubectl para se conectar ao cluster usando o az aks get-credentials comando.

export RESOURCE_GROUP_NAME="myResourceGroup"
export CLUSTER_NAME="myClusterName"

az aks get-credentials --resource-group ${RESOURCE_GROUP_NAME} --name ${CLUSTER_NAME} --overwrite-existing

Verifique a conexão com o cluster usando o kubectl get comando.

kubectl get nodes

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.

Para localizar as funções de que necessita, consulte a documentação do serviço do Azure ao qual pretende ligar ao AKS. Você também pode usar a CLI do Azure para listar as funções disponíveis para o serviço do Azure usando o az aks trustedaccess role list --location <location> comando.

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.

export ROLE_BINDING_NAME="myRoleBindingName"
export SOURCE_RESOURCE_ID="mySourceResourceID"
export ROLE_NAME_1="myRoleName1"
export ROLE_NAME_2="myRoleName2"

az aks trustedaccess rolebinding create --resource-group ${RESOURCE_GROUP_NAME} --cluster-name ${CLUSTER_NAME} --name ${ROLE_BINDING_NAME} --source-resource-id ${SOURCE_RESOURCE_ID} --roles ${ROLE_NAME_1},${ROLE_NAME_2}

Resultados:

{
  "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/${RESOURCE_GROUP_NAME}/providers/Microsoft.ContainerService/managedClusters/${CLUSTER_NAME}/trustedAccessRoleBindings/${ROLE_BINDING_NAME}",
  "name": "${ROLE_BINDING_NAME}",
  "provisioningState": "Succeeded",
  "resourceGroup": "${RESOURCE_GROUP_NAME}",
  "roles": [
    "${ROLE_NAME_1}",
    "${ROLE_NAME_2}"
  ],
  "sourceResourceId": "${SOURCE_RESOURCE_ID}",
  "systemData": null,
  "type": "Microsoft.ContainerService/managedClusters/trustedAccessRoleBindings"
}

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 usando o az aks trustedaccess rolebinding update --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME --name $ROLE_BINDING_NAME --roles $ROLE_NAME_3,$ROLE_NAME_4 comando. Este comando atualiza a associação de função com as novas funções que você especificar.

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 o az aks trusted access rolebinding list comando para verificar a vinculação de função atual.

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 --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME comando.

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 --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME comando.