Funciones y permisos

En esta página, se proporciona información sobre los roles y permisos de Identity and Access Management (IAM), y cómo se usan con las instancias de Cloud SQL.

Introducción

En esta página, se describen aspectos de IAM relevantes para Cloud SQL en particular. Para obtener un análisis más detallado de IAM y sus características en general, consulta Administración de identidades y accesos. En particular, lee la sección Administra políticas de IAM. IAM te permite controlar quién tiene acceso a los recursos en tu proyecto de Google Cloud. El conjunto de reglas de acceso que aplicas a un recurso se denomina política de IAM. Una política de IAM que se aplica a tu proyecto define las acciones que los usuarios pueden realizar en todos los recursos de tu proyecto.

Los miembros son “quienes” están en IAM. Los miembros pueden ser usuarios individuales, grupos, dominios o incluso el público en general. A los miembros se les asignan roles que les otorgan la capacidad de realizar acciones en Cloud SQL, así como en Google Cloud, de manera más general. Cada función es una colección de uno o más permisos. Los permisos son las unidades básicas de IAM. Cada uno te permite realizar una acción determinada. Consulta Roles de IAM en Cloud SQL y Permisos de IAM en Cloud SQL para obtener listas completas de todos los roles y los permisos disponibles en Cloud SQL.

Cuando usas una cuenta para conectarte a una instancia de Cloud SQL, la cuenta debe tener la función de Cloud SQL > Cliente (roles/cloudsql.client), que incluye los permisos obligatorios para la conexión.

Puedes agregar funciones a una cuenta en la página IAM y administración > IAM de Console y ver qué permisos pertenecen a qué funciones en la página IAM y administración > Funciones.

Cloud SQL usa cuentas de servicio para la autenticación entre Cloud SQL y otros productos de Google Cloud. Las cuentas de servicio proporcionan credentials en formato JSON, que puedes descargar desde Console y usar para la autenticación en varias situaciones.

Por ejemplo, se pueden usar para realizar una conexión desde una aplicación que se ejecuta en un contenedor de Docker.

Roles y permisos de Cloud SQL con el proxy de autenticación de Cloud SQL

Si te conectas a una instancia de Cloud SQL desde una instancia de Compute Engine con el proxy de Cloud SQL Auth, puedes usar la cuenta de servicio predeterminada de Compute Engine asociada con la instancia de Compute Engine.

Al igual que sucede con todas las cuentas que se conectan a una instancia de Cloud SQL, la cuenta de servicio debe tener el rol Cloud SQL > Cliente.

Funciones y permisos de Cloud SQL con opciones sin servidores

Las opciones sin servidores de Google Cloud incluyen App Engine, Cloud Functions y Cloud Run.

Para autorizar el acceso desde estas opciones, debes usar una cuenta de servicio. La cuenta de servicio autoriza el acceso a todo Cloud SQL en un proyecto específico. Cuando creas una aplicación o una función de Cloud Functions, este servicio crea esta cuenta por ti. Puedes encontrar la cuenta en la página IAM y administración > IAM mediante el sufijo adecuado:

Opción sin servidores Sufijo de la cuenta de servicio
App Engine @gae-api-prod.google.com.iam.gserviceaccount.com
Cloud Functions @appspot.gserviceaccount.com
Cloud Run compute@developer.gserviceaccount.com
Al igual que sucede con todas las cuentas que se conectan a una instancia de Cloud SQL, la cuenta de servicio debe tener el rol Cloud SQL > Cliente.

Funciones y permisos de Cloud SQL con Cloud Storage

Las funciones de importación y exportación en Cloud SQL funcionan en conjunto. Las exportaciones escriben en Cloud Storage y las importaciones leen desde allí. Por esta razón, la cuenta de servicio que uses para estas operaciones necesita permisos de lectura y escritura en Cloud Storage:

  • Para importar y exportar datos en Cloud Storage, la cuenta de servicio de la instancia de Cloud SQL debe tener la función de IAM storage.objectAdmin establecida en el proyecto. Puedes encontrar el nombre de la cuenta de servicio de la instancia en la consola de Google Cloud en la página Descripción general de la instancia.
  • Puedes usar el comando gsutil iam para otorgar esta función de IAM a la cuenta de servicio del depósito.
  • Para obtener ayuda con la configuración de los permisos y las funciones de IAM, consulta la sección sobre cómo usar permisos de IAM.
  • Si deseas obtener más información, consulta IAM para Cloud Storage.

