Configurar clusters do serviço de identidade do GKE com LDAP

Este documento é destinado a administradores de cluster ou operadores de aplicativos que querem configurar o serviço de identidade do GKE em clusters individuais, permitindo que desenvolvedores e outros usuários façam login nos clusters com os detalhes de identidade atuais de um provedor de Linguagem de marcação para autorização de segurança (SAML). O guia pressupõe que você leu a visão geral do serviço de identidade do GKE. As instruções neste documento presumem que o sGKE Identity Service já tenha sido registrado com seu provedor de identidade como um aplicativo cliente.

Antes de começar

  • Verifique se o administrador da plataforma forneceu todas as informações necessárias em Registrar o serviço de identidade do GKE com seu provedor antes de iniciar a configuração.
  • Verifique se você tem as seguintes ferramentas de linha de comando instaladas:

    • Use a versão 466.0.0 da CLI do Google Cloud ou uma versão mais recente, que inclui gcloud, a ferramenta de linha de comando para interagir com o Google Cloud. Se você precisar instalar a Google Cloud CLI, consulte o guia de instalação.
    • kubectl para executar comandos em clusters do Kubernetes. Se precisar instalar kubectl, siga estas instruções.

    Se você estiver usando o Cloud Shell como ambiente shell para interagir com o Google Cloud, essas ferramentas estarão instaladas.

  • Verifique se você inicializou a CLI gcloud para uso com o projeto em que os clusters estão registrados.

Configurar o cluster

O serviço de identidade do GKE usa um tipo de recurso personalizado (CRD) especial do Kubernetes para configurar os clusters chamados ClientConfig, com campos para informações sobre o provedor de identidade e os parâmetros necessários para retornar as informações do usuário.

kubectl

Para editar o ClientConfig padrão, conecte-se ao cluster por meio do kubectl e execute o seguinte comando:

kubectl --kubeconfig=KUBECONFIG_PATH edit ClientConfigs default -n kube-public

Substitua KUBECONFIG_PATH pelo caminho para o arquivo kuneconfig do cluster, por exemplo, $HOME/.kube/config.

Um editor de texto carrega o recurso ClientConfig do cluster. Adicione o objeto saml conforme indicado no snippet.

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: NAME
   saml:
     idpEntityID: ENTITY_ID
     idpSingleSignOnURI: SIGN_ON_URI
     idpCertificateDataList: IDP_CA_CERT
     userAttribute: USER_ATTRIBUTE
     groupsAttribute: {'<var name="user attribute">GROUPS_ATTRIBUTE</var>'}}
     userPrefix: USER_PREFIX
     groupPrefix: GROUP_PREFIX
     attributeMapping:
       ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1
       ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2
  certificateAuthorityData: CERTIFICATE_STRING
  preferredAuthentication: PREFERRED_AUTHENTICATION
  server: <>

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

A tabela a seguir descreve os campos do objeto saml do ClientConfig. Os campos que você precisa adicionar dependem do provedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma ao configurar o provedor para o serviço de identidade do GKE.

Campo Obrigatório Descrição Formato
nome Sim O nome que você quer usar para identificar essa configuração, normalmente o nome do provedor de identidade. O nome de configuração precisa começar com uma letra seguida por até 39 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. String
idpEntityID Sim O ID da entidade SAML do provedor de SAML, especificado em um formato de URI. Por exemplo, https://www.idp.com/saml. String do URL
idpSingleSignOnURI sim O endpoint de SSO do provedor SAML, especificado em um formato URI. Por exemplo, https://www.idp.com/saml/sso. String do URL
idpCertificateDataList Sim Corresponde aos certificados do provedor de identidade usados para verificar a resposta SAML. Esses certificados precisam ser codificados em base64 padrão e formatados no formato PEM. Apenas dois certificados são aceitos para facilitar a rotação de certificados do provedor de identidade. String
userAttribute Não O nome do atributo na resposta SAML que contém o nome de usuário. String
groupsAttribute Não Nome do atributo na resposta SAML que contém as informações sobre o grupo do usuário. String
userPrefix Não O prefixo que você quer adicionar ao início das declarações do usuário para evitar conflitos com nomes existentes, se não quiser usar o prefixo padrão. String
groupPrefix Não O prefixo que você quer adicione ao início dos nomes dos grupos de segurança para evitar conflitos com nomes existentes nas suas regras de controle de acesso se você tiver configurações para vários provedores de identidade (normalmente o nome do provedor). String
attributeMapping Não O mapeamento de atributos adicionais do usuário. String
certificateAuthorityData Não Se fornecida pelo administrador da plataforma, ela é uma string de certificado codificada em PEM para o provedor de identidade. Inclua a string resultante em certificateAuthorityData como uma única linha. String
preferredAuthentication Não Nome do método de autenticação preferido configurado no cluster. String

Depois de concluir o ClientConfig, salve o arquivo, que atualiza o ClientConfig no cluster. Se você cometeu erros de sintaxe, será solicitado que reedite a configuração para corrigi-los.

A seguir

Depois que a configuração for aplicada, defina o acesso do usuário a clusters.