Configure clusters de membros da frota para a autenticação SAML

Este documento descreve como os administradores de clusters ou os operadores de aplicações podem configurar clusters do Kubernetes para suportar a autenticação de um fornecedor de Linguagem de marcação de afirmações de segurança (SAML) de terceiros. Para mais informações, consulte o artigo Acerca da autenticação através de identidades de terceiros.

Limitações

Tem de usar um tipo de cluster que suporte SAML.

Antes de começar

  1. Install the Google Cloud CLI.

  2. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  3. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  4. Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:

    gcloud components update
    gcloud components install kubectl
  5. Certifique-se de que o administrador da plataforma lhe deu todas as informações de fornecedor de que precisa. Para mais informações, consulte o artigo Partilhe detalhes do fornecedor.

Configure o cluster

Para configurar um cluster para autenticação através de SAML, configura um recurso personalizado do Kubernetes denominado ClientConfig com informações sobre o fornecedor de identidade e os parâmetros que o fornecedor tem de devolver informações do utilizador.

Para editar o default ClientConfig, certifique-se de que consegue estabelecer ligação ao cluster kubectl e, em seguida, execute o seguinte comando:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

Substitua KUBECONFIG_PATH pelo caminho para o ficheiro kubeconfig do seu cluster, por exemplo, $HOME/.kube/config.

Um editor de texto carrega o recurso ClientConfig do seu cluster. Adicione o objeto spec.authentication.saml, conforme mostrado no exemplo seguinte. Não modifique nenhum dado predefinido que já tenha sido escrito.

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: NAME
    saml:
      attributeMapping:
        ATTRIBUTE_KEY_1: ATTRIBUTE_CEL_EXPRESSION_1
        ATTRIBUTE_KEY_2: ATTRIBUTE_CEL_EXPRESSION_2
      groupsAttribute: GROUPS_ATTRIBUTE
      groupPrefix: GROUP_PREFIX
      idpEntityID: ENTITY_ID
      idpSingleSignOnURI: SIGN_ON_URI
      idpCertificateDataList: IDP_CA_CERT
      userAttribute: USER_ATTRIBUTE
      userPrefix: USER_PREFIX
    certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
    preferredAuthentication: PREFERRED_AUTHENTICATION
    server: <>
# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Pode adicionar várias configurações de fornecedores de identidade OIDC, LDAP e SAML à mesma ClientConfig. O cluster tenta autenticar-se com cada configuração pela ordem em que são definidas e para após a primeira autenticação bem-sucedida. O exemplo ClientConfig seguinte define vários fornecedores de identidade numa ordem específica:

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - aws:
      region: us-west-2
    name: AWS Login
  - ldap:
  # Multiple lines are omitted here.
  - saml:
  # Multiple lines are omitted here.
  - azureAD:
  # Multiple lines are omitted here.
  - oidc:
    name: Okta OIDC
  # Multiple lines are omitted here.
  - oidc:
    name: Google OIDC
  # Multiple lines are omitted here.

Campos SAML ClientConfig

A tabela seguinte descreve os campos do objeto ClientConfig saml. Os campos que tem de adicionar dependem dos tokens do seu fornecedor de identidade e da forma como o administrador da plataforma configurou o fornecedor.

Campo Obrigatória Descrição Formato
nome Sim O nome que quer usar para identificar esta configuração, normalmente o nome do fornecedor de identidade. Um nome de configuração tem de começar por uma letra, seguida de até 39 letras minúsculas, números ou hífenes, e não pode terminar com um hífen. String
idpEntityID Sim O ID da entidade SAML para o fornecedor SAML, especificado num formato URI. Por exemplo: https://www.idp.com/saml. String de URL
idpSingleSignOnURI sim O ponto final do SSO do fornecedor SAML, especificado num formato de URI. Por exemplo: https://www.idp.com/saml/sso. String de URL
idpCertificateDataList Sim Corresponde aos certificados do fornecedor de identidade usados para validar a resposta SAML. Estes certificados têm de estar codificados em Base64 padrão e no formato PEM. Só é suportado um máximo de dois certificados para facilitar a rotação de certificados do fornecedor de identidade. String
userAttribute Não Nome do atributo na resposta SAML que contém o nome de utilizador. String
groupsAttribute Não Nome do atributo na resposta SAML que contém as informações do grupo do utilizador. String
userPrefix Não O prefixo que quer antepor às reivindicações do utilizador para evitar conflitos com nomes existentes, se não quiser usar o prefixo predefinido. String
groupPrefix Não O prefixo que quer antepor aos nomes dos grupos de segurança. Isto destina-se a evitar conflitos com nomes existentes nas suas regras de controlo de acesso se tiver configurações para vários fornecedores de identidade (normalmente, o nome do fornecedor). String
attributeMapping Não O mapeamento de atributos de utilizador adicionais. String
certificateAuthorityData Não Se for fornecida pelo administrador da plataforma, esta é uma string de certificado codificada em PEM para o fornecedor 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, guarde o ficheiro, o que atualiza o ClientConfig no cluster. Se cometeu erros de sintaxe, é-lhe pedido que volte a editar a configuração para os corrigir.

O que se segue?

Depois de aplicar a configuração, continue a configurar o acesso dos utilizadores aos clusters.