Configurar clusters membros da frota para autenticação SAML

Este documento descreve como administradores de cluster ou operadores de aplicativos podem configurar clusters do Kubernetes para oferecer suporte à autenticação de um provedor de Linguagem de marcação para autorização de segurança (SAML) terceirizado. Para mais informações, consulte Sobre a autenticação usando identidades de terceiros.

Limitações

Use um tipo de cluster que ofereça suporte ao SAML.

Antes de começar

  1. Install the Google Cloud CLI.

  2. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

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

    gcloud init
  4. Depois que a gcloud CLI é inicializada, ela precisa ser atualizada e os componentes necessários instalados:

    gcloud components update
    gcloud components install kubectl
  5. Verifique se o administrador da plataforma forneceu todas as informações necessárias do provedor. Para mais informações, consulte Compartilhar detalhes do provedor.

Configurar o cluster

Para configurar um cluster para autenticação usando SAML, configure um recurso personalizado do Kubernetes chamado ClientConfig com informações sobre o provedor de identidade e os parâmetros necessários para retornar informações do usuário.

Para editar o ClientConfig do default, conecte-se ao cluster kubectl e execute o seguinte comando:

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

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

Um editor de texto carrega o recurso ClientConfig do cluster. Adicione o objeto spec.authentication.saml conforme mostrado no exemplo a seguir. Não modifique nenhum dado padrão que já tenha sido gravado.

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.
...

É possível adicionar várias configurações de provedores de identidade OIDC, LDAP e SAML ao mesmo ClientConfig. O cluster tenta se autenticar com cada configuração na ordem em que elas são definidas e para após a primeira autenticação bem-sucedida. O exemplo a seguir de ClientConfig define vários provedores de identidade em uma 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 do ClientConfig

A tabela a seguir descreve os campos do objeto saml do ClientConfig. Os campos que você precisa adicionar dependem dos tokens do provedor de identidade e de como o administrador da plataforma configurou o provedor.

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.