Agrega políticas de la organización personalizadas

En esta página, se describe cómo crear, configurar y administrar restricciones personalizadas en las instancias de Cloud SQL. Para obtener una descripción general de las políticas de la organización personalizadas, consulta Políticas de la organización personalizadas.

Antes de comenzar

  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.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Agrega el rol de administrador de políticas de la organización (roles/orgpolicy.policyAdmin) a tu cuenta de usuario o servicio desde la página IAM y administración.

    Ir a la página Cuentas de IAM

  11. Consulta Restricciones antes de realizar este procedimiento.

Campos compatibles con las restricciones personalizadas

Puedes establecer restricciones personalizadas en los siguientes campos:

Campo Ejemplo de caso de uso
SqlDatabaseVersion Aplica de manera forzosa el uso de versiones específicas de bases de datos
region Restringe la creación de instancias a regiones específicas
availabilityType Aplica de manera forzosa la alta disponibilidad
ipConfiguration > pscConfig > allowedConsumerProjects Restringe la lista de entidades permitidas de proyectos de consumidores en PSC a proyectos específicos
ipConfiguration > sslMode Aplica de manera forzosa el modo SSL para que sea ENCRYPTED_ONLY o TRUSTED_CLIENT_CERTIFICATE_REQUIRED. No puedes elegir el modo SSL mientras creas una instancia de Cloud SQL en la consola de Google Cloud. Por lo tanto, si creas esta política de la organización personalizada, debes crear una instancia de Cloud SQL con gcloud CLI, la API o Terraform.
dataDiskType Aplicar el uso de SSD o HDD
backupConfiguration > location Restringe las ubicaciones de las copias de seguridad automáticas a ubicaciones específicas
backupConfiguration > pointInTimeRecoveryEnabled Aplica de manera forzosa todas las instancias para habilitar la PITR
backupConfiguration > transactionLogRetentionDays Obliga a todas las instancias a usar un período de retención específico para la retención del registro de transacciones
backupConfiguration > backupRetentionSettings > retentionUnit Aplica de manera forzosa los días de retención en todas las copias de seguridad
passwordValidationPolicy > minLength Aplica de manera forzosa la política de contraseñas a una longitud mínima
passwordValidationPolicy > complexity Aplica de manera forzosa la política de contraseñas para complejidad
passwordValidationPolicy > reuseInterval Aplica de manera forzosa la política de contraseñas para un intervalo de reutilización específico
passwordValidationPolicy > disallowUsernameSubstring Aplica de manera forzosa la política de contraseñas para no permitir el nombre de usuario como contraseña
Edición Obliga a todas las instancias a usar la edición Enterprise Plus
connectorEnforcement Requiere que todas las conexiones usen conectores de Cloud SQL
dataCacheConfig Requiere que todas las instancias usen la caché de datos

Crea y configura una restricción personalizada

Una restricción personalizada se define en un archivo YAML a través de los recursos, los métodos, las condiciones y las acciones que son compatibles con el servicio en el que aplicas la política de la organización. Las condiciones para tus restricciones personalizadas se definen con Common Expression Language (CEL). Si deseas obtener más información para compilar condiciones en restricciones personalizadas mediante CEL, consulta Common Expression Language.

