En este documento, se proporciona orientación para solucionar problemas de identidad y autorización.
Mantén gcloud anthos auth
actualizado
Puedes evitar muchos problemas habituales si verificas que los componentes de la instalación de gcloud anthos auth
estén actualizados.
Hay dos partes que deben verificarse, puesto que el comando gcloud anthos auth
tiene lógica en el componente principal de gcloud
y un componente anthos-auth
empaquetado por separado.
Actualiza gcloud
con este comando:
gcloud components update
Actualiza anthos-auth
con este comando:
gcloud components install anthos-auth
La configuración del proveedor no es válida
Si la configuración de tu proveedor de identidad no es válida, verás una pantalla de error del proveedor de identidad después de hacer clic en ACCEDER. Sigue las instrucciones específicas del proveedor para configurar correctamente el proveedor o el clúster.
Los permisos no son válidos
Si completas el flujo de autenticación, pero aún no ves los detalles del clúster, asegúrate de haber otorgado los permisos de RBAC correctos a la cuenta que usaste con OIDC. Ten en cuenta que esta cuenta podría ser diferente de la que usas para acceder a la consola de Google Cloud.
Falta el token de actualización
El siguiente problema se produce cuando el servidor de autorización solicita el consentimiento, pero no se proporcionó el parámetro de autenticación necesario.
Error: missing 'RefreshToken' field in 'OAuth2Token' in credentials struct
Para resolver este problema, agrega prompt=consent
al campo authentication.oidc.extraParams
en el archivo de configuración del clúster. Luego, vuelve a generar el archivo de autenticación del cliente.
Token de actualización vencido
Este problema se produce cuando venció el token de actualización en el archivo kubeconfig:
Unable to connect to the server: Get {DISCOVERY_ENDPOINT}: x509: certificate signed by unknown authority
Para resolver este problema, vuelve a ejecutar el comando login
.
gkectl create-login-config no puede obtener clientconfig
Este problema se genera cuando el archivo kubeconfig que se pasa a gkectl create-login-config
no es para un clúster de usuarios o el recurso personalizado de ClientConfig no surgió durante la creación del clúster.
Error getting clientconfig using KUBECONFIG
A fin de resolver este problema, asegúrate de tener el archivo kubeconfig correcto para tu clúster de usuario. Luego, verifica si el objeto ClientConfig está en el clúster:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get clientconfig default -n kube-public
gkectl create-login-config falla debido a un nombre de clúster duplicado
Este problema se produce si intentas escribir datos de configuración de acceso que contienen un nombre de clúster que ya existe en el archivo de destino. Cada archivo de configuración de acceso debe contener nombres de clúster únicos.
error merging with file MERGE_FILE because MERGE_FILE contains a cluster with the same name as the one read from KUBECONFIG. Please write to a new output file
A fin de solucionar este problema, usa la marca --output
para especificar un archivo de destino nuevo.
Si no proporcionas --output
, los datos de configuración de acceso se escriben en un archivo llamado kubectl-anthos-config.yaml
en el directorio actual.
gcloud anthos auth login falla con proxyconnect tcp
Este problema se produce cuando hay un error en las opciones de configuración de las variables de entorno https_proxy
o HTTPS_PROXY
. Si se especifica https://
en las variables de entorno, las bibliotecas cliente HTTP de GoLang pueden fallar si el proxy está configurado para controlar conexiones HTTPS mediante otros protocolos, como SOCK5.
Posible mensaje de error:
proxyconnect tcp: tls: first record does not look like a TLS handshake
A fin de resolver este problema, modifica las variables de entorno https_proxy
y HTTPS_PROXY
para omitir https:// prefix
. En Windows, modifica las variables de entorno del sistema. Por ejemplo, cambia el valor de la variable de entorno https_proxy
de https://webproxy.example.com:8000
a webproxy.example.com:8000
.
El acceso al clúster falla cuando se usa kubeconfig que genera gcloud anthos auth login
Este problema se produce cuando el servidor de la API de Kubernetes no puede autorizar al usuario. Esto puede ocurrir si faltan los RBAC adecuados o son incorrectos, o hay un error en la configuración de OIDC para el clúster.
Unauthorized
Para solucionar este problema, sigue estos pasos:
En el archivo kubeconfig que generó
gcloud anthos auth login
, copia el valor deid-token
.kind: Config … users: — name: … user: auth-provider: config: id-token: xxxxyyyy
Instala jwt-cli y ejecuta lo siguiente:
jwt ID_TOKEN
Verifica la configuración de OIDC.
El
authentication.oidc
en el archivo de configuración del clúster de usuario tiene los camposgroup
yusername
, que se usan para establecer las marcas--oidc-group-claim
y--oidc-username-claim
en la API de Kubernetes. Cuando se presenta el servidor de API con el token, reenvía el token al servicio de identidad de Anthos, que muestra elgroup-claim
y losusername-claim
extraídos al servidor AIP. El servidor de la API usa la respuesta para verificar que el grupo o usuario correspondiente tenga los permisos correctos.Verifica que las reclamaciones establecidas para
group
yuser
en la secciónauthentication.oidc
del archivo de configuración del clúster estén presentes en el token de ID.Verifica los RBAC que se aplicaron.
Verifica que haya un RBAC con los permisos correctos para el usuario que especifica
username-claim
o uno de los grupos enumerados engroup-claim
del paso anterior. El nombre del usuario o grupo en el RBAC debe tener el prefijousernameprefix
ogroupprefix
que se especificó en el archivo de configuración del clúster de usuario.Ten en cuenta que si
usernameprefix
está en blanco yusername
es un valor distinto deemail
, el prefijo se establece de forma predeterminada enissuerurl#
. Para inhabilitar los prefijos de nombre de usuario, estableceusernameprefix
en-
.Para obtener más información sobre los prefijos de usuario y grupo, consulta Autentica con OIDC
Ten en cuenta que el servidor de la API de Kubernetes trata una barra inversa como un carácter de escape. Por lo tanto, si el nombre del usuario o grupo contiene
\\
, el servidor de la API lo lee como una sola\
cuando analiza el token de ID. Es por eso que la vinculación de función de RBAC aplicado a este usuario o grupo debe contener solo una barra inversa o es posible que se produzca un errorUnauthorized
.Archivo de configuración de clúster:
oidc: ... username: "unique_name" usernameprefix: "-" group: "group" groupprefix: "oidc:"
Token de ID:
{ ... "email": "cluster-developer@example.com", "unique_name": "EXAMPLE\\cluster-developer", "group": [ "Domain Users", "EXAMPLE\\developers" ], ... }
Las siguientes vinculaciones de RBAC otorgan a este grupo y usuario la función de clúster
pod-reader
. Observa la barra diagonal simple en el campo del nombre en lugar de una barra doble:Grupo de ClusterRoleBinding:
apiVersion: kind: ClusterRoleBinding metadata: name: example-binding subjects: — kind: Group name: "oidc:EXAMPLE\developers" apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
Usuario de ClusterRoleBinding:
apiVersion: kind: ClusterRoleBinding metadata: name: example-binding subjects: — kind: User name: "EXAMPLE\cluster-developer" apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-reader apiGroup: rbac.authorization.k8s.io
Revisa los registros del servidor de la API de Kubernetes.
Si el complemento de OIDC configurado en el servidor de la API de Kubernetes no se inicia de forma correcta, el servidor de la API muestra un error
Unauthorized
cuando se presenta con el token de ID. Para ver si hubo algún problema con el complemento OIDC en el servidor de la API, ejecuta lo siguiente:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG logs statefulset/kube-apiserver -n USER_CLUSTER_NAME