Integração do Azure Ative Directory gerido pela AKS

A integração AZure AD gerida pela AKS foi projetada para simplificar a experiência de integração da AD Azure, onde os utilizadores eram previamente obrigados a criar uma aplicação para clientes, uma aplicação de servidor, e exigiu que o inquilino da AD Azure concedesse permissões de Leitura de Diretório. Na nova versão, o fornecedor de recursos AKS gere as aplicações do cliente e do servidor para si.

Visão geral da autenticação AD do Azure

Os administradores do cluster podem configurar o controlo de acesso baseado em funções da Kubernetes (Kubernetes RBAC) com base na identidade ou membro do grupo de diretórios de um utilizador. A autenticação AZure AD é fornecida aos clusters AKS com OpenID Connect. OpenID Connect é uma camada de identidade construída em cima do protocolo OAuth 2.0. Para obter mais informações sobre o OpenID Connect, consulte a documentação de ligação Open ID.

Saiba mais sobre o fluxo de integração AD do Azure na documentação de conceitos de integração do Azure Ative Directory.

Limitações

  • A integração AD gerida pela AKS não pode ser desativada
  • A alteração de um cluster integrado Azure AD gerido pela Azure para o legado AAD não é suportada
  • os clusters rbac ativados não-Kubernetes não são suportados para a integração Azure AD gerida pela AKS
  • Mudar o inquilino AZure AD associado à integração Azure AD gerida pela AKS não é suportado

Pré-requisitos

  • A versão Azure CLI 2.11.0 ou mais tarde
  • Kubectl com uma versão mínima de 1.18.1 ou kubelogin
  • Se estiver a utilizar o leme,versão mínima do leme 3.3.

Importante

Deve utilizar o Kubectl com uma versão mínima de 1.18.1 ou kubelogin. A diferença entre as versões menores de Kubernetes e kubectl não deve ser mais do que uma versão. Se não utilizar a versão correta, irá notar problemas de autenticação.

Para instalar kubectl e kubelogin, utilize os seguintes comandos:

sudo az aks install-cli
kubectl version --client
kubelogin --version

Utilize estas instruções para outros sistemas operativos.

Antes de começar

Para o seu grupo, precisa de um grupo AD Azure. Este grupo é necessário como grupo de administração para o cluster conceder permissões de administração de cluster. Você pode usar um grupo AD Azure existente, ou criar um novo. Grave a identificação do objeto do seu grupo AD Azure.

# List existing groups in the directory
az ad group list --filter "displayname eq '<group-name>'" -o table

Para criar um novo grupo AD Azure para os seus administradores de cluster, utilize o seguinte comando:

# Create an Azure AD group
az ad group create --display-name myAKSAdminGroup --mail-nickname myAKSAdminGroup

Criar um cluster AKS com Azure AD ativado

Crie um cluster AKS utilizando os seguintes comandos CLI.

Criar um grupo de recursos Azure:

# Create an Azure resource group
az group create --name myResourceGroup --location centralus

Crie um cluster AKS e permita o acesso da administração ao seu grupo AD Azure

# Create an AKS-managed Azure AD cluster
az aks create -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]

Uma criação bem sucedida de um cluster Azure AD gerido pela AKS tem a seguinte secção no corpo de resposta

