Casos de uso para solucionar problemas de acceso en Google Cloud

Last reviewed 2022-09-29 UTC

En este documento, se describe cómo usar las herramientas de Google Cloud en casos de uso de solución de problemas relacionados con el acceso a los recursos de Google Cloud. No se describe cómo solucionar problemas de acceso de usuarios finales a tus aplicaciones. En este documento, se da por hecho que estás familiarizado con la solución de problemas de políticas y acceso en Google Cloud. En el documento de solución de problemas de políticas y acceso, se describen los servicios de Google Cloud que pueden aplicar políticas de acceso y las herramientas de solución de problemas que proporciona Google Cloud.

Enfoque de solución de problemas

El primer paso para solucionar un problema relacionado con el acceso es decidir cómo solucionar el problema. En el siguiente diagrama, se proporciona un diagrama de flujo de un enfoque para solucionar problemas de acceso. En el diagrama de flujo, se da por hecho que cuentas con los permisos adecuados para completar los pasos de solución de problemas o que puedes trabajar con alguien que tenga los permisos necesarios.

Un diagrama de flujo de un enfoque para solucionar problemas de acceso.

En el diagrama anterior, se describen los siguientes pasos:

  1. Verificar el acceso de los usuarios en la consola de Google Cloud y en Cloud Shell. Si se niega todo el acceso, verifica los registros de auditoría para ver las entradas de gravedad de errores.
    1. Si hay entradas de gravedad de errores, verifica los permisos necesarios.
      1. Si puedes otorgar permisos para resolver problemas de acceso, soluciona el problema.
      2. Si no puedes resolver los problemas de acceso, comunícate con Atención al cliente de Cloud.
    2. Si no hay entradas de gravedad de error, comunícate con el servicio de atención al cliente.
  2. Si no hay problemas de acceso, verifica si hay problemas de red. Si encuentras problemas de red, resuélvelos.
  3. Si no hay problemas de red, verifica la asignación de cuota. Si encuentras problemas de asignación de cuota, sigue tu proceso para aumentar la cuota y, luego, resuelve el problema.
  4. Si no hay problemas de asignación de cuotas, verifica los registros de auditoría para ver las entradas de gravedad de errores.
    1. Si hay entradas de gravedad de errores, verifica los permisos necesarios.
      1. Si puedes otorgar permisos para resolver problemas de acceso, soluciona el problema.
      2. Si no puedes resolver los problemas de acceso, comunícate con Atención al cliente de Cloud.
    2. Si no hay entradas de gravedad de error, comunícate con el servicio de atención al cliente.

En las siguientes secciones, se proporciona información para completar cada paso de solución de problemas.

Verifica el acceso de los usuarios.

Verifica si el acceso de usuario está denegado en la consola de Google Cloud y Google Cloud CLI:

  1. Accede a la consola de Google Cloud como el usuario afectado.
  2. Intenta acceder al recurso. Por ejemplo, si el usuario informó que no puede iniciar una VM, intenta iniciar una.
  3. En la consola de Google Cloud, abre Cloud Shell y ejecuta el siguiente comando de la CLI de gcloud desde una sesión en la que el usuario accedió. Este comando ayuda a verificar si el usuario accedió a la identidad correcta y si puede acceder al recurso mediante la CLI de gcloud.

    gcloud auth list
    

    El resultado muestra la cuenta a la que accedió el usuario.

  4. Comprueba si el comando anterior muestra la identidad correcta.

    • Si el comando anterior muestra la identidad incorrecta, pídele al usuario que acceda con la identidad correcta. Luego, determina si el acceso sigue siendo un problema cuando usan la identidad correcta.
    • Si el comando anterior muestra la identidad correcta y obtienes un mensaje permission denied, ejecuta el comando de la CLI de gcloud para la acción que el usuario desea completar. Para obtener más detalles sobre la denegación, agrega las marcas --log-http y --verbosity=debug.
  5. Si identificas un problema relacionado con los permisos, ve a Verifica los permisos necesarios.

