Controle de acesso baseado em funções em clusters do Kubernetes do Azure Operator Nexus
Este artigo fornece um guia abrangente sobre como gerenciar o acesso a clusters do Nexus Kubernetes usando o Microsoft Entra ID. Especificamente, estamos nos concentrando no controle de acesso baseado em função, que permite conceder permissões aos usuários com base em suas funções ou responsabilidades dentro de sua organização.
Antes de começar
- Para começar, crie um grupo do Microsoft Entra para os administradores de cluster e atribua membros a ele. O Microsoft Entra ID permite que o acesso seja concedido ao grupo como um todo, em vez de gerenciar permissões para cada usuário individualmente.
- Use a ID do grupo que você criou como o valor para 'adminGroupObjectIds' ao criar o cluster do Nexus Kubernetes para garantir que os membros do grupo obtenham permissões para gerenciar o cluster. Consulte o guia de início rápido para obter instruções sobre como criar e acessar o cluster do Nexus Kubernetes.
Acesso de administrador ao cluster
O Nexus cria uma associação de função de cluster do Kubernetes com a função cluster-admin
padrão do Kubernetes e os grupos do Microsoft Entra especificados como adminGroupObjectIds
. Os administradores de cluster têm acesso total ao cluster e podem executar todas as operações no cluster. Os administradores de cluster também podem conceder acesso a outros usuários atribuindo-os ao grupo apropriado do Microsoft Entra.
Observação
Quando você cria um cluster do Kubernetes do Nexus, o Nexus cria automaticamente um grupo de recursos dedicado ao armazenamento dos recursos de cluster, dentro desse grupo, o recurso de cluster conectado do Arc é estabelecido.
Para acessar o cluster, você precisa configurar a conexão do cluster kubeconfig
. Depois de fazer logon na CLI do Azure com a entidade Microsoft Entra relevante, você pode obter o kubeconfig
necessário para se comunicar com o cluster de qualquer lugar, mesmo fora do firewall que o cerca.
Configure as variáveis
CLUSTER_NAME
,RESOURCE_GROUP
eSUBSCRIPTION_ID
.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Consultar o grupo de recursos gerenciados com o
az
e armazenar noMANAGED_RESOURCE_GROUP
az account set -s $SUBSCRIPTION_ID MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
O comando a seguir inicia um proxy connectedk8s que permite que você se conecte ao servidor de API do Kubernetes para o cluster especificado do Kubernetes do Nexus.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
Use
kubectl
para enviar solicitações ao cluster:kubectl get pods -A
Agora você deve conseguir ver uma resposta do cluster contendo a lista de todos os nós.
Observação
Se estiver vendo a mensagem de erro "Falha ao postar o token de acesso no proxy do cliente ou Falha ao se conectar à MSI", talvez seja necessário executar um az login
para se autenticar novamente no Azure.
Controle de acesso baseado em função
Como administrador, você pode fornecer controle de acesso baseado em função ao cluster criando uma associação de função com a ID do objeto de grupo do Microsoft Entra. Para usuários que precisam apenas de permissões de 'exibição', você pode realizar a tarefa adicionando-os a um grupo do Microsoft Entra vinculado à função 'exibir'.
Crie um grupo do Microsoft Entra para usuários que precisam de acesso de 'exibição', referindo-se à função padrão do Kubernetes chamada
view
. Essa função é apenas um exemplo e, se necessário, você pode criar funções personalizadas e usá-las. Para obter mais informações sobre funções voltadas para o usuário no Kubernetes, você pode consultar a documentação oficial em Funções de acesso baseadas em rolo do Kubernetes.Anote a ID do objeto de grupo do Microsoft Entra gerada na criação.
Use o comando kubectl para criar uma clusterrolebinding com a função 'view' e associá-la ao grupo Microsoft Entra. Substitua
AZURE_AD_GROUP_OBJECT_ID
pela ID do objeto do seu grupo do Microsoft Entra.kubectl create clusterrolebinding nexus-read-only-users --clusterrole view --group=AZURE_AD_GROUP_OBJECT_ID
Esse comando cria uma associação de função de cluster chamada
nexus-read-only-users
que atribui aview
função aos membros do grupo Microsoft Entra especificado.Verifique se a associação de função foi criada com êxito.
kubectl get clusterrolebinding nexus-read-only-users
Agora, os usuários do grupo Microsoft Entra têm acesso de 'visualização' ao cluster. Eles podem acessar o cluster usando
az connectedk8s proxy
para exibir os recursos, mas não podem fazer alterações
Próximas etapas
Você pode ajustar ainda mais o controle de acesso criando funções personalizadas com permissões específicas. A criação dessas funções envolve recursos nativos do Kubernetes RoleBinding ou ClusterRoleBinding. Você pode verificar a documentação oficial do Kubernetes para obter orientação detalhada sobre como criar mais funções personalizadas e associações de função de acordo com suas necessidades.