Fazer login usando um arquivo de configuração

O serviço de identidade do GKE permite que você faça login em clusters configurados a partir da linha de comando usando um nome de usuário e senha de um provedor de identidade de terceiros. Siga as instruções nesta página se o administrador do cluster tiver optado por compartilhar um arquivo de configuração de login para usar ao autenticar com a CLI gcloud. Para mais informações sobre como acessar clusters, consulte Escolher um método de acesso para fazer login nos clusters.

Fluxo de trabalho de login

Confira a seguir o fluxo de trabalho que o serviço de identidade do GKE usa para fazer login em clusters configurados usando um arquivo de configuração de login. O fluxo exato depende do tipo de provedor de identidade usado.

Fluxo de trabalho OIDC

Com os provedores OIDC, um administrador de cluster registra o serviço de identidade do GKE como um aplicativo cliente para o provedor de identidade e configura cada cluster. Eles podem adicionar controles de acesso detalhados usando o controle de acesso baseado em papéis (RBAC) do Kubernetes, se necessário.

É possível fazer login nos clusters das seguintes maneiras:

Acesso à linha de comando

  1. Autenticar: execute o comando gcloud anthos auth login e insira suas credenciais de login do OIDC. Isso recupera um token de identidade do provedor.
  2. Atualize o Kubeconfig: o token recuperado é adicionado automaticamente ao arquivo kubeconfig.
  3. Cluster de acesso: use kubectl para interagir com o cluster. O servidor da API Kubernetes usa o serviço de identidade do GKE para validar seu token e autorizar o acesso.

Acesso ao console do Google Cloud

  1. Iniciar login: ao fazer login no console do Google Cloud, você é redirecionado para a página de login do provedor de identidade.
  2. Autenticar: insira suas credenciais e faça login.
  3. Cluster de acesso: volte ao console do Google Cloud para visualizar e gerenciar os recursos do cluster.

Fluxo de trabalho LDAP

Com os provedores LDAP, um administrador de cluster configura o serviço de identidade do GKE para cada cluster, o que inclui as credenciais do cliente LDAP. Os administradores do cluster podem adicionar um controle de acesso refinado usando o controle de acesso baseado em papéis (RBAC) do Kubernetes, se necessário.

Acesso à linha de comando

  1. Inicie o login: execute o comando gcloud anthos auth login e digite suas credenciais de login LDAP.
  2. Geração de token: o serviço de identidade do GKE consulta o servidor LDAP, recupera os atributos de usuário e os empacota em um token de curta duração (STS). Suas credenciais LDAP não são armazenadas localmente.
  3. Atualização do Kubeconfig: o token STS é adicionado automaticamente ao arquivo kubeconfig.
  4. Acesso ao cluster: use kubectl para interagir com o cluster. O servidor da API Kubernetes usa o serviço de identidade do GKE para validar seu token e autorizar o acesso. Por padrão, o token expira depois de uma hora, exigindo que o usuário faça login novamente.

Para autenticar clusters na linha de comando, execute os comandos de autenticação gcloud usando um arquivo de configuração de login especial fornecido pelo administrador do cluster.

Receber o arquivo de configuração

A CLI gcloud pressupõe um nome de arquivo e local padrão na máquina local para o arquivo de configuração de autenticação. O administrador pode copiar o arquivo para sua máquina. Se você fornecer o arquivo manualmente e precisar salvá-lo na sua máquina, use os padrões para simplificar os comandos de autenticação gcloud.

Use os comandos a seguir para copiar o arquivo de configuração de autenticação para o local padrão:

Linux

mkdir -p  $HOME/.config/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/.config/google/anthos/kubectl-anthos-config.yaml

[AUTH_CONFIG_FILE] é o nome do arquivo de configuração de autenticação. Por exemplo, kubectl-anthos-config.yaml.

macOS

mkdir -p  $HOME/Library/Preferences/google/anthos/
cp [AUTH_CONFIG_FILE] $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

[AUTH_CONFIG_FILE] é o nome do arquivo de configuração de autenticação. Por exemplo, kubectl-anthos-config.yaml.

Windows

md "%APPDATA%\google\anthos"
copy [AUTH_CONFIG_FILE] "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"

[AUTH_CONFIG_FILE] é o nome do arquivo de configuração de autenticação. Por exemplo, kubectl-anthos-config.yaml.

Se você ou seu administrador optarem por usar um nome de arquivo ou local diferente (por exemplo, se o administrador estiver fornecendo o arquivo em um URL seguro), especifique isso usando a sinalização --login-config com cada uma das solicitações de autenticação. Consulte a seção a seguir para mais detalhes.

Autenticar no cluster

