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
-
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Depois que a gcloud CLI é inicializada, ela precisa ser atualizada e os componentes necessários instalados:
gcloud components update gcloud components install kubectl
- 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.