Configurar clusters para o serviço de identidade do GKE com SAML
Este documento é destinado a administradores de cluster ou operadores de aplicativos que querem configurar o GKE Identity Service em clusters individuais, permitindo que desenvolvedores e outros usuários façam login nos clusters com os detalhes de identidade deles de um provedor de Linguagem de marcação para autorização de segurança (SAML). Para usar este guia, é necessário ter lido 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 no seu provedor antes de iniciar a configuração.
Verifique se você tem as seguintes ferramentas de linha de comando instaladas:
- Usar a versão 466.0.0 da Google Cloud CLI 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 instalarkubectl
, siga instructions.
Se você estiver usando o Cloud Shell como ambiente shell para interagir com o Google Cloud, essas ferramentas estarão instaladas.
- Usar a versão 466.0.0 da Google Cloud CLI ou uma versão mais recente, que inclui
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 especial de recurso personalizado (CRD, na sigla em inglês) do Kubernetes para configurar os clusters, chamado ClientConfig, com campos para informações sobre o provedor de identidade e os parâmetros necessários para retornar informações do usuário.
kubectl
Para editar o ClientConfig padrão, verifique se é possível se conectar ao cluster
usando 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 seu 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 de SAML, especificado em um formato de 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 em PEM. Apenas dois certificados são aceitos no máximo para facilitar a rotação de certificados do provedor de identidade. | String |
userAttribute | Nã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 do grupo do usuário. | String |
userPrefix | Não | O prefixo que você quer anexar às declarações de usuários para evitar conflitos com nomes existentes, caso não queira usar o prefixo padrão. | String |
groupPrefix | Não | O prefixo que será anexado aos nomes dos grupos de segurança. Isso evita conflitos com nomes atuais nas suas regras de controle de acesso se você tiver configurações para vários provedores de identidade (geralmente o nome do provedor). | String |
attributeMapping | Não | O mapeamento de atributos de usuário adicionais. | String |
certificateAuthorityData | Não | Se fornecida pelo administrador da plataforma, é 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ê tiver cometido erros de sintaxe, será solicitado que edite novamente a configuração para corrigi-los.
A seguir
Depois que a configuração for aplicada, defina o acesso do usuário a clusters.