Esta página é destinada a operadores de infraestrutura.
Nesta página, descrevemos como ativar a autenticação no Anthos Management Center usando o OpenID Connect (fornecedor de OIDC). O OIDC é uma camada de autenticação criada com base no OAuth 2.0 que especifica uma API HTTP RESTful e usa JSON como formato de dados.
O OIDC permite usar o provedor de identidade atual para gerenciar a autenticação de usuário e grupo. Use o OIDC para gerenciar o acesso a um cluster do Kubernetes com os procedimentos padrão da organização para criar, ativar e desativar contas de funcionários.
Antes de começar
Antes de configurar o OIDC, você precisa do seguinte:
- O nome de domínio usado para acessar o Centro de gerenciamento,
fornecido pelo operador de infraestrutura, por exemplo:
anthos.example.com
. - Um provedor OIDC, como o Microsoft Active Directory Federation Services (ADFS), o SSO do Google ou o Keycloak. O cluster e o navegador precisam se conectar ao provedor OIDC. O provedor OIDC não precisa se conectar novamente ao cluster. Se você não tiver um provedor OIDC, consulte Como autenticar com o Keycloak para instalar um. O Keycloak serve apenas para fins de demonstração e não é recomendado para um ambiente de produção.
Criar perfis de identidade
Os perfis de identidade contêm a configuração necessária para usar um provedor de identidade para autenticação. As etapas a seguir são usadas para criar um perfil de identidade:
No console do Centro de gerenciamento, abra o menu Identidade e acesso.
Na guia Identidade, clique em Configurar o Anthos Identity Service (OIDC).
No campo Nome do perfil, atribua um nome de perfil fácil de usar. Esse é o nome ao qual o perfil é referenciado.
Insira o URL do provedor OIDC, o ID do cliente e a chave secreta do cliente doseu provedor de OIDC.
Defina o campo Declaração de nome de usuário. A declaração de nome de usuário é aquela que está no token do OIDC e que tem o nome de usuário. Por exemplo, se a declaração do nome de usuário for
email
, os usuários serão identificados pelo campo de usuário no token OIDC.Ao definir essa declaração, verifique se ela está nos escopos solicitados.
Defina o campo Prefixo do nome de usuário. O prefixo do nome de usuário é usado para distinguir usuários de diferentes provedores de identidade. O prefixo do usuário também precisa ser incluído ao atribuir permissões RBAC aos usuários.
Por exemplo, se a declaração do nome de usuário for
email
e o prefixo do usuário forprefix-
, os usuários serão identificados comoprefix-sally@example.com
. O usuário ésally@example.com
e o prefixoprefix-
é prefixado no usuário para distinguir os diferentes provedores de identidade.Defina o campo Declaração de grupos. No Anthos em execução no modo desconectado, o padrão é
groups
. Consulte Vinculações de papéis para mais informações sobre a vinculação de grupos a papéis.Defina o campo Prefixo do grupo. O prefixo do grupo é usado para distinguir grupos de diferentes provedores de identidade. O prefixo do grupo também precisa ser incluído ao atribuir permissões do RBAC a grupos.
Por exemplo, se a declaração do grupo for
groups
e o prefixo do grupo forgroupprefix-
, os grupos serão identificados comogroupprefix-group
. O grupo égroup
e o prefixogroupprefix-
é prefixado no grupo. Recomendamos a inserção de um separador no final do prefixo, conforme descrito na configuração do prefixo de nome de usuário na etapa 6.(Opcional) Defina o campo Escopos se os escopos não forem
openid email profile
.Os escopos são os identificadores usados para especificar quais privilégios de acesso solicitar no token de ID:
openid
é obrigatório para o OIDC.profile
inclui as declaraçõesprofile
padrão do usuário.email
geralmente inclui as declaraçõesemail
eemail_verified
.
Se o provedor de OIDC, como o SSO do Google, exigir parâmetros adicionais, defina o campo Parâmetros extras.
Por exemplo, o campo Parâmetros extras pode ser definido como
prompt=consent,access_type=offline
para exibir uma tela de consentimento todas as vezes, antes de solicitar a autorização dos escopos de acesso.Se a conexão HTTPS com a página do
/.well-known/openid-configuration
ou a página JWKS do seu provedor de OIDC for protegida por um certificado não confiável (por exemplo, um certificado autoassinado), você precisará preencher o campo Certificado do fornecedor OIDC com o certificado HTTPS usado pelo seu provedor de OIDC.Codifique o certificado codificado por PEM do provedor OIDC em
base64
. Para criar a string, codifique o certificado, incluindo cabeçalhos, embase64
. Inclua a string resultante em uma única linha.Exemplo:
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==
Consulte Como autenticar com o Keycloak para ver um exemplo de como configurar esse campo.
Clique em Enviar e retorne à guia Identidade e acesso.
Registre o URL de callback com o provedor OIDC.
Para criar outros perfis de identidade, clique em Adicionar na guia Perfil de identidade.
Aplicar perfis de identidade ao cluster de administrador
Os perfis de identidade precisam ser aplicados aos clusters depois de criados.
Na guia Perfil de identidade, clique em Aplicar a clusters.
Clique na guia Cluster de administrador. Na lista suspensa Perfil, selecione o nome do perfil criado anteriormente. É possível selecionar vários perfis para aplicar ao cluster.
Verifique o nome de domínio do perfil. Esse é o nome de domínio mapeado para o perfil de provedor de identidade. Os usuários não autenticados que tentarem acessar caminhos no domínio serão direcionados para fazer login com esse provedor de identidade. Esse nome de domínio é atribuído pelo operador da infraestrutura.
Cada perfil precisa receber um nome de domínio diferente, se mais de um perfil for aplicado de cada vez.
Consulte Configurar nome de domínio para acessar a Central de gerenciamento para detalhes sobre como configurar um nome de domínio.
Digite um nome de usuário inicial que receberá os direitos de acesso de administrador da plataforma (por exemplo, alice@example.com, bob@example.com). O nome de usuário deve ser prefixado com o prefixo do usuário definido no perfil. Por exemplo, se o prefixo for
prefix-
, o nome de usuário no campo Administrador da plataforma inicial deve ser semelhante aprefix-alice@example.com
. Veja mais detalhes sobre administradores de plataformas e autorização em Papéis de autorização.Aplique as configurações e aguarde alguns minutos para que as configurações sejam aplicadas e os serviços sejam reiniciados.
Agora você pode acessar o Centro de gerenciamento com seu nome de domínio. Se você não estiver conectado, será redirecionado ao seu provedor de OIDC para fazer login.
Configurar o OIDC pela API
Em vez de configurar o OIDC pelo Centro de gerenciamento, você também pode configurá-lo pela API.
Para configurar a autenticação do OIDC, você precisa configurar o CRD ClientConfig
do cluster de administrador com detalhes de autenticação. Para fazer isso, crie um arquivo contendo o seguinte conteúdo (por exemplo, admin-cluster-oidc-config.yaml
):
spec:
authentication:
- name: CONFIGURATION_NAME
oidc:
clientID: CLIENT_ID
clientSecret: CLIENT_SECRET
# The URI to redirect users going through the OAuth flow using cloud
# console.
# This is a required parameter not supported by Anthos private mode, so
# a dummy value is required.
cloudConsoleRedirectURI: http://cloud.console.not.enabled
extraParams: EXTRA_PARAMS
issuerURI: ISSUER_URI
# The redirect URL that kubectl uses for authorization.
kubectlRedirectURI: http://localhost:9879/callback
scopes: SCOPES
userClaim: USER_CLAIM
groupsClaim: GROUPS_CLAIM
certificateAuthorityData: CERT_AUTHORITY_DATA
Substitua:
- CONFIGURATION_NAME: o nome da configuração do OIDC a ser criada.
- CLIENT_ID: o ID do aplicativo cliente que faz solicitações de autenticação para o provedor OpenID.
- CLIENT_SECRET: secret para o aplicativo cliente.
- EXTRA_PARAMS: parâmetros de chave-valor extras (separados por vírgulas) para enviar ao provedor OpenID.
- ISSUER_URI: URL para onde as solicitações de autorização são enviadas para o OpenID.
- SCOPES: escopos adicionais (separados por vírgulas) para enviar ao provedor OpenID.
- USER_CLAIM: a declaração do JWT a ser usada como nome de usuário. É possível escolher outras declarações, como e-mail ou nome, dependendo do provedor OpenID. No entanto, as declarações diferentes de e-mail são prefixadas com o URL do emissor para evitar conflitos de nomenclatura.
- GROUPS_CLAIM: nome da declaração no token de ID do OIDC que contém as informações do grupo do usuário.
- CERT_AUTHORITY_DATA: um certificado opcional codificado em PEM codificado em base64 para o provedor OIDC. Remova-o se não for necessário. Para criar a string, codifique o certificado, incluindo cabeçalhos, em base64. Inclua a string resultante em certificateAuthorityData como uma única linha.
Depois de editar o arquivo com a configuração desejada, execute o seguinte comando:
kubectl patch --kubeconfig=ADMIN_KUBECONFIG clientconfig default -n kube-public \
--type=merge --patch "$(cat OIDC_CONFIG)"
Substitua:
- ADMIN_KUBECONFIG: o caminho até o arquivo kubeconfig do cluster de administrador.
- OIDC_CONFIG: caminho para o arquivo de configuração que você criou.
Faça login com o OIDC no servidor da API Kubernetes do cluster de administrador
Os usuários podem fazer o download de admin-actl-auth-login-config.yaml
na página Identidade e acesso
após a configuração do OIDC.
Na página "Identidade e acesso", clique na guia Identidade e na guia Cluster.
Encontre o cluster admin e clique em Ver detalhes de configuração.
Clique em Fazer o download da configuração de login para fazer o download da configuração usada para fazer login com a identidade do cluster do administrador no servidor da API Kubernetes.
O arquivo de saída
admin-actl-auth-login-config.yaml
contém a configuração necessária para que os usuários se autentiquem com o cluster de administrador. Compartilheadmin-actl-auth-login-config.yaml
com usuários confiáveis que precisam acessar o cluster.Depois de adquirir
admin-actl-auth-login-config.yaml
, os usuários podem fazer login usando o comandoactl auth login
. Quando os usuários fazem login por meio de um navegador, um kubeconfig é produzido. Os usuários podem usar esse novo arquivo para acessar o cluster usando as credenciais federadas:# Where to store the new kubeconfig export ADMIN_OIDC_KUBECONFIG=$(pwd)/admin-oidc-kubeconfig actl auth login --login-config=admin-actl-auth-login-config.yaml --cluster=admin \ --kubeconfig=${ADMIN_OIDC_KUBECONFIG} \ --preferred-auth="CONFIGURATION_NAME"
Substitua
CONFIGURATION_NAME
pelo nome do perfil de identidade para autenticação.Agora, os usuários podem usar
${ADMIN_OIDC_KUBECONFIG}
para acessar recursos no cluster do administrador. Por exemplo:kubectl get pods -n anthos-management-center --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
${ADMIN_OIDC_KUBECONFIG}
também pode ser usado para autenticar comandos da CLI doactl
. Por exemplo:actl platform management-center describe --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
Redefinir configuração de autenticação
Se um administrador de plataforma perder o acesso ao Centro de gerenciamento devido a um erro nas configurações de autenticação, execute o seguinte comando para redefinir a autenticação do OIDC para a configuração original e conseguir o novo URL de acesso para o Centro de gerenciamento.
actl auth reset --kubeconfig=ADMIN_KUBECONFIG
# Get the new access URL to management center.
actl platform management-center describe --kubeconfig=ADMIN_KUBECONFIG
A seguir
- Saiba como configurar papéis de autorização.