Execute os comandos gcloud para autenticar com os clusters:

  1. Execute o comando gcloud anthos auth login para iniciar o fluxo de autenticação:

    gcloud anthos auth login \
     --cluster [CLUSTER_NAME] \
     --user [USER_NAME] \
     --login-config [AUTH_CONFIG_FILE_PATH] \
     --login-config-cert [CA_CERT_PEM_FILE] \
     --kubeconfig [CLUSTER_KUBECONFIG]

    Substitua:

    • [CLUSTER_NAME] (opcional) especifica o nome do cluster. Se essa sinalização for omitida, você será solicitado a escolher entre os clusters especificados no arquivo de configuração de autenticação.

    • [USER_NAME] (opcional) especifica o nome de usuário das credenciais armazenadas no arquivo kubeconfig. O valor padrão é [CLUSTER_NAME]-anthos-default-user.

    • [AUTH_CONFIG_FILE_PATH] opcional: especifica o caminho ou URL personalizado em que arquivo de configuração de autenticação é armazenado ou hospedado. É possível omitir esse parâmetro se o arquivo estiver no local padrão. Exemplo: --login-config /path/to/custom/authentication-config.yaml;

    • [CA_CERT_PEM_FILE] (opcional) especifica o caminho para um arquivo de certificado PEM da CA. Se o arquivo de configuração de autenticação estiver hospedado com segurança, é possível usar uma conexão HTTPS para acessar o arquivo. Exemplo: --login-config-cert my-cert.pem

    • [CLUSTER_KUBECONFIG] (opcional) especifica o caminho personalizado para o arquivo kubeconfig do cluster. Os tokens de ID OIDC retornados pelo seu provedor OpenID são armazenados no arquivo kubeconfig.

      Use essa sinalização se o arquivo kubeconfig estiver em um local diferente do padrão. Se essa sinalização for omitida, os tokens de autenticação serão adicionados ao arquivo kubeconfig no local padrão. Exemplo: --kubeconfig /path/to/custom.kubeconfig

    Exemplos:

    • Autentique-se em um cluster específico:

      gcloud anthos auth login --cluster my-production-cluster
      
    • Use um prompt para selecionar o cluster a ser autenticado:

      gcloud anthos auth login
      

      Resultado:

      Please use the --cluster flag to specify a cluster from the list below:
      Source: $HOME/.config/google/anthos/kubectl-anthos-config.yaml
      1. Cluster: projects/1000000000000/locations/global/memberships/gke-gcp-cluster ServerIP: https://104.198.180.50:440
      2. Cluster: projects/1000000000000/locations/global/memberships/gke-baremetal-cluster ServerIP: https://104.198.180.51:440
      3. Cluster: projects/1000000000000/locations/global/memberships/gke-onprem-cluster ServerIP: https://104.198.180.52:440
      4. Cluster: projects/1000000000000/locations/global/memberships/gke-aws-cluster ServerIP: https://104.198.180.53:440
      
    • Use um arquivo de configuração de autenticação hospedada:

      gcloud anthos auth login \
       --cluster my-production-cluster \
       --login-config HTTPS://my-secure-server/kubectl-anthos-config.yaml \
       --login-config-cert my-cert.pem
      
    • Use um prompt para selecionar uma opção de autenticação. Para mais informações, consulte Escolher um método de autenticação.

  2. Digite suas credenciais na tela de consentimento baseada no navegador que é aberta. Se isso funcionar, o arquivo kubeconfig deverá conter um token de ID que os comandos kubectl usarão para se autenticar com o servidor da API Kubernetes no cluster.

  3. Verifique se a autenticação foi bem-sucedida. Basta executar um dos comandos kubectl para acessar um recurso no cluster. Por exemplo, se você tiver acesso ao recurso "nós" no cluster (esse acesso é configurado pelo administrador do cluster), será possível executar o comando a seguir e visualizar os nós do cluster:

    kubectl get nodes --kubeconfig [CLUSTER_KUBECONFIG]

Para resolver problemas de acesso do usuário, consulte Resolver problemas de acesso do usuário.

Escolher um método de autenticação

Se o administrador do cluster tiver configurado vários provedores de identidade para o cluster (por exemplo, um provedor OIDC e um servidor LDAP) e não tiver configurado um provedor padrão para o cluster, você será solicitado a fazer login para selecionar uma opção de autenticação, como no exemplo a seguir:

gcloud anthos auth login

Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

1

Setting Preferred Authentication option to [LDAP Server]

Insira uma opção numérica e continue o login conforme descrito em Autenticar no cluster acima.

A opção de autenticação escolhida é salva até que o administrador do cluster altere o provedor padrão para o cluster ou você mesmo o altere. Para alterar sua opção de autenticação preferida, use a sinalização --set-preferred-authentication.

gcloud anthos auth login --set-preferred-authentication

Você verá um resultado como o exemplo a seguir, que permite escolher uma nova opção de autenticação preferida:

Your current authentication method is [1] AD Server. Please select your preferred authentication option for cluster [gke-onprem-ldap]
[1] LDAP Server
[2] OIDC
[3] cancel

Please enter your numeric choice:

2

Setting Preferred Authentication option to [OIDC]

Como usar SSH para autenticação em uma máquina remota

Para se conectar a uma máquina remota e autenticar um cluster com SSH, o arquivo de configuração de autenticação precisa estar na máquina remota e você precisa conseguir acessar o provedor OpenID da máquina local.

Na máquina local, execute o comando a seguir:

ssh [USER_NAME]@[REMOTE_MACHINE] -L [LOCAL_PORT]:localhost:[REMOTE_PORT]

Substitua:

  • [USER_NAME] e [REMOTE_MACHINE] são os valores padrão usados para fazer login com SSH;

  • [LOCAL_PORT] é uma porta aberta de sua escolha na máquina local que você usará para acessar a máquina remota;

  • [REMOTE_PORT] é a porta que você configurou para o URL de redirecionamento OIDC. Acesse o campo kubectlRedirectURI do arquivo de configuração de autenticação.

No shell SSH, execute o comando a seguir para iniciar a autenticação:

gcloud anthos auth login --login-config [AUTH_CONFIG_FILE]

[AUTH_CONFIG_FILE] é o caminho do arquivo de configuração de autenticação na máquina remota.

Na máquina local, em um navegador, acesse http://localhost:[LOCAL_PORT]/login e conclua o fluxo de login do OIDC.

Agora, o arquivo kubeconfig na sua máquina remota tem o token necessário para acessar o cluster.

No shell SSH, verifique se você tem acesso ao cluster:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get nodes