"AADProfile": {
    "adminGroupObjectIds": [
      "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
  }

Uma vez criado o cluster, pode começar a aceder-lhe.

Aceda a um cluster AD AD Azure

Você precisará do cluster de serviço Azure Kubernetes função incorporada para fazer os seguintes passos.

Obtenha as credenciais de utilizador para aceder ao cluster:

 az aks get-credentials --resource-group myResourceGroup --name myManagedCluster

Siga as instruções para iniciar sinsuposições.

Utilize o comando kubectl get nodes para visualizar os nóns no cluster:

kubectl get nodes

NAME                       STATUS   ROLES   AGE    VERSION
aks-nodepool1-15306047-0   Ready    agent   102m   v1.15.10
aks-nodepool1-15306047-1   Ready    agent   102m   v1.15.10
aks-nodepool1-15306047-2   Ready    agent   102m   v1.15.10

Configure O controlo de acesso baseado em funções (Azure RBAC) para configurar grupos de segurança adicionais para os seus clusters.

Problemas de acesso à resolução de problemas com a Azure AD

Importante

Os passos descritos abaixo estão a contornar a autenticação normal do grupo Azure AD. Use-os apenas em caso de emergência.

Se estiver permanentemente bloqueado por não ter acesso a um grupo Azure AD válido com acesso ao seu cluster, ainda pode obter as credenciais de administração para aceder diretamente ao cluster.

Para fazer estes passos, você precisará ter acesso ao admin de cluster de serviço Azure Kubernetes.

az aks get-credentials --resource-group myResourceGroup --name myManagedCluster --admin

Ativar a integração ad Ad gerida pela AkS no seu cluster existente

Pode ativar a integração AD AD gerida pela AKS no seu cluster rbac existente. Certifique-se de definir o seu grupo de administração para manter o acesso no seu cluster.

az aks update -g MyResourceGroup -n MyManagedCluster --enable-aad --aad-admin-group-object-ids <id-1> [--aad-tenant-id <id>]

Uma ativação bem sucedida de um cluster Ad Azure gerido pela AKS tem a seguinte secção no corpo de resposta

"AADProfile": {
    "adminGroupObjectIds": [
      "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
  }

Baixe novamente as credenciais dos utilizadores para aceder ao seu cluster seguindo os passos aqui.

Upgrade para integração AD Azure gerida pela AKS

Se o seu cluster utilizar a integração Azure AD legacy, pode fazer upgrade para a integração Ad Ad gerida pela AKS.

az aks update -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]

Uma migração bem sucedida de um cluster Azure AD gerido pela AKS tem a seguinte secção no corpo de resposta

"AADProfile": {
    "adminGroupObjectIds": [
      "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
  }

Se quiser aceder ao cluster, siga os passos aqui.

Sinal não interativo com kubelogin

Existem alguns cenários não interativos, como os oleodutos de integração contínua, que não estão atualmente disponíveis com kubectl. Pode utilizar kubelogin para aceder ao cluster com o principal de inscrição do serviço não interativo.

Desativar as contas locais (pré-visualização)

Ao implementar um Cluster AKS, as contas locais são ativadas por padrão. Mesmo ao permitir a integração do RBAC ou do Azure Ative Directory, --admin o acesso ainda existe, essencialmente como uma opção de backdoor não auditável. Com isto em mente, a AKS oferece aos utilizadores a capacidade de desativar as contas locais através de uma bandeira, disable-local . Um properties.disableLocalAccounts campo, também foi adicionado à API gerida para indicar se a funcionalidade foi ativada no cluster.

Nota

Em clusters com integração AD AZure habilitado, os utilizadores pertencentes a um grupo especificado aad-admin-group-object-ids ainda poderão ter acesso através de credenciais não administradas. Em clusters sem integração AD Azure ativado e properties.disableLocalAccounts definido como verdadeiro, obter credenciais de utilizador e administração falhará.

Registar a DisableLocalAccountsPreview funcionalidade de pré-visualização

Importante

As funcionalidades de pré-visualização AKS estão disponíveis numa base de autosserviço, opt-in. As pré-visualizações são fornecidas "conforme" e "conforme disponível", e estão excluídas dos contratos de nível de serviço e garantia limitada. As pré-visualizações da AKS são parcialmente cobertas pelo apoio ao cliente numa base de melhor esforço. Como tal, estas características não se destinam ao uso da produção. As funcionalidades de pré-visualização da AKS não estão disponíveis no Governo de Azure ou nas nuvens Azure China 21Vianet. Para mais informações, consulte os seguintes artigos de apoio:

Para utilizar um cluster AKS sem contas locais, tem de ativar a bandeira de DisableLocalAccountsPreview funcionalidades na sua subscrição. Certifique-se de que está a utilizar a versão mais recente do Azure CLI e a aks-preview extensão.

Registe a bandeira de DisableLocalAccountsPreview características utilizando o comando de registo de recurso az, como mostra o seguinte exemplo:

az feature register --namespace "Microsoft.ContainerService" --name "DisableLocalAccountsPreview"

Demora alguns minutos para que o estado seja apresentado. Pode verificar o estado de registo utilizando o comando da lista de recursos az:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/DisableLocalAccountsPreview')].{Name:name,State:properties.state}"

Quando estiver pronto, reaprovi o registo do fornecedor de recursos Microsoft.ContainerService utilizando o comando de registo do fornecedor az:

az provider register --namespace Microsoft.ContainerService

Criar um novo cluster sem contas locais

Para criar um novo cluster AKS sem contas locais, use os az aks criar comando com a disable-local bandeira:

az aks create -g <resource-group> -n <cluster-name> --enable-aad --aad-admin-group-object-ids <aad-group-id> --disable-local

Na saída, confirme que as contas locais foram desativadas verificando se o campo properties.disableLocalAccounts é definido como verdadeiro:

"properties": {
    ...
    "disableLocalAccounts": true,
    ...
}

Tentar obter credenciais de administração falhará com uma mensagem de erro indicando que a funcionalidade está a impedir o acesso:

az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin

Operation failed with status: 'Bad Request'. Details: Getting static credential is not allowed because this cluster is set to disable local accounts.

Desativar as contas locais num cluster existente

Para desativar as contas locais num cluster AKS existente, utilize o comando de atualização az aks com a disable-local bandeira:

az aks update -g <resource-group> -n <cluster-name> --enable-aad --aad-admin-group-object-ids <aad-group-id> --disable-local

Na saída, confirme que as contas locais foram desativadas verificando se o campo properties.disableLocalAccounts é definido como verdadeiro:

"properties": {
    ...
    "disableLocalAccounts": true,
    ...
}

Tentar obter credenciais de administração falhará com uma mensagem de erro indicando que a funcionalidade está a impedir o acesso:

az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin

Operation failed with status: 'Bad Request'. Details: Getting static credential is not allowed because this cluster is set to disable local accounts.

Ree capacitar as contas locais num cluster existente

A AKS também oferece a capacidade de ree capacitar as contas locais num cluster existente com a enable-local bandeira:

az aks update -g <resource-group> -n <cluster-name> --enable-aad --aad-admin-group-object-ids <aad-group-id> --enable-local

Na saída, confirme que as contas locais foram re habilitados verificando se o campo properties.disableLocalAccounts é definido como falso:

"properties": {
    ...
    "disableLocalAccounts": false,
    ...
}

Tentar obter credenciais de administração terá sucesso:

az aks get-credentials --resource-group <resource-group> --name <cluster-name> --admin

Merged "<cluster-name>-admin" as current context in C:\Users\<username>\.kube\config

Utilizar acesso condicional com AD e AKS AZURE

Ao integrar o Azure AD com o seu cluster AKS, também pode utilizar o Acesso Condicional para controlar o acesso ao seu cluster.

Nota

O Acesso Condicionado AD Azure é uma capacidade AZure AD Premium.

Para criar um exemplo da política de acesso condicional a utilizar com AKS, complete os seguintes passos:

  1. No topo do portal Azure, procure e selecione O Diretório Ativo Azure.
  2. No menu do Azure Ative Directory no lado esquerdo, selecione aplicações Enterprise.
  3. No menu para aplicações Da Empresa no lado esquerdo, selecione Acesso Condicional.
  4. No menu de Acesso Condicional do lado esquerdo, selecione Políticas e depois Nova política. Adicionar uma política de acesso condicional
  5. Insira um nome para a política, como a política aks.
  6. Selecione Utilizadores e grupos, em seguida, incluir utilizadores e grupos selecionados selecione. Escolha os utilizadores e grupos onde pretende aplicar a política. Para este exemplo, escolha o mesmo grupo Azure AD que tem acesso administrativo ao seu cluster. Selecionando utilizadores ou grupos para aplicar a política de acesso condicional
  7. Selecione aplicativos cloud ou ações, em seguida, em Incluir selecione aplicações Selecione. Procure o Serviço Azure Kubernetes e selecione Azure Kubernetes Service AAD Server. Selecionando o Azure Kubernetes Service AD Server para aplicar a política de acesso condicional
  8. Em Controlos de acesso, selecione Concessão. Selecione o acesso grant e, em seguida, exigir que o dispositivo seja marcado como conforme. Selecionando apenas para permitir dispositivos compatíveis para a política de acesso condicional
  9. Sob a política de Ativar, selecione On e, em seguida, Criar. Habilitar a política de acesso condicional

Obtenha as credenciais de utilizador para aceder ao cluster, por exemplo:

 az aks get-credentials --resource-group myResourceGroup --name myManagedCluster

Siga as instruções para iniciar sinsuposições.

Utilize o kubectl get nodes comando para visualizar os nóns no cluster:

kubectl get nodes

Siga as instruções para voltar a entrar. Note que existe uma mensagem de erro indicando que está a iniciar sessão com sucesso, mas o seu administrador requer que o dispositivo que solicita o acesso seja gerido pelo seu AD Azure para aceder ao recurso.

No portal Azure, navegue para O Diretório Ativo Azure, selecione aplicações enterprise e, em seguida, em 'Activa's select . Note uma entrada no topo com um Estado de Falha e um Acesso Condicional de Sucesso. Selecione a entrada e, em seguida, selecione Acesso Condicional em Detalhes. Note que a sua política de Acesso Condicional está listada.

Entrada de entrada falhada devido à política de acesso condicional

Configure o acesso ao cluster just-in-time com Azure AD e AKS

Outra opção para o controlo de acesso ao cluster é utilizar a Gestão de Identidade Privilegiada (PIM) para pedidos just-in-time.

Nota

O PIM é uma capacidade Azure AD Premium que requer um Premium P2 SKU. Para mais informações sobre Azure AD SKUs, consulte o guia de preços.

Para integrar pedidos de acesso just-in-time com um cluster AKS utilizando a integração Azure AD gerida pela AKS, complete os seguintes passos:

  1. No topo do portal Azure, procure e selecione O Diretório Ativo Azure.
  2. Tome nota do ID do Inquilino, referido para o resto destas instruções como <tenant-id> Num navegador web, o ecrã do portal Azure para O Diretório Ativo Azure é mostrado com o ID do inquilino realçado.
  3. No menu do Azure Ative Directory no lado esquerdo, sob Gerir grupos selecionados e depois Novo Grupo. Mostra o ecrã de grupos de grupos do portal Azure com a opção 'Novo Grupo' em destaque.
  4. Certifique-se de que um tipo de segurança do grupo está selecionado e introduza um nome de grupo, como o myJITGroup. Sob Azure AD Roles pode ser atribuído a este grupo (Preview), selecione Sim. Por fim, selecione Criar. Mostra o novo ecrã de criação de grupo do portal Azure.
  5. Serão devolvidos à página grupos. Selecione o seu grupo recém-criado e tome nota do ID do objeto, referido para o resto destas instruções como <object-id> . Mostra o ecrã do portal Azure para o grupo acabado de criar, destacando o Id do Objeto
  6. Implementar um cluster AKS com integração Azure AD gerida pela AKS utilizando os <tenant-id> valores e <object-id> valores anteriores:
    az aks create -g myResourceGroup -n myManagedCluster --enable-aad --aad-admin-group-object-ids <object-id> --aad-tenant-id <tenant-id>
    
  7. De volta ao portal Azure, no menu de Atividade do lado esquerdo, selecione Acesso Privilegiado (Pré-visualização) e selecione Enable Privileged Access. É mostrada a página de acesso privilegiado (Preview) do portal Azure, com destaque para o 'Enable privileged access'
  8. Selecione Adicionar Atribuições para começar a conceder acesso. O ecrã de acesso privilegiado (Preview) do portal Azure após a ativação é mostrado. A opção de 'Adicionar atribuições' está em destaque.
  9. Selecione um papel de membro e selecione os utilizadores e grupos a quem deseja conceder acesso ao cluster. Estas atribuições podem ser modificadas a qualquer momento por um administrador de grupo. Quando estiver pronto para seguir em frente, selecione Next. É apresentado o ecrã de adesão do portal Azure, com um utilizador de amostra selecionado para ser adicionado como membro. A opção 'Seguinte' está em destaque.
  10. Escolha um tipo de atribuição de Ative, a duração desejada, e forneça uma justificação. Quando estiver pronto para prosseguir, selecione Atribua. Para obter mais informações sobre tipos de atribuição, consulte Atribuir elegibilidade para um grupo privilegiado de acesso (pré-visualização) em Gestão de Identidade Privilegiada. É mostrado o ecrã de definição de atribuições do portal Azure. É selecionado um tipo de atribuição de 'Activo' e foi dada uma justificação de amostra. A opção 'Atribuir' é realçada.

Uma vez feitas as atribuições, verifique se o acesso just-in-time está a funcionar acedendo ao cluster. Por exemplo:

 az aks get-credentials --resource-group myResourceGroup --name myManagedCluster

Siga os passos para se inscrever.

Utilize o kubectl get nodes comando para visualizar os nóns no cluster:

kubectl get nodes

Observe o requisito de autenticação e siga os passos para autenticar. Se for bem sucedido, deverá ver uma saída semelhante à seguinte:

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code AAAAAAAAA to authenticate.
NAME                                STATUS   ROLES   AGE     VERSION
aks-nodepool1-61156405-vmss000000   Ready    agent   6m36s   v1.18.14
aks-nodepool1-61156405-vmss000001   Ready    agent   6m42s   v1.18.14
aks-nodepool1-61156405-vmss000002   Ready    agent   6m33s   v1.18.14

Resolução de problemas

Se kubectl get nodes retornar um erro semelhante ao seguinte:

Error from server (Forbidden): nodes is forbidden: User "aaaa11111-11aa-aa11-a1a1-111111aaaaa" cannot list resource "nodes" in API group "" at the cluster scope

Certifique-se de que o administrador do grupo de segurança deu à sua conta uma missão Ativa.

Passos seguintes