Console

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. Selecciona el selector de proyectos en la parte superior de la página.

  3. En el selector de proyectos, selecciona el recurso para el que deseas configurar la política de la organización.

  4. Haz clic en Restricción personalizada.

  5. En el cuadro Nombre visible, ingresa un nombre para la restricción. La longitud máxima de este campo es 200 caracteres.

  6. En el cuadro ID de restricción, ingresa el nombre que deseas para la nueva restricción personalizada. Una restricción personalizada debe comenzar con custom. y solo puede incluir letras mayúsculas, minúsculas o números, por ejemplo, custom.requireCloudSqlPasswordMinLength. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo (por ejemplo, organizations/123456789/customConstraints/custom.).

  7. En el cuadro Description, ingresa una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. La longitud máxima de este campo es 2000 caracteres.

  8. En el cuadro Tipo de recurso, selecciona el nombre del recurso de Google Cloud REST que contiene el objeto y el campo que deseas restringir, por ejemplo, sqladmin.googleapis.com/Instance Hay un máximo de 20 restricciones personalizadas por tipo de recurso. Si intentas crear una restricción personalizada para un tipo de recurso que ya tiene 20 restricciones personalizadas, la operación fallará.

  9. En Método de aplicación, selecciona si deseas aplicar la restricción en un método de REST CREATE o en los métodos CREATE y UPDATE.

    Edita la condición y haz lo siguiente:

    1. En el panel Agregar condición, crea una condición de CEL que haga referencia a un recurso de servicio compatible, por ejemplo, resource.settings.passwordValidationPolicy.minLength > 10. La longitud máxima de este campo es 1000 caracteres. Para obtener detalles sobre el uso de CEL, consulta Common Expression Language. Para obtener más información sobre los recursos de servicio que puedes usar en tus restricciones personalizadas, consulta Servicios compatibles con restricciones personalizadas.

    2. Haz clic en Guardar.

  10. En Acción, selecciona si deseas permitir o rechazar el método evaluado si se cumple la condición anterior.

    • Rechazar bloquea las operaciones para crear o actualizar el recurso si la condición se evalúa como verdadera.

    • Permitir permite que las operaciones creen o actualicen el recurso si la condición se evalúa como verdadera. Se bloquean todos los demás casos, excepto los que se indican explícitamente en la condición.

  11. Haz clic en Crear restricción.

Cuando ingreses un valor en cada campo, aparecerá a la derecha la configuración de YAML equivalente para esta restricción personalizada.

gcloud

Para crear un archivo YAML para una restricción personalizada, usa el siguiente formato:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- container.googleapis.com/RESOURCE_NAME
methodTypes:
- CREATE
- UPDATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Reemplaza lo siguiente:

  • ORGANIZATION_ID: el ID de la organización, como 123456789.

  • CONSTRAINT_NAME: el nombre que deseas para tu nueva restricción personalizada. Una restricción personalizada debe comenzar con custom. y solo puede incluir letras mayúsculas, minúsculas o números, por ejemplo, custom.enableGkeAutopilot. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo (por ejemplo, organizations/123456789/customConstraints/custom).

  • RESOURCE_NAME: el nombre (no el URI) del recurso REST de la API de GKE que contiene el objeto y el campo que deseas restringir. Por ejemplo, Cluster

  • CONDITION: una condición de CEL que se escribe en una representación de un recurso de servicio compatible. La longitud máxima de este campo es 1000 caracteres.

  • ACTION: la acción que se realiza si se cumple condition. Puede ser ALLOW o DENY.

    • Rechazar bloquea las operaciones para crear o actualizar el recurso si la condición se evalúa como verdadera.

    • Permitir permite que las operaciones creen o actualicen el recurso si la condición se evalúa como verdadera. Se bloquean todos los demás casos, excepto los que se indican explícitamente en la condición.

  • DISPLAY_NAME: un nombre para la restricción. La longitud máxima de este campo es 200 caracteres.

  • DESCRIPTION: Una descripción de la restricción que se mostrará como un mensaje de error cuando se infrinja la política. La longitud máxima de este campo es 2000 caracteres.

Después de crear una nueva restricción personalizada mediante gcloud CLI, debes configurarla para que esté disponible para las políticas de la organización de tu organización. Para configurar una restricción personalizada, usa el comando gcloud org-policies set-custom-constraint:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
Reemplaza CONSTRAINT_PATH por la ruta de acceso completa al archivo de restricción personalizado. Por ejemplo, /home/user/customconstraint.yaml. Una vez completadas, encontrarás tus restricciones personalizadas como políticas de organización disponibles en tu lista de políticas de la organización de Google Cloud. Para verificar que la restricción personalizada exista, usa el comando gcloud org-policies list-custom-constraints:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Reemplaza ORGANIZATION_ID por el ID del recurso de tu organización. Para obtener más información, consulta Visualiza las políticas de la organización.

Aplica de manera forzosa una política de la organización personalizada

Una vez que se configura una restricción personalizada, funciona de la misma manera que las restricciones booleanas predefinidas. Google Cloud verifica primero las restricciones personalizadas cuando evalúa si se permite una solicitud del usuario. Si alguna de las políticas personalizadas de la organización rechaza la solicitud, esta se rechaza. Luego, Google Cloud comprueba si hay políticas de la organización predefinidas aplicadas a ese recurso.

