Desarrolla aplicaciones en un entorno de Google Cloud limitado

Nuestros documentos suelen redactarse para que un producto o función esté en funcionamiento pero es posible que algunos documentos no funcionen correctamente si tu organización aplica medidas de restricciones. Por ejemplo, tu empresa podría implementar algunas de las las limitaciones de seguridad Cloud Foundation Toolkit, el Planos de seguridad de Google Cloud, o crear las suyas propias.

En este artículo, se proporciona ayuda para solucionar problemas de implementación de aplicaciones que puedes ver en una organización que usa restricciones de seguridad.

Soluciona problemas de restricciones de seguridad

Tus operaciones de TI o tu equipo de seguridad pueden habilitar las restricciones de seguridad a través de política de la organización. Estas restricciones restringen la forma cómo se pueden usar los recursos.

Cuando realizas una solicitud a la API que devuelve un error, la respuesta de la API debe te indicará si se debe a incumplimientos de política. En la respuesta, se debe explicar restricción que se infringe. 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é tipo de seguridad restricción que infringe tu Deployment?

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

    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 a tu equipo de seguridad para comprender dónde se aplica la política en la en la jerarquía de la organización y las soluciones sugeridas.

    Verifica si se comparten plantillas de implementación, como las de Terraform, en tu organización. Estas plantillas deben detallar cómo se se configuró la infraestructura de Google Cloud la implementación de la aplicación.

Problemas comunes de limitaciones de seguridad

Cuando implementas tus aplicaciones en Google Cloud, 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 usar una dirección IP pública externa. Se aplica una restricción de seguridad desde un política aplicada a tu entorno.

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

Compute Engine

Nombre de la restricción Por qué se implementa Solución sugerida
constraints/compute.disableNestedVirtualization Evita que se instale un hipervisor compatible con KVM dentro de la VM. Esta este comportamiento podría introducir riesgos de seguridad sin la aplicación de parches y y administración de posturas. Configura tu VM para inhabilitar la virtualización anidada con aceleración de 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 inicio seguro. vTPM y las opciones de supervisión de integridad están habilitadas. Estas opciones evitan que que la VM se manipule y a los datos a los que se accede o que se modifican. No habilites las VMs protegidas cuando crees una VM.

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

En la actualidad, Dataflow no admite trabajadores de VM protegidas.
constraints/compute.disableSerialPortAccess Quita los vectores de seguridad para interactuar con una VM o ver el resultado del diagnóstico que se podrían usar para formar un ataque. No habilites el acceso al puerto en serie cuando crees una VM.
constraints/compute.disableGuestAttributesAccess Minimizar la cantidad de información sobre el host y la plataforma subyacentes de las aplicaciones maliciosas. No uses la API de Compute Engine para leer los atributos de invitado de tus VM de Compute Engine.
constraints/compute.vmExternalIpAccess Impedir que las aplicaciones se ejecuten con una dirección IP externa y accesibles desde Internet. Inhabilitar acceso de IP externa para tus VMs. Solo puedes usar una red dirección IP privada.

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

En este momento, Dataprep y Dataflow no admiten IP privadas direcciones IP del proveedor.

Red virtual y direcciones IP

Nombre de la restricción Por qué se implementa Solución 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 en en proyectos nuevos.
constraints/compute.restrictXpnProjectLienRemoval Evita que una VPC compartida se borre accidentalmente cuando los recursos de otros proyectos dependen de los servicios de red que proporcionan. No intentes borrar una VPC compartida. Asegúrese de segmentar los anuncios para el recurso para su eliminación.
constraints/sql.restrictPublicIp Impedir que las instancias de Cloud SQL se ejecuten con una IP externa y accesible 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 usar una dirección IP privada interna.

Identidad y autenticación

Nombre de la restricción Por qué se implementa Solución sugerida
constraints/iam.disableServiceAccountKeyCreation Las claves de cuentas de servicio pueden suponer un riesgo de seguridad si se exponen, por lo que debes evitarlas de la exportación. Autentícate mediante un alternativa más segura a las claves de cuentas 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 de los recursos de Google Cloud solo a los dominios aprobados Usa una cuenta dentro de uno de los dominios aprobados. Adicional problemas conocidos para esta restricción.

Ejemplos de errores de 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. El Los siguientes ejemplos más detallados muestran la respuesta de la API que indica qué restricción hace que la solicitud falle. Revisa tus propias respuestas de la API para comprender por qué fallan las implementaciones de aplicaciones.

Falla 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 que se aplican a tu proyecto.

Es posible que tu proyecto herede políticas a nivel de la organización o la carpeta. Según tus roles de acceso, es posible que no tengas visibilidad se aplican en los niveles superiores de su jerarquía para determinar 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 que deseas ver. 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 del 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 en el que deseas ver la aplicación forzosa. política

¿Qué sigue?

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

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