Comprueba si hay problemas de red

  1. Verifica si hay problemas de red con la guía de solución de problemas de los Controles del servicio de VPC. Si ves un mensaje de error de denegación de los Controles del servicio de VPC, resuelve el problema.
  2. Verifica las rutas de red de origen a destino mediante Pruebas de conectividad. Para obtener información sobre cómo probar la conectividad entre dos instancias de VM en las mismas redes o en redes de intercambio de tráfico, consulta Pruebas dentro de redes de VPC.
  3. Verifica la configuración del firewall mediante Estadísticas de firewall para mostrar cualquier regla de firewall bloqueada y las reglas de rechazo que podrían afectar las rutas de acceso.

Comprueba la asignación de cuota

  • Si no encuentras ningún problema relacionado con la red, verifica la asignación de la cuota. Si parece que hay un problema relacionado con la cuota, sigue el proceso definido para aumentar la cuota, si corresponde.

Revisa los registros de auditoría

  • Verifica los archivos de registro de auditoría con el Explorador de registros. El Explorador de registros proporciona un resumen de la gravedad de una entrada de registro. Se registra la gravedad del registro de errores cuando falla una llamada a la API. Por ejemplo, se registra un error si un usuario intenta crear un bucket de Cloud Storage, pero no tiene los permisos para llamar a storage.buckets.create.

    En el resumen de una entrada de registro, se proporcionan los siguientes detalles:

    • Nombre del recurso de destino
    • Principales (que intenta acceder al recurso)
    • Llamada a la API que el principal intentó ejecutar

Verifica los permisos necesarios

Para depurar por qué el principal no tiene los permisos necesarios, usa el Solucionador de problemas de políticas:

  1. Si las verificaciones indican que no se otorgó el acceso, revisa qué funciones contienen el permiso según lo que indica el solucionador de problemas de políticas.
  2. Usa el Analizador de políticas para ver qué otros principales tienen acceso el recurso al que el principal no tiene acceso.
  3. Agrega la identidad del principal al Grupo de Google que tiene una vinculación al rol apropiada.

Comunícate con el servicio de atención al cliente

Si completaste las secciones de solución de problemas anteriores y no puedes resolver el problema, comunícate con el servicio de atención al cliente para obtener ayuda. Proporciona la mayor cantidad de información posible, tal como se describe en la sección de la guía de solución de problemas Escalar al servicio de atención al cliente.

Ejemplos de casos de uso para la solución de problemas

En esta sección, se proporcionan explicaciones detalladas sobre cómo solucionar casos de uso específicos mediante los pasos anteriores de solución de problemas. Para todos los casos de uso, debes tener los permisos apropiados para usar las herramientas de solución de problemas que se describen en Soluciona problemas de política y acceso en Google Cloud.

En los siguientes casos de uso, se da por hecho que usas Grupos de Google para administrar el acceso de los usuarios. El uso de Grupos de Google para otorgar permisos te permite administrar el acceso a gran escala. Cada miembro de un Grupo de Google hereda las funciones de Identity and Access Management (IAM) otorgadas a ese grupo. Esta herencia significa que puedes usar la membresía de un grupo para administrar las funciones de los usuarios en lugar de otorgar funciones de IAM a usuarios individuales.

El encargado de delegar funciones soluciona los problemas de acceso de los desarrolladores a una función de administrador de Compute.

Como encargado de delegar funciones, necesito comprender por qué no puedo otorgar una función determinada a un desarrollador. Otorgo periódicamente funciones de administrador de Compute a los desarrolladores nuevos cuando se unen a mi equipo. Hoy, traté de otorgar la función de administrador de instancias de procesamiento y se rechazó.

Sigue el diagrama de flujo para verificar el acceso de los usuarios y los registros de auditoría a fin de confirmar que se trata de un problema con los permisos.