Puedes aplicar una restricción booleana si creas una política de la organización que haga referencia a ella y si aplicas esa política a un recurso de Google Cloud.

Console

Para aplicar una restricción booleana, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. Selecciona el selector de proyectos en la parte superior de la página.
  3. En el selector de proyectos, selecciona el proyecto para el que deseas configurar la política de la organización.
  4. Selecciona tu restricción de la lista en la página de las políticas de la organización. Debería aparecer la página Detalles de la política para esa restricción.
  5. Si deseas configurar las políticas de la organización para este recurso, haz clic en Administrar política.
  6. En la página Editar política, selecciona Anular la política del elemento superior.
  7. Haz clic en Agregar una regla.
  8. En Aplicación, selecciona si la aplicación de esta política de la organización debe estar activada o desactivada.
  9. De manera opcional, haz clic en Agregar condición para que la política de la organización sea condicional en una etiqueta. Ten en cuenta que si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se puede guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.
  10. Si se trata de una restricción personalizada, puedes hacer clic en Probar cambios para simular el efecto de esta política de la organización. Para obtener más información, consulta Prueba los cambios en las políticas de la organización con Policy Simulator.
  11. Para finalizar y aplicar la política de la organización, haz clic en Establecer política. La política tardará hasta 15 minutos en aplicarse.

gcloud

Para crear una política de la organización que aplique una restricción booleana, crea un archivo de política en formato YAML que haga referencia a la restricción:

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
    

Reemplaza lo siguiente:

  • PROJECT_ID: el proyecto en el que deseas aplicar tu restricción.
  • CONSTRAINT_NAME: el nombre que definiste para tu restricción personalizada. Por ejemplo: custom.enableGkeAutopilot

Para aplicar la política de la organización que contiene la restricción, ejecuta el siguiente comando:

    gcloud org-policies set-policy POLICY_PATH
    

Reemplaza POLICY_PATH por la ruta de acceso completa al archivo YAML de la política de la organización. La política tardará hasta 15 minutos en aplicarse.

Actualiza una restricción personalizada

Puedes actualizar una restricción personalizada si editas la restricción en la consola de Google Cloud o creas un archivo YAML nuevo y vuelves a usar el comando de gcloud CLI set-custom-constraint. No hay control de versiones de las restricciones personalizadas, por lo que se reemplaza la restricción personalizada existente. Si la restricción personalizada ya se aplicó, la restricción personalizada actualizada se aplicará de inmediato.

Console

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. Selecciona el selector de proyectos en la parte superior de la página.

  3. En el selector de proyectos, selecciona el recurso para el que deseas actualizar la política de la organización.

  4. Selecciona la restricción que deseas editar de la lista en la página Políticas de la organización. Debería aparecer la página Detalles de la política para esa restricción.

  5. Haz clic en Editar restricción.

  6. Realiza cambios en el nombre visible, la descripción, el método de aplicación, la condición y la acción. Una vez que se crea la restricción, no puedes cambiar el ID ni el tipo de recurso.

  7. Haz clic en Guardar cambios.

gcloud

Para editar una restricción personalizada existente con gcloud CLI, crea un archivo YAML nuevo que contenga los cambios que deseas realizar:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- METHOD1
- METHOD2
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Reemplaza lo siguiente:

  • ORGANIZATION_ID: el ID de la organización, como 123456789.

  • CONSTRAINT_NAME: el nombre que deseas para tu nueva restricción personalizada. Una restricción personalizada debe comenzar con custom. y solo puede incluir letras mayúsculas, minúsculas o números, por ejemplo, custom.disableGkeAutoUpgrade. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo (por ejemplo, organizations/123456789/customConstraints/custom.).

  • RESOURCE_NAME: el nombre completamente calificado del recurso de REST de Google Cloud que contiene el objeto y el campo que deseas restringir. Por ejemplo, container.googleapis.com/NodePool Para obtener más información sobre los recursos de servicio que puedes usar en tus restricciones personalizadas, consulta Servicios compatibles con restricciones personalizadas.

  • METHOD1,METHOD2: una lista de métodos de RESTful para aplicar la restricción. Puede ser CREATE o CREATE y UPDATE. No todos los servicios de Google Cloud admiten ambos métodos. Para ver los métodos compatibles para cada servicio, busca el servicio en Servicios compatibles.

  • CONDITION: una condición de CEL que hace referencia a un recurso de servicio compatible, por ejemplo, "resource.management.autoUpgrade == false". La longitud máxima de este campo es 1000 caracteres. Para obtener detalles sobre el uso de CEL, consulta Common Expression Language.

  • ACTION: la acción que se realiza si se cumple condition. Puede ser ALLOW o DENY.

  • DISPLAY_NAME: un nombre para la restricción. La longitud máxima de este campo es 200 caracteres.

  • DESCRIPTION: una descripción fácil de usar de la restricción que se mostrará como un mensaje de error cuando se infringe la política. La longitud máxima de este campo es 2000 caracteres.

