Partilhar via


Controle de acesso baseado em função em clusters Kubernetes do Azure Operator Nexus

Este artigo fornece um guia abrangente sobre como gerenciar o acesso a clusters 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 da sua organização.

Antes de começar

  1. Para começar, crie um grupo do Microsoft Entra para os administradores do 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.
  2. Use o ID do grupo que você criou como o valor para 'adminGroupObjectIds' ao criar o cluster Nexus Kubernetes para garantir que os membros do grupo obtenham permissões para gerenciar o cluster. Consulte o guia QuickStart para obter instruções sobre como criar e acessar o cluster Nexus Kubernetes.

Acesso de administrador ao cluster

O Nexus cria uma ligaçã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.

Nota

Quando você cria um cluster Nexus Kubernetes, o Nexus cria automaticamente um grupo de recursos gerenciado dedicado a armazenar os recursos do cluster, dentro desse grupo, o recurso de cluster conectado ao Arc é estabelecido.

Para acessar o cluster, você precisa configurar a conexão kubeconfigdo cluster . Depois de iniciar sessão na CLI do Azure com a entidade Microsoft Entra relevante, pode obter o necessário para comunicar com o cluster a partir de qualquer lugar, mesmo fora da firewall que o kubeconfig rodeia.

  1. Definir CLUSTER_NAME, RESOURCE_GROUP e SUBSCRIPTION_ID variáveis.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Consultar grupo de recursos gerenciados com az e armazenar em MANAGED_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)
    
  3. O comando a seguir inicia um proxy connectedk8s que permite que você se conecte ao servidor de API do Kubernetes para o cluster Nexus Kubernetes especificado.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Use kubectl para enviar solicitações para o cluster:

    kubectl get pods -A
    

    Agora você deve ver uma resposta do cluster contendo a lista de todos os nós.

Nota

Se você vir a mensagem de erro "Falha ao postar token de acesso ao proxy do clienteFalha ao se conectar ao MSI", talvez seja necessário executar um az login para autenticar novamente com o Azure.

Controlo de acesso baseado em funções

Como administrador, você pode fornecer controle de acesso baseado em função para o cluster criando uma associação de função com a ID de objeto de grupo do Microsoft Entra. Para usuários que só precisam de permissões de 'visualização', você pode realizar a tarefa adicionando-os a um grupo do Microsoft Entra vinculado à função 'exibir'.

  1. Crie um grupo do Microsoft Entra para usuários que precisam de acesso 'view', 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.

  2. Anote a ID do objeto de grupo do Microsoft Entra gerada na criação.

  3. Use o comando kubectl para criar um clusterrolebinding com a função 'view' e associá-lo 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
    

    Este comando cria uma ligação de função de cluster nomeada nexus-read-only-users que atribui a view função aos membros do grupo especificado do Microsoft Entra.

  4. Verifique se a associação de função foi criada com êxito.

    kubectl get clusterrolebinding nexus-read-only-users
    
  5. Agora, os usuários do grupo Microsoft Entra têm acesso 'view' ao cluster. Eles podem acessar o cluster usando az connectedk8s proxy para exibir os recursos, mas não podem fazer alterações

Próximos passos

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ções detalhadas sobre como criar mais funções personalizadas e vinculações de função de acordo com suas necessidades.