Para poder otorgar funciones, necesitas el permiso resourcemanager.projects.setIamPolicy. Este permiso se puede otorgar como parte de las siguientes funciones:

  • Función de administrador de la organización (roles/resourcemanager.organizationAdmin)
  • Función de administrador de carpetas de IAM (roles/resourcemanager.folderIamAdmin)
  • Función de administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin)

Para determinar si el encargado de delegar funciones tiene asignado el permiso resourcemanager.projects.setIamPolicy, usa el solucionador de problemas de políticas. Si ya no se asigna el permiso, verifica lo siguiente:

  1. Verifica si se aplicó una recomendación de IAM que podría haber anulado la política.
  2. Si sabes la última vez que pudiste otorgar funciones, verifica los registros desde ese momento hasta ahora para ver si se realizó alguna llamada a setIam que haya cambiado las políticas aplicadas.
  3. Usa el Analizador de políticas para verificar qué principales tienen resourcemanager.projects.setIamPolicy. El Analizador de políticas puede ayudar a verificar si se quitó de un grupo al encargado de delegar de funciones.

El administrador de la nube soluciona problemas de acceso de desarrolladores a BigQuery

Como administrador de la nube, necesito comprender por qué uno de los desarrolladores ya no puede ejecutar una consulta en un conjunto de datos de BigQuery.

Para solucionar este caso de uso, primero debes verificar el acceso de los usuarios y resolver cualquier problema relacionado. Luego, comprueba si hay problemas de red. En este ejemplo, se da por hecho que determinaste que no hay un problema de identidad o red, pero que hay un problema de permisos.

Para solucionar el problema de permisos, primero verifica los permisos de los miembros del equipo. Si no encuentras discrepancias, verifica los registros para identificar los posibles problemas. Si no encuentras ningún problema en los registros, puedes comunicarte con el servicio de Atención al cliente para obtener ayuda.

Verifica los permisos de los miembros del equipo

Para verificar los permisos de los miembros del equipo, pregúntale al desarrollador cuándo fue la última vez que pudo ejecutar la consulta con éxito. Luego, determina si alguien en el equipo del desarrollador pudo ejecutar la consulta con anterioridad y si esa persona aún puede ejecutar la consulta con éxito. Si ningún miembro del equipo puede ejecutar la consulta, ve a la sección Verifica los registros.

Si un miembro del equipo aún puede ejecutar la consulta, completa los siguientes pasos:

  1. Verifica los permisos de IAM que se otorgan a los desarrolladores y determina si los permisos son diferentes. Cuando revises los permisos, busca lo siguiente:
  2. Si los permisos no difieren, ve a la siguiente sección, Verifica los registros. Si los permisos difieren, completa los siguientes pasos:
    1. Verifica si ambos miembros del equipo están en el mismo Grupo de Google.
      • Si no están en el mismo Grupo de Google, determina si deben estar.
      • Si antes estaban en el mismo Grupo de Google, consulta con el administrador del grupo para determinar por qué se realizaron los cambios.
  3. Después de solucionar el problema de permisos, verifica si el desarrollador puede ejecutar la consulta.
    • Si el desarrollador puede ejecutar la consulta, resuelve el problema.
    • Si el desarrollador no puede ejecutar la consulta, continúa con la siguiente sección, Verifica los registros.

Verifica los registros

Si ningún miembro del equipo puede completar la consulta o si no se resolvió el problema de permiso, verifica los registros para determinar qué podría haber cambiado desde que el desarrollador pudo completar la consulta por última vez.

  1. Determina dónde ver los registros de la última tarea completada con éxito. En este ejemplo, los registros se exportan a BigQuery.
  2. Ejecuta consultas en los registros exportados en BigQuery:
    1. Ejecuta una consulta que incluya la última fecha de éxito a la que el desarrollador tuvo acceso para que puedas ver cómo es el éxito.
    2. Ejecuta la misma consulta durante el tiempo en el que falló la solicitud.
  3. Si hay algún dato que se pueda identificar en los registros, resuelve el problema mediante el Solucionador de problemas de políticas y el Analizador de políticas, tal como se describe en la sección Verifica los permisos necesarios.
  4. Si aún no puedes resolver el problema, comunícate con el servicio de atención al cliente.

