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.
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, funciones de Cloud Run 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 Run, este servicio crea la 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 |
Funciones de Cloud Run | @appspot.gserviceaccount.com |
Cloud Run | compute@developer.gserviceaccount.com |
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
gcloud storage buckets add-iam-policy-binding
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. |
|
Visualiza el registro de cambios de las membresías de los grupos de IAM. |
|
Otorga, visualiza y configura los permisos de IAM a nivel de proyecto. |
|
Otorga, visualiza y establece permisos de IAM a nivel de carpeta. |
|
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.
Roles y permisos de Cloud SQL para la integración de Dataplex
Para proporcionar acceso a los metadatos de Cloud SQL en Dataplex, puedes otorgar a un usuario el rol roles/cloudsql.schemaViewer
o agregar el permiso cloudsql.schemas.view
a un rol personalizado.
Para obtener más información, consulta Administra recursos de Cloud SQL con el catálogo de Dataplex.
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:
- 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.
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
ycloudsql.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:
- Conéctate a Cloud SQL desde aplicaciones externas.
- Usa claves de encriptación administradas por el cliente (CMEK).
- Funciones de IAM para administrar los Controles del servicio de VPC.
- Si deseas conectarte a una instancia de Cloud SQL desde una aplicación que se ejecuta en Google Kubernetes Engine, deberás crear un Secreto para un archivo de claves JSON de una cuenta de servicio.
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
- Ve a la página IAM y administración en la consola de Google Cloud
- En el menú desplegable del proyecto en la barra superior, selecciona el proyecto al que deseas agregar un miembro.
- Haz clic en Agregar. Aparecerá el cuadro de diálogo Agregar miembros y funciones al proyecto.
- En el campo Miembros nuevos, especifica el nombre de la entidad a la que deseas otorgarle acceso.
- 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.
- Haz clic en Guardar.
gcloud
Para agregar una política de IAM a nivel de proyecto, usa gcloud beta projects add-iam-policy-binding
.
Visualiza la política de IAM para un proyecto
Console
- Ve a la página IAM y administración en la consola de Google Cloud
- En el menú desplegable del proyecto en la barra superior, selecciona el proyecto cuya política deseas ver.
- 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.
gcloud
Para ver las políticas de IAM de un proyecto, usa gcloud beta projects get-iam-policy
.
Quita a un miembro de una política a nivel de proyecto
Console
- Ve a la página IAM y administración en la consola de Google Cloud
- En el menú desplegable del proyecto en la barra superior, selecciona el proyecto del que deseas quitar un miembro.
- Asegúrate de ver los permisos por Miembros y selecciona los miembros que deseas quitar.
- Haz clic en Quitar.
- En la ventana de superposición que aparece, haz clic en Confirmar.
gcloud
Para quitar una política de IAM 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 permisosetIamPolicy
a un usuario, este puede cambiar los permisos y tomar el control de los datos. Debes usar roles con el permisosetIamPolicy
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?
- Obtén más información sobre cómo controlar el acceso.