Después de crear una nueva restricción personalizada mediante gcloud CLI, debes configurarla para que esté disponible para las políticas de la organización de tu organización. Para configurar una restricción personalizada, usa el comando gcloud org-policies set-custom-constraint:

gcloud org-policies set-custom-constraint CONSTRAINT_PATH
Reemplaza CONSTRAINT_PATH por la ruta de acceso completa al archivo de restricción personalizado. Por ejemplo, /home/user/customconstraint.yaml. Una vez completadas, encontrarás tus restricciones personalizadas como políticas de organización disponibles en tu lista de políticas de la organización de Google Cloud. Para verificar que la restricción personalizada exista, usa el comando gcloud org-policies list-custom-constraints:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Reemplaza ORGANIZATION_ID por el ID del recurso de tu organización. Para obtener más información, consulta Visualiza las políticas de la organización.

Cómo borrar una restricción personalizada

Puedes borrar una restricción personalizada con la consola de Google Cloud o gcloud CLI.

Console

  1. En la consola de Google Cloud, ve a la página Políticas de la organización.

    Ir a Políticas de la organización

  2. Selecciona el selector de proyectos en la parte superior de la página.

  3. En el selector de proyectos, selecciona el recurso para el que deseas configurar la política de la organización.

  4. Selecciona la restricción que deseas borrar de la lista en la página Políticas de la organización. Debería aparecer la página Detalles de la política para esa restricción.

  5. Haz clic en Borrar.

  6. Para confirmar que deseas borrar la restricción, haz clic en Borrar.

gcloud

Para borrar una restricción personalizada, usa el org-policies delete-custom-constraint. Comando de la CLI de gcloud:

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_NAME \
  --organization=ORGANIZATION_ID

Reemplaza lo siguiente:

  • ORGANIZATION_ID: el ID de la organización, como 123456789.

  • CONSTRAINT_NAME: el nombre de tu restricción personalizada. Por ejemplo, custom.disableGkeAutoUpgrade

El resultado es similar a este:

Deleted custom constraint [organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade]

Si borras una restricción personalizada, cualquier política que se haya creado con que sigue existiendo, pero se ignoran. No puedes crear otra a una restricción personalizada con el mismo nombre que una que se borró.

Ejemplo: Usa una restricción personalizada para aplicar el uso de SSD en lugar de HDD

  1. Crea el archivo dataDiskType.yaml de la siguiente manera:

    name: organizations/651333429324/customConstraints/custom.dataDiskType
    resourceTypes:
    - sqladmin.googleapis.com/Instance
    methodTypes:
    - CREATE
    - UPDATE
    condition: resource.settings.dataDiskType == "PD_SSD"
    actionType: ALLOW
    displayName: dataDiskType must be PD_SDD
    description: dataDiskType must be PD_SSD
    

    Esto garantiza que todos los métodos CREATE y UPDATE de una instancia cumplan con la restricción de que dataDiskType sea SSD. Como resultado, se rechazan todas las instancias que involucran HDD.

  2. Configura la restricción personalizada a nivel de la organización:

    gcloud org-policies set-custom-constraint dataDiskType.yaml
    
  3. Crea "enforceDataDiskType.yaml" de la siguiente manera:

    name: projects/custom-constraints-cloudsql3/policies/custom.dataDiskType
    spec:
    rules:
    - enforce: true
    
  4. Aplica la restricción personalizada a nivel del proyecto:

    gcloud org-policies set-policy enforceDataDiskType.yaml
    

¿Qué sigue?