Configurar instancias nuevas y ya creadas para la autenticación de bases de datos de gestión de identidades y accesos

En esta página se describen los procedimientos para crear o editar instancias de Cloud SQL con el fin de permitir que los usuarios, las cuentas de servicio o los grupos que estén configurados para usar la autenticación de bases de datos de Cloud SQL IAM. Para obtener más información sobre la integración de gestión de identidades y accesos de Cloud SQL, consulta Autenticación de gestión de identidades y accesos.

Una instancia recién creada tiene una base de datos postgres.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the gcloud CLI.

  5. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  6. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the gcloud CLI.

  10. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Asegúrate de tener los roles Administrador de Cloud SQL y Lector de Compute en tu cuenta de usuario.

    Ir a la página de gestión de identidades y accesos

    Más información sobre los roles y los permisos

  13. El número máximo de instancias que puedes tener en un solo proyecto depende de la arquitectura de red de esas instancias:

    • Nueva arquitectura de red SQL: puedes tener hasta 1000 instancias por proyecto.
    • Arquitectura de red SQL antigua: puedes tener hasta 100 instancias por proyecto.
    • Usar ambas arquitecturas: el límite estará entre 100 y 1000, en función de la distribución de tus instancias en las dos arquitecturas.

    Envía un caso de asistencia para solicitar un aumento. Las réplicas de lectura se contabilizan como instancias.

    Configurar instancias nuevas para la autenticación de bases de datos de gestión de identidades y accesos

    Para configurar una instancia de Cloud SQL para la autenticación de bases de datos de gestión de identidades y accesos, debes habilitar la marca cloudsql.iam_authentication. Una vez que hayas habilitado esta marca, podrás añadir usuarios, cuentas de servicio o grupos de gestión de identidades y accesos a la instancia de Cloud SQL.

    Para configurar una instancia de Cloud SQL nueva para que use la autenticación de bases de datos de gestión de identidades y accesos, sigue estos pasos:

    Consola

    1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

      Ir a Instancias de Cloud SQL

    2. Haz clic en Crear instancia.
    3. Haz clic en Elegir PostgreSQL.
    4. Introduce un nombre para el ID de instancia.
    5. No incluyas información sensible ni de identificación personal en el nombre de tu instancia, ya que es visible externamente. No es necesario que incluyas el ID del proyecto en el nombre de la instancia. El ID del proyecto se incluye automáticamente cuando es necesario (por ejemplo, en los archivos de registro).
    6. Introduce una contraseña para el administrador predeterminado.
    7. En el menú Versión de la base de datos, seleccione una versión de la base de datos.
    8. En la sección Choose region and zonal availability (Elegir región y disponibilidad zonal), selecciona la región y la zona de tu instancia. Ubica tu instancia en la misma región que los recursos que acceden a ella. La región que selecciones no se podrá modificar en el futuro. Por lo general, no es necesario que especifiques una zona.
    9. En la sección Personalizar tu instancia, haz clic en Mostrar opciones de configuración y, a continuación, amplía Marcas.
    10. Haz clic en Añadir marca.
    11. En el menú Elige una bandera, selecciona la bandera cloudsql.iam_authentication. Asegúrate de que el valor de esta marca sea Activado y, a continuación, haz clic en Hecho.
    12. Configura otros ajustes de la instancia según sea necesario. Para obtener más información sobre los ajustes, consulta Configuración.
    13. Haz clic en Crear instancia.

    gcloud

    Ejecuta gcloud sql instances create con el parámetro --database-flags definido como cloudsql.iam_authentication=on.

    Haz los cambios siguientes:

    • INSTANCE_NAME: el nombre de la nueva instancia.
    • POSTGRES_VERSION: la versión de PostgreSQL (por ejemplo, POSTGRES_9_6, POSTGRES_10, POSTGRES_11 o POSTGRES_12).
    • NUMBER_OF_CORES: número de núcleos de la máquina.
    • AMOUNT_OF_MEMORY: la cantidad de memoria de la máquina. Se debe indicar una unidad de tamaño (por ejemplo, 3072 MiB o 9 GiB).
    • ZONE: zona de Compute Engine preferida (por ejemplo, us-central1-a o us-central1-b).
    • PASSWORD: crea una contraseña para el usuario root.
    gcloud sql instances create INSTANCE_NAME \
    --database-version=POSTGRES_VERSION \
    --cpu=NUMBER_OF_CORES \
    --memory=AMOUNT_OF_MEMORY \
    --zone=ZONE_NAME \
    --root-password=PASSWORD \
    --database-flags=cloudsql.iam_authentication=on

    Terraform

    Para crear una instancia con la autenticación de bases de datos de gestión de identidades y accesos habilitada, usa un recurso de Terraform.

    resource "google_sql_database_instance" "default" {
      name             = "postgres-db-auth-instance-name-test"
      region           = "us-west4"
      database_version = "POSTGRES_14"
      settings {
        tier = "db-custom-2-7680"
        database_flags {
          name  = "cloudsql.iam_authentication"
          value = "on"
        }
      }
    }

    Aplica los cambios

    Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud

    Preparar Cloud Shell

    1. Abre Cloud Shell.
    2. Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.

      Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.

      export GOOGLE_CLOUD_PROJECT=PROJECT_ID

      Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.

    Preparar el directorio

    Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

    1. En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión .tf. Por ejemplo, main.tf. En este tutorial, nos referiremos al archivo como main.tf.
      mkdir DIRECTORY && cd DIRECTORY && touch main.tf
    2. Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.

      Copia el código de ejemplo en el archivo main.tf que acabas de crear.

      También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.

    3. Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
    4. Guarda los cambios.
    5. Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
      terraform init

      Si quieres usar la versión más reciente del proveedor de Google, incluye la opción -upgrade:

      terraform init -upgrade

    Aplica los cambios

    1. Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
      terraform plan

      Haga las correcciones necesarias en la configuración.

    2. Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo yes en la petición:
      terraform apply

      Espera hasta que Terraform muestre el mensaje "Apply complete!".

    3. Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.

    Eliminar los cambios

    Para eliminar los cambios, sigue estos pasos:

    1. Para inhabilitar la protección contra la eliminación, en el archivo de configuración de Terraform, asigna el valor false al argumento deletion_protection.
      deletion_protection =  "false"
    2. Aplica la configuración de Terraform actualizada ejecutando el siguiente comando e introduciendo yes en la petición:
      terraform apply
    1. Para quitar los recursos que se hayan aplicado anteriormente con tu configuración de Terraform, ejecuta el siguiente comando e introduce yes en la petición:

      terraform destroy

    REST v1

    No incluyas información sensible ni información personal identificable (IPI) en el nombre de tu instancia, ya que es visible externamente.

    No es necesario que incluyas el ID del proyecto en el nombre de la instancia. El ID del proyecto se incluye automáticamente cuando es necesario (por ejemplo, en los archivos de registro).

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • INSTANCE_ID: el ID de instancia que quieras
    • REGION: la región que quieras, como us-east-1
    • PROJECT_ID: el ID del proyecto
    • LOCATION_ID: el ID de la ubicación
    • DATABASE_VERSION: cadena enum de la versión de la base de datos. Por ejemplo: POSTGRES_12
    • PASSWORD: contraseña del usuario raíz
    • MACHINE_TYPE: cadena de enumeración del tipo de máquina (nivel), como: db-custom-[CPUS]-[MEMORY_MBS]

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

    Cuerpo JSON de la solicitud:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        },
        "databaseFlags": [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
    Para ver cómo se crea la solicitud de la API REST subyacente para esta tarea, consulta el Explorador de APIs en la página instances:insert.

    REST v1beta4

    No incluyas información sensible ni información personal identificable (IPI) en el nombre de tu instancia, ya que es visible externamente.

    No es necesario que incluyas el ID del proyecto en el nombre de la instancia. El ID del proyecto se incluye automáticamente cuando es necesario (por ejemplo, en los archivos de registro).

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • INSTANCE_ID: el ID de instancia que quieras
    • REGION: la región que quieras, como us-east-1
    • PROJECT_ID: el ID del proyecto
    • LOCATION_ID: el ID de la ubicación
    • DATABASE_VERSION: cadena enum de la versión de la base de datos. Por ejemplo: POSTGRES_12
    • PASSWORD: contraseña del usuario raíz
    • MACHINE_TYPE: cadena de enumeración del tipo de máquina (nivel), como: db-custom-[CPUS]-[MEMORY_MBS]

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

    Cuerpo JSON de la solicitud:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        },
        "databaseFlags": [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    
    Para ver cómo se crea la solicitud de la API REST subyacente para esta tarea, consulta el Explorador de APIs en la página instances:insert.

    Configurar instancias ya creadas para la autenticación de bases de datos de gestión de identidades y accesos

    Para configurar una instancia de Cloud SQL para la autenticación de bases de datos de gestión de identidades y accesos, debes habilitar la marca cloudsql.iam_authentication. Una vez que hayas habilitado esta marca, podrás añadir usuarios, cuentas de servicio o grupos de gestión de identidades y accesos a la instancia de Cloud SQL.

    Para configurar una instancia de Cloud SQL que ya tengas para que use la autenticación de bases de datos de gestión de identidades y accesos, sigue estos pasos:

    Consola

    1. En la Google Cloud consola, ve a la página Instancias de Cloud SQL.

      Ir a Instancias de Cloud SQL

    2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
    3. Haz clic en Editar.
    4. En la sección Personalizar tu instancia, amplía Marcas.
    5. Haz clic en Añadir marca.
    6. En el menú Elige una bandera, selecciona la bandera cloudsql.iam_authentication. Asegúrate de que el valor de esta marca sea Activado y, a continuación, haz clic en Hecho.
    7. Configura otros ajustes de la instancia según sea necesario. Para obtener más información sobre los ajustes, consulta Configuración.
    8. Haz clic en Guardar.

    gcloud

    Para obtener información sobre cómo instalar y empezar a usar la CLI de gcloud, consulta el artículo Instalar la CLI de gcloud. Para obtener información sobre cómo iniciar Cloud Shell, consulta el artículo Usar Cloud Shell.

    Para este procedimiento, usa gcloud sql instances patch.

    Haz los cambios siguientes:

    • INSTANCE_NAME: el nombre de la nueva instancia.
    gcloud sql instances patch INSTANCE_NAME \
    --database-flags=cloudsql.iam_authentication=on

    De esta forma, se restablecerán todos los demás ajustes de las marcas de la base de datos. Para obtener más información sobre cómo definir indicadores de bases de datos, consulta Definir un indicador de base de datos.


    REST v1

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • LOCATION_ID: el ID de la ubicación
    • INSTANCE_ID: el ID de instancia que quieras
    • REGION: la región deseada
    • DATABASE_VERSION: cadena enum de la versión de la base de datos. Por ejemplo: POSTGRES_12
    • PASSWORD: contraseña del usuario raíz
    • MACHINE_TYPE: cadena de enumeración del tipo de máquina (nivel), como: db-custom-[CPUS]-[MEMORY_MBS]

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/instances

    Cuerpo JSON de la solicitud:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        }
        "databaseFlags":
        [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    REST v1beta4

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto
    • LOCATION_ID: el ID de la ubicación
    • INSTANCE_ID: el ID de instancia que quieras
    • REGION: la región deseada
    • DATABASE_VERSION: cadena enum de la versión de la base de datos. Por ejemplo: POSTGRES_12
    • PASSWORD: contraseña del usuario raíz
    • MACHINE_TYPE: cadena de enumeración del tipo de máquina (nivel), como: db-custom-[CPUS]-[MEMORY_MBS]

    Método HTTP y URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/locations/LOCATION_ID/instances

    Cuerpo JSON de la solicitud:

    {
      "name": "INSTANCE_ID",
      "region": "REGION",
      "databaseVersion": "DATABASE_VERSION",
      "rootPassword": "PASSWORD",
      "settings": {
        "tier": "MACHINE_TYPE",
        "backupConfiguration": {
          "enabled": true
        }
        "databaseFlags":
        [
          {
            "name": "cloudsql.iam_authentication",
            "value": "on"
          }
        ]
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-01T19:13:21.834Z",
      "operationType": "CREATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_ID",
      "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

    Siguientes pasos