Funciones y permisos de Cloud SQL con autenticación de grupos de IAM

Cuando usas la autenticación de grupo de IAM, creas grupos. Luego, puedes usar los grupos para administrar los privilegios de acceso y base de datos a tus instancias de Cloud SQL.

En la siguiente tabla, se enumeran las funciones necesarias para administrar la autenticación de grupos de IAM.

Acción Roles
Crea, visualiza y administra grupos.

roles/resourcemanager.organizationViewer

Visualiza el registro de cambios de las membresías de los grupos de IAM.

roles/logging.viewer

Otorga, visualiza y configura los permisos de IAM a nivel de proyecto.

roles/resourcemanager.projectIamAdmin

Otorga, visualiza y establece permisos de IAM a nivel de carpeta.

roles/resourcemanager.folderIamAdmin

El administrador puede otorgar funciones de Cloud SQL o otorgar permisos de Cloud SQL individuales a cada grupo. Los miembros de cada grupo heredan funciones y permisos.

Permiso para acceder a instancias privadas de Cloud SQL

Cuando otro servicio de Google Cloud, como BigQuery, se deba comunicar con tu instancia de Cloud SQL para acceder a los datos y realizar consultas en estos datos a través de una conexión privada, el servicio usa una ruta de acceso interna en lugar de las direcciones IP privadas dentro de la nube privada virtual (VPC). El tráfico no se puede controlar ni restringir con ninguna configuración a nivel de VPC, reglas de firewall, políticas de enrutamiento ni cortes del intercambio de tráfico.

En cambio, Cloud SQL ofrece una marca de configuración en tu instancia para controlar si se activa o desactiva esta ruta de acceso interna en otros servicios de Google Cloud que acceden a la base de datos.

Controla y revoca el permiso

Cuando otro servicio de Google Cloud, como BigQuery, intente acceder a la instancia privada de Cloud SQL, esta debe proporcionar una identidad legítima con el permiso cloudsql.instances.connect de IAM.

Por lo general, un servicio puede lograr esto de las siguientes dos maneras:

  1. Reenvío de las credenciales del usuario. Un servicio puede reenviar la identidad de IAM del usuario a Cloud SQL para evaluar el permiso de acceso a una instancia. En este caso, el usuario debe tener suficientes permisos de IAM para que Cloud SQL pueda realizar una conexión exitosa.
  2. Utiliza una cuenta de servicio Un servicio, como BigQuery, puede usar una cuenta de servicio preconfigurada para conectarse a una instancia de Cloud SQL. En este caso, la cuenta de servicio debe tener suficientes permisos de IAM.

    Por ejemplo, para la conexión federada entre BigQuery y Cloud SQL, se crea una cuenta de servicio llamada service-{PROJECT_NUMBER}@gcp-sa-bigqueryconnection.iam.gserviceaccount.com cuando se activa la API de conexión de BigQuery. Esta cuenta de servicio tiene dos permisos de Cloud SQL: cloudsql.instances.connect y cloudsql.instances.get. BigQuery usa estos permisos para acceder a una instancia privada de Cloud SQL a través de una ruta de acceso interna.

Para controlar quién puede usar esta ruta de acceso interna, puedes otorgar y revocar los permisos de IAM desde y hacia la identidad de IAM del usuario, que el servicio de Google Cloud, como BigQuery, usa para conectarse a tu instancia de Cloud SQL. Para obtener más información sobre cómo otorgar y revocar permisos en BigQuery, consulta Configura el acceso a Cloud SQL.

Funciones y permisos de Cloud SQL en otras situaciones

Cloud SQL interactúa con otros productos y herramientas de Google Cloud. Estas interacciones también requieren funciones y permisos específicos que pueden variar según la situación. La documentación de Cloud SQL proporciona información detallada sobre estos requisitos en cada uno de los casos que se muestran a continuación:

Usa IAM con proyectos

En las siguientes secciones, se muestra cómo completar tareas básicas de IAM en proyectos.

Para completar las siguientes tareas, debes tener los permisos resourcemanager.projects.getIamPolicy y resourcemanager.projects.setIamPolicy de IAM.

