Compartilhar via


Obter acesso seguro para recursos do Azure no Serviço de 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 Azure Kubernetes Service (AKS) usando o Acesso Confiável.

O recurso Acesso Confiável fornece aos serviços acesso seguro ao servidor de API do 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 pelo sistema para autenticar com os serviços e aplicativos gerenciados que você deseja usar com seus clusters do AKS.

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 de 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

Conectar-se ao seu cluster

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

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 comando kubectl get.

kubectl get nodes

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.

Para encontrar as funções necessárias, consulte a documentação do serviço do Azure que você deseja conectar 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 comando az aks trustedaccess role list --location <location>.

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.

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 comando 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. Esse comando atualiza a associação de funções com as novas funções especificadas.

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

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

Mostre uma associação de função específica do Acesso Confiável usando o comando az aks trustedaccess rolebinding show --name $ROLE_BINDING_NAME --resource-group $RESOURCE_GROUP_NAME --cluster-name $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 do Acesso Confiável para um cluster usando o comando az aks trustedaccess rolebinding list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME.