Soluciona problemas relacionados con las políticas de la organización

Nuestros documentos suelen estar escritos para ayudarte a tener en marcha un producto o una función, pero es posible que algunos documentos no funcionen correctamente si tu organización aplica restricciones de seguridad. Por ejemplo, tu empresa puede implementar algunas de las restricciones de seguridad del Cloud Foundation Toolkit, los planos de seguridad deCloud de Confiance o crear los suyos propios.

En este artículo, se explica cómo solucionar los errores de implementación de aplicaciones que pueden aparecer en una organización que usa restricciones de seguridad.

Soluciona problemas relacionados con las restricciones de seguridad

Tu equipo de operaciones de TI o de seguridad puede habilitar restricciones de seguridad a través de la política de la organización. Estas restricciones limitan el uso de los recursos de tu organización.

Cuando realices una solicitud a la API que muestre un error, la respuesta de la API debería indicarte si se debe a incumplimientos de políticas. La respuesta debe explicar la restricción que se incumple. Los siguientes pasos para solucionar problemas te ayudarán a determinar y comprender si se produce un incumplimiento:

  1. Revisa el mensaje de error de la respuesta de la API. ¿Puedes identificar qué restricción de seguridad incumple tu implementación?

    En el siguiente ejemplo, se indica que el problema es la restricción sql.restrictPublicIp:

    Organization Policy check failure
    The external IP of this instance violates the constraints/sql.restrictPublicIp enforced
    
  2. Si comprendes el incumplimiento de política, actualiza la configuración de implementación de recursos para que funcione dentro de las restricciones.

    En el ejemplo anterior de restricción de direcciones IP públicas externas, configura tu instancia de Cloud SQL para que use una dirección IP privada interna.

  3. Si no sabes por qué se aplica la restricción o qué hacer, trabaja con tu equipo de seguridad para comprender dónde se aplica la política en la jerarquía de tu organización y las soluciones alternativas que sugieren.

    Comprueba si se comparten plantillas de implementación, como las de Terraform, en tu organización. En estas plantillas, se debe detallar cómo se configuró la infraestructura deCloud de Confiance y limitar la implementación de tu aplicación.

Problemas comunes con las restricciones de seguridad

Cuando implementas tus aplicaciones en Cloud de Confiance, puedes encontrar un error como el siguiente ejemplo:

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

En este ejemplo, no puedes configurar una instancia de Cloud SQL para que use una dirección IP pública externa. Se aplica una restricción de seguridad desde una política aplicada a tu entorno.

Las siguientes restricciones de seguridad comunes se pueden habilitar y detallar en una respuesta de error de la API a medida que desarrollas tus aplicaciones.

Compute Engine

Nombre de la restricción Por qué se implementó Solución alternativa sugerida
constraints/compute.disableNestedVirtualization Evita que se instale un hipervisor compatible con KVM dentro de la VM. Este comportamiento podría generar riesgos de seguridad si no se aplican los parches y la administración adecuados. Configura tu VM para inhabilitar la virtualización anidada acelerada por hardware.

De forma predeterminada, está activada para todas las VMs de Compute Engine que se ejecutan en Intel Haswell o en plataformas de CPU más recientes.
constraints/compute.requireShieldedVm Requiere que las instancias de VM nuevas usen imágenes de disco protegidas con las opciones de inicio seguro, vTPM y supervisión de integridad habilitadas. Estas opciones evitan que se manipule la VM y que se acceda a los datos o se modifiquen. No habilites las VMs protegidas cuando crees una VM.

Para crear un clúster de GKE, debes habilitar nodos de GKE protegidos.

Actualmente, Dataflow no admite trabajadores de VM protegidas.
constraints/compute.disableSerialPortAccess Quita los vectores de seguridad para interactuar con una VM o ver el resultado de diagnóstico que se podría usar para formar un ataque. No habilites el acceso al puerto en serie cuando crees una VM.
constraints/compute.disableGuestAttributesAccess Minimiza la cantidad de información sobre la plataforma y el host subyacentes que una app maliciosa podría usar de forma abusiva. No uses la API de Compute Engine para leer los atributos de invitado de tus VM de Compute Engine.
constraints/compute.vmExternalIpAccess Evita que las aplicaciones se ejecuten con una dirección IP externa y sean accesibles desde Internet. Inhabilita el acceso a IP externas para tus VMs. Solo puedes usar una dirección IP privada interna.

