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
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:
gcloud components update gcloud components install kubectl
- 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.