El desarrollador necesita permisos para GKE

Como desarrollador, necesito comprender por qué no puedo iniciar, borrar o actualizar un pod ni crear una implementación en el clúster de Google Kubernetes Engine (GKE) a la que tengo acceso. No estoy seguro de qué principal soy cuando realizo la llamada con la herramienta de línea de comandos de kubectl, o qué permisos tengo.

La función de IAM que permite a un desarrollador iniciar, borrar o actualizar un pod, o crear una implementación en el clúster de GKE es la función de desarrollador de Google Kubernetes Engine (roles/container.developer). La función se debe otorgar en el proyecto en el que reside el clúster de GKE.

Para solucionar este caso de uso, primero debes verificar el acceso de los usuarios y resolver cualquier problema relacionado. Después de validar la identidad, asegúrate de que la herramienta de kubectl esté configurada para apuntar al clúster correcto. Para obtener información sobre cómo asegurarte de que la identidad que usa la herramienta kubectl sea correcta y que la herramienta kubectl apunte al clúster correcto, consulta Configura el acceso al clúster. para kubectl. En este ejemplo, se supone que determinaste que no hay un problema de red ni uno relacionado con la cuota, pero que hay un problema con los permisos.

Para comenzar a solucionar problemas de permisos, revisa los registros de auditoría a fin de ver qué cambió entre la última acción exitosa del desarrollador y el momento en que se informó el problema por primera vez.

  1. Si el desarrollador tuvo acceso antes, verifica si un miembro del equipo que también tiene permisos para realizar las mismas acciones puede completarlas. Si el miembro del equipo tiene acceso, usa el Analizador de políticas para ayudar a determinar qué acceso tiene el miembro del equipo. Si sigues las prácticas recomendadas, ambos desarrolladores deben tener los mismos permisos y la misma pertenencia a un grupo.

    1. Si los permisos son los mismos y ninguno de los desarrolladores puede llevar a cabo las acciones en el recurso, verifica si se aplicaron las recomendaciones de IAM que podrían afectar el acceso.
    2. Si los permisos son diferentes, investiga por qué se produjo la diferencia:
      1. Revisa los registros de auditoría de la última vez que el desarrollador pudo realizar la tarea con éxito. Compara los registros con el momento en que realizaron el último intento y no pudieron completar la tarea.
      2. Comprueba las recomendaciones de IAM y aplícalas.
  2. Si no hay otro miembro del equipo para validar, usa el Solucionador de problemas de políticas y el Analizador de políticas tal como se describe en Verifica los permisos necesarios. Para obtener más información, consulta los siguientes recursos:

  3. Si aún no puedes resolver el problema, comunícate con el servicio de atención al cliente.

El administrador de seguridad soluciona problemas de acceso de desarrolladores

Como administrador de seguridad, necesito comprender por qué un desarrollador no pudo realizar una acción. ¿Cuál es la mejor función y la ubicación que se debe asignar a esa función para que esta no proporcione más acceso del que necesita el usuario?

En esta situación, el desarrollador debe poder hacer lo siguiente:

  • Subir objetos a un bucket de Cloud Storage. El desarrollador no debería poder ver, borrar ni reemplazar objetos existentes en el bucket.
  • Iniciar instancias en su proyecto de desarrollo

Si deseas comprender qué permisos son necesarios para realizar la tarea que debe llevar a cabo el desarrollador, usa el Solucionador de problemas de políticas y la página de referencia Comprende las funciones de IAM. En este ejemplo, debes otorgar al desarrollador una función que incluya los siguientes permisos:

  • Para permitir que el desarrollador detenga y, luego, inicie instancias: compute.instances.start y compute.instances.stop.
  • Para permitir que el desarrollador suba objetos a los buckets de Cloud Storage: storage.objects.create.