Agrega un miembro a una política a nivel de proyecto

Para obtener una lista de los roles asociados con Cloud SQL, consulta Roles de IAM.

Console

  1. Ve a la página IAM y administración en la consola de Google Cloud
  2. En el menú desplegable del proyecto en la barra superior, selecciona el proyecto al que deseas agregar un miembro.
  3. Haz clic en Agregar. Aparecerá el cuadro de diálogo Agregar miembros y funciones al proyecto.
  4. En el campo Miembros nuevos, especifica el nombre de la entidad a la que deseas otorgarle acceso.
  5. En el menú desplegable Seleccionar una función, otorga la función correspondiente al miembro. Los roles que afectan a los recursos de Cloud SQL se encuentran en los submenús Proyecto y Cloud SQL.
  6. Haz clic en Guardar.

gsutil

Las políticas de IAM a nivel de proyecto se administran a través del comando de gcloud, que forma parte del SDK de Google Cloud. Para agregar una política a nivel de proyecto, usa gcloud beta projects add-iam-policy-binding.

Visualiza la política de IAM para un proyecto

Console

  1. Ve a la página IAM y administración en la consola de Google Cloud
  2. En el menú desplegable del proyecto en la barra superior, selecciona el proyecto cuya política deseas ver.
  3. Hay dos maneras de ver los permisos del proyecto:
    • Ver por Miembros: Consulta la columna Función asociada a miembros individuales para ver qué funciones tiene cada miembro.
    • Ver por Funciones: Usa el menú desplegable asociado a funciones individuales para ver qué miembros tienen la función.

gsutil

Las políticas de IAM a nivel de proyecto se administran a través del comando de gcloud, que forma parte del SDK de Google Cloud. Para ver las políticas de IAM de un proyecto, usa el comando gcloud beta projects get-iam-policy.

Quita a un miembro de una política a nivel de proyecto

Console

  1. Ve a la página IAM y administración en la consola de Google Cloud
  2. En el menú desplegable del proyecto en la barra superior, selecciona el proyecto del que deseas quitar un miembro.
  3. Asegúrate de ver los permisos por Miembros y selecciona los miembros que deseas quitar.
  4. Haz clic en Quitar.
  5. En la ventana de superposición que aparece, haz clic en Confirmar.

gsutil

Las políticas de IAM a nivel de proyecto se administran a través del comando de gcloud, que forma parte del SDK de Google Cloud. Para quitar una política a nivel de proyecto, usa gcloud beta projects remove-iam-policy-binding.

Prácticas recomendadas

Como en toda configuración administrativa, para que la IAM sea eficaz, se requiere una administración activa. Antes de hacer que un recurso sea accesible para otros usuarios, asegúrate de saber qué roles quieres que tengan cada una de esas personas. A lo largo del tiempo, es posible que, con los cambios en la administración del proyecto, los patrones de uso y la propiedad de la organización, debas modificar la configuración de IAM en los proyectos, en especial si administras Cloud SQL en una organización grande o para un grupo de muchos usuarios. A medida que evalúes y planifiques tu configuración de control de acceso, ten en cuenta las siguientes prácticas recomendadas:

  • Usa el principio de menor privilegio cuando otorgues acceso. El principio de privilegio mínimo es un lineamiento de seguridad para otorgar acceso a tus recursos. Cuando otorgas acceso basado en el principio de menor privilegio, le das a un usuario solo el acceso que necesita para realizar la tarea asignada.

  • Evita otorgar funciones con el permiso setIamPolicy a las personas que no conoces. Si se otorga el permiso setIamPolicy a un usuario, este puede cambiar los permisos y tomar el control de los datos. Debes usar roles con el permiso setIamPolicy solo cuando desees delegar el control administrativo sobre los objetos y los buckets.

  • Asegúrate de delegar el control administrativo de tus recursos. Debes asegurarte de que otros miembros del equipo aún puedan administrar tus recursos si un individuo con acceso de administrador abandona el grupo. Estas son las dos formas comunes de lograrlo:

    • Asigna el rol Administrador de Cloud SQL para tu proyecto a un grupo en lugar de a una persona.
    • Asigna el rol Administrador de Cloud SQL para tu proyecto a al menos dos personas.

¿Qué sigue?