GKE puede usar clústeres privados sin direcciones IP públicas.

Actualmente, Dataprep y Dataflow no admiten direcciones IP privadas.

Red virtual y direcciones IP

Nombre de la restricción Por qué se implementó Solución alternativa sugerida
constraints/compute.skipDefaultNetworkCreation Asegúrate de que solo se puedan crear nubes privadas virtuales (VPC) administradas por la empresa y de que se apliquen reglas de filtrado o tráfico de red. Conecta tus aplicaciones a las VPC existentes en tu organización. Las VPC predeterminadas creadas automáticamente no se implementan para proyectos nuevos.
constraints/compute.restrictXpnProjectLienRemoval Evita que se borre accidentalmente una VPC compartida cuando los recursos de otros proyectos dependen de los servicios de red que proporciona. No intentes borrar una VPC compartida. Asegúrate de que el recurso que quieres borrar sea el correcto.
constraints/sql.restrictPublicIp Evita que las instancias de Cloud SQL se ejecuten con una dirección IP externa y sean accesibles desde Internet. No configures tu instancia de Cloud SQL para que use una dirección IP pública externa.

En su lugar, configura tu instancia de Cloud SQL para que use una dirección IP privada interna.

Identidad y autenticación

Nombre de la restricción Por qué se implementó Solución alternativa sugerida
constraints/iam.disableServiceAccountKeyCreation Las claves de cuentas de servicio pueden representar un riesgo de seguridad si se exponen, por lo que se debe evitar su exportación. Autentícate con una alternativa más segura a las claves de cuenta de servicio.
constraints/storage.uniformBucketLevelAccess Permitir que se use la administración de identidades y accesos (IAM) solo para aplicar el riesgo de permisos incorrectos o incoherentes a los buckets de almacenamiento. Habilita el acceso uniforme a nivel de bucket para proteger tu bucket de Cloud Storage.
constraints/iam.allowedPolicyMemberDomains Restringe el acceso a los recursos Cloud de Confiance solo a los dominios aprobados. Usar una cuenta dentro de uno de los dominios aprobados Existen problemas conocidos adicionales para esta restricción.

Ejemplos de errores en la respuesta de la API

En el ejemplo anterior de restricción de direcciones IP públicas externas con Cloud SQL, un incumplimiento de política hace que la API devuelva un error. En los siguientes ejemplos más detallados, se muestra la respuesta de la API que te indica qué restricción provoca que falle la solicitud. Consulta tus propias respuestas de la API para comprender por qué fallan las implementaciones de aplicaciones.

Fallo de Cloud SQL con Google Cloud CLI:

$ gcloud alpha sql instances create mysql-node --project my-sql-project

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

Falla de Cloud SQL con Terraform:

$ terraform apply plan.out

[...]
module.mysql-db.google_sql_database_instance.default: Creating...

Error: Error, failed to create instance backend01-db-1c81e0e3: googleapi:
Error 400: Invalid request: Organization Policy check failure: the external IP
of this instance violates the constraints/sql.restrictPublicIp enforced at the
123456789 project., invalid

Enumera las políticas de la organización aplicadas a tu proyecto

Es posible que tu proyecto herede políticas a nivel de la carpeta o la organización. Según tus roles de acceso, es posible que no tengas visibilidad de las políticas que se aplican en los niveles superiores de tu jerarquía para ver dónde se aplica la restricción incumplida.

Para ver las políticas o excepciones aplicadas a tu proyecto, usa el comando gcloud org-policies list:

gcloud org-policies list --project=PROJECT_ID

Reemplaza PROJECT_ID por el proyecto para el que deseas ver las políticas aplicadas.

Para obtener más información sobre una política que se aplica, usa el comando gcloud org-policies describe. Proporciona el nombre de la política que deseas describir y el ID de tu proyecto con el parámetro --project:

gcloud org-policies describe POLICY_NAME \
  --project=PROJECT_ID

Reemplaza lo siguiente:

  • POLICY_NAME: Es el nombre de la política de la organización.

  • PROJECT_ID: Es el proyecto para el que deseas ver la política aplicada.

¿Qué sigue?

Si no puedes determinar dónde se aplica una política y cómo evitar una restricción de seguridad, comunícate con tu equipo de operaciones de TI o de seguridad. Cada organización aplica políticas y planos personalizados para su entorno.

Para obtener más información sobre todos los controles que se podrían aplicar en tu organización, consulta la lista de restricciones de las políticas de la organización.