Las siguientes funciones incluyen los permisos anteriores y cumplen con el principio de privilegio mínimo:

  • A nivel de bucket para el bucket al que el desarrollador puede subir objetos, otorga la función de creador de objetos de almacenamiento (roles/storage.objectCreator).
  • A nivel de proyecto del proyecto asignado del desarrollador o en la instancia que el desarrollador debe poder reiniciar, otorga la función de administrador de instancias de procesamiento (roles/compute.instanceAdmin).

Por lo general, la administración de instancias también puede requerir acciones como agregar discos. En ese caso, la función roles/compute.instanceAdmin podría ser una forma adecuada de otorgar los permisos necesarios sin dejar de cumplir con el principio de privilegio mínimo.

El administrador de la nube soluciona por qué una aplicación no puede escribir en Cloud Storage.

Como administrador de la nube, necesito comprender por qué una aplicación que se ejecuta en GKE ya no puede escribir en Cloud Storage.

En esta situación, una aplicación que se ejecuta en GKE debe configurarse de la siguiente manera:

  • En un bucket especificado, la aplicación puede agregar, actualizar y borrar objetos.
  • La aplicación no puede tener acceso a ningún otro bucket en la organización.

En el siguiente enfoque de solución de problemas, se da por hecho que usas Workload Identity, el cual recomendamos. Con Workload Identity, puedes configurar una cuenta de servicio de Kubernetes para que actúe como una cuenta de servicio de Google. Los pods que se ejecutan como la cuenta de servicio de Kubernetes se autentican de forma automática como la cuenta de servicio de Google cuando acceden a las API de Google Cloud.

En este ejemplo, validas que otorgaste los permisos adecuados a la cuenta de servicio de Google que usas para Workload Identity en el clúster. A fin de comprender los permisos necesarios para completar las tareas de tu aplicación, usa el Solucionador de problemas de políticas y la página de referencia Comprende las funciones de IAM. Para configurar y verificar permisos, realiza estas acciones:

  1. Asigna los siguientes permisos a la cuenta de servicio de Google que usas para Workload Identity:

    1. En el bucket en el que la aplicación puede tener el control total de los objetos, incluidas la enumeración, creación, visualización y eliminación de los objetos, otorga la función de administrador de objetos de almacenamiento (roles/storage.objectAdmin).
    2. Si quieres configurar la cuenta de servicio de Kubernetes para que actúe en nombre de la cuenta de servicio de Google, configura una vinculación de política de IAM:

      gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]" \
        GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
      

      Reemplaza los siguientes valores:

      • PROJECT_ID: El ID de tu proyecto
      • KSA_NAME: La cuenta de servicio de Kubernetes que realiza la solicitud
      • KUBERNETES_NAMESPACE es el espacio de nombres de Kubernetes en el que se define la cuenta de servicio de Kubernetes.
      • GSA_NAME: La cuenta de servicio de Google
  2. Configura el permiso iam.serviceAccounts.setIamPolicy en el proyecto:

    • Agrega la anotación a la cuenta de servicio de Kubernetes:

      iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID
      
  3. Verifica que la cuenta de servicio de Google tenga los permisos adecuados y que Workload Identity esté configurada correctamente:

    1. En el bucket en el que la aplicación tiene control total de los objetos, consulta la política de IAM del depósito y verifica que la cuenta de servicio de Google tenga la función roles/storage.objectAdmin.
    2. Si los permisos no son correctos, modifica la política para otorgar a la cuenta de servicio de Google el permiso requerido.
  4. Para verificar que Workload Identity esté configurado de forma correcta, verifica que haya una vinculación con la cuenta de servicio de Kubernetes:

    gcloud iam service-accounts get-iam-policy \
      GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    El resultado luce de la siguiente manera:

    - members:
      - serviceAccount:PROJECT_ID.svc.id.goog[KUBERNETES_NAMESPACE/KSA_NAME]
      role: roles/iam.workloadIdentityUser
    

    Si la vinculación es incorrecta, repite los pasos anteriores para asignar permisos a la cuenta de servicio.

¿Qué sigue?

  • Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.