Restricción del tráfico entrante a aplicaciones y funciones mediante restricciones basadas en el contexto
Puede utilizar IBM Cloud® context-based restrictions (CBR) para controlar el tráfico de red entrante a sus aplicaciones y funciones de IBM Cloud® Code Engine. Con CBR, puede restringir el acceso a través de puntos finales privados, públicos o ambos, proporcionando una seguridad flexible a nivel de red para sus cargas de trabajo. En lugar de asignar el acceso en función de la identidad, las restricciones basadas en el contexto verifican que una solicitud de acceso procede de un contexto permitido que usted configura. Puede limitar el tráfico entrante a sus aplicaciones y funciones dentro de sus proyectos de Code Engine para proteger sus proyectos del tráfico entrante no deseado. Estas restricciones basadas en el contexto se aplican a nivel de cuenta, proyecto, grupo de recursos o ubicación (región) y se aplican a todas las aplicaciones y funciones dentro del ámbito de la restricción.
Las restricciones basadas en el contexto para las aplicaciones y funciones de Code Engine admiten los siguientes casos de uso:
-
Bloquee completamente las entradas públicas: Restrinja sus aplicaciones y funciones para que sólo sean accesibles a través de su punto final privado mediante CBR. Este enfoque elimina la necesidad de configurar los ajustes de visibilidad del punto final de la aplicación, ya que el acceso público se bloquea a nivel de red. Sus cargas de trabajo siguen siendo accesibles desde redes privadas (como VPC) y desde otros componentes de Code Engine dentro del mismo proyecto.
-
Bloquee el acceso público y restrinja el privado por IP: consiga el máximo control sobre el tráfico entrante bloqueando todo el acceso público a Internet y restringiendo el acceso de los terminales privados a direcciones IP o zonas de red específicas. Esto combina la capacidad de restricciones basadas en IP para terminales privados con la capacidad de bloquear terminales públicos por completo a nivel de red.
-
Aísle completamente las cargas de trabajo: Bloquee los puntos finales privados y públicos para aislar completamente sus aplicaciones y funciones a nivel de red. Este caso de uso es ideal para escenarios como cargas de trabajo de procesamiento por lotes que sólo necesitan realizar conexiones salientes, microservicios internos que se comunican exclusivamente a través de colas de mensajes o suscripciones a eventos, o cargas de trabajo en mantenimiento en las que se desea impedir temporalmente todo el tráfico entrante mientras se mantiene desplegada la aplicación.
Las restricciones basadas en el contexto sólo se aplican a las aplicaciones y funciones porque estas cargas de trabajo exponen los puntos finales de la red. Las restricciones basadas en el contexto no se aplican a los trabajos ni a las flotas, ya que no exponen ningún punto final de la red.
Cuando protege los recursos de Code Engine con restricciones basadas en el contexto, además de restringir el tráfico entrante que se conecta a sus aplicaciones o funciones con reglas basadas en el contexto, puede restringir los contextos(rutas de red)desde los que sus recursos Code Engine gestionarse, como el despliegue o la actualización de aplicaciones y secretos.
Las restricciones basadas en el contexto de Code Engine pueden aplicarse a un único proyecto, a todo un grupo de recursos o a una ubicación (región). Para obtener más información sobre las restricciones basadas en el contexto de « IBM Cloud », consulta « Seguridad por capas con restricciones basadas en el contexto ».
Cuando una regla de restricción basada en el contexto abarca un grupo de recursos o una ubicación (región), las restricciones se aplican a los proyectos existentes. Si crea un nuevo proyecto en la misma ubicación o grupo de recursos, las restricciones se aplican automáticamente al nuevo proyecto. El nuevo proyecto puede tardar unos minutos en asociarse a las restricciones. Para observar que se aplican las reglas CBR, compruebe la sección de conectividad del estado del proyecto en la interfaz de usuario, la CLI o la API.
Creación de una restricción basada en el contexto para sus recursos Code Engine
Puede crear restricciones basadas en el contexto para sus recursos Code Engine utilizando la consola IBM Cloud, CLI, API, SDKs o Terraform. Para obtener más información sobre la creación de restricciones basadas en el contexto, consulte Crear restricciones basadas en el contexto. Las siguientes secciones proporcionan orientación específica para crear restricciones para las aplicaciones y funciones de Code Engine.
IPv6 las restricciones no son compatibles con Code Engine.
Añadir una restricción contextual mediante la consola
Para crear una restricción basada en el contexto, consulte Creación de restricciones basadas en el contexto. Los siguientes pasos son específicos para crear uno para los recursos Code Engine.
-
Vaya a la página Reglas de restricciones basadas en el contexto.
-
Haga clic en Crear para crear una nueva regla para la restricción basada en el contexto, empezando por el servicio.
-
Seleccione Code Engine para Servicios y haga clic en Siguiente para seleccionar las API de servicio que desea proteger.
-
Restrinja el acceso para proteger sus cargas de trabajo de aplicaciones o funciones de Code Engine seleccionando la opción Plano de datos para las API de servicio.
Las restricciones de carga de trabajo se definen a nivel del plano de datos, por lo que se debe seleccionar al menos el servicio del plano de datos. También puede seleccionar otras API de servicios o plataformas.
Haga clic en Siguiente para delimitar la restricción de sus recursos.
-
Aplique la restricción a un único proyecto, a todo el grupo de recursos o a una ubicación (región) en la que tenga varios proyectos. Aplique este ámbito en la sección Recursos y haga clic en Revisar para continuar.
-
Haga clic en Continuar para añadir contexto a su regla.
-
Configure contextos para definir qué puntos finales están restringidos. Elija uno de los siguientes escenarios en función de sus requisitos de seguridad:
-
Caso práctico A: Bloqueo total de las entradas públicas
Utilice este caso de uso para hacer que sus aplicaciones y funciones sean accesibles únicamente a través de su punto final privado, eliminando el acceso público a Internet a nivel de red.
- Activa los puntos finales.
- Seleccione Privado (permitir tráfico).
- Dejar Público deseleccionado (bloquear el tráfico).
- Deje vacías las zonas de red. Asegúrese de que no hay zonas de red habilitadas en esta sección para que todos los terminales privados sigan siendo accesibles.
- Haz clic en «Añadir» para crear un nuevo contexto.
-
Caso práctico B: Bloquear lo público y restringir lo privado por IP
Utilice este caso de uso para conseguir el máximo control bloqueando todo el acceso público a Internet y restringiendo el acceso de los terminales privados a direcciones IP o zonas de red específicas.
- Activa los puntos finales.
- Seleccione Privado (permitir tráfico).
- Dejar Público deseleccionado (bloquear el tráfico).
- Seleccione las zonas de red que desea permitir para el acceso privado (por ejemplo, VPC específicas o rangos de IP).
- Haz clic en «Añadir» para crear un nuevo contexto.
-
Caso práctico C: Aislar completamente las cargas de trabajo
Utilice este caso de uso para aislar completamente sus aplicaciones y funciones a nivel de red bloqueando tanto los puntos finales privados como los públicos. Esto es útil para cargas de trabajo de procesamiento por lotes que sólo realizan conexiones salientes, microservicios internos que se comunican exclusivamente a través de colas de mensajes o eventos, o cargas de trabajo en mantenimiento.
- Activa los puntos finales.
- Deje Privado sin seleccionar (bloquea el tráfico).
- Dejar Público deseleccionado (bloquear el tráfico).
- Deje vacías las zonas de red. Un contexto público vacío sin zonas de red bloquea todo acceso público.
- Haz clic en «Añadir» para crear un nuevo contexto.
-
-
Haga clic en Continuar para proporcionar los detalles de la regla.
-
Introduce una descripción para tu regla.
-
Seleccione Activado para Aplicación.
-
Revisa el resumen y haz clic en « Crear ».
Añadir una restricción basada en el contexto utilizando la CLI
Puede utilizar la CLI de IBM Cloud para crear restricciones basadas en el contexto para sus recursos de Code Engine. Antes de empezar, asegúrese de que tiene instalada la CLI IBM Cloud y el complemento de restricciones basadas en el contexto ejecutando ibmcloud plugin install cbr.
-
Caso práctico A: Bloqueo total de las entradas públicas
Utilice este caso de uso para hacer que sus aplicaciones y funciones sean accesibles únicamente a través de su punto final privado, eliminando el acceso público a Internet a nivel de red.
Crea una regla que permita el acceso privado y bloquee el acceso público:
ibmcloud cbr rule-create --description "Block public inbound entirely" \ --service-name codeengine \ --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane \ --context-attributes endpointType=private -
Caso práctico B: Bloquear lo público y restringir lo privado por IP
Utilice este caso de uso para conseguir el máximo control bloqueando todo el acceso público a Internet y restringiendo el acceso de los terminales privados a direcciones IP o zonas de red específicas. Para encontrar los ID de zona disponibles, ejecute ibmcloud cbr zones.
Crea una regla que restrinja el acceso privado a zonas específicas y bloquee el acceso público:
ibmcloud cbr rule-create --description "Block public and restrict private by IP" \ --service-name codeengine \ --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane \ --context-attributes endpointType=private \ --zone-id <zone-id> -
Caso práctico C: Aislar completamente las cargas de trabajo
Utilice este caso de uso para aislar completamente sus aplicaciones y funciones a nivel de red bloqueando tanto los puntos finales privados como los públicos. Esto es útil para cargas de trabajo de procesamiento por lotes que sólo realizan conexiones salientes, microservicios internos que se comunican exclusivamente a través de colas de mensajes o eventos, o cargas de trabajo en mantenimiento.
Para bloquear todo el tráfico entrante, cree una regla sin contextos (una regla vacía bloquea todos los accesos):
ibmcloud cbr rule-create --description "Isolate workloads entirely" \ --service-name codeengine \ --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane
Las reglas de restricción basadas en el contexto abarcan toda la cuenta, proyecto, grupo de recursos o ubicación (región). Utilice --resource-attributes para especificar el nivel al que se aplica la norma, por ejemplo --resource-attributes "projectId=<your-project-id>" para aplicarla a nivel de proyecto.
Prueba de la regla de restricción basada en el contexto para la conectividad entrante
Después de crear la regla de restricción basada en el contexto, puede probarla utilizando su aplicación o función:
-
Si ha bloqueado los endpoints públicos: Los intentos de acceder a tu aplicación o función a través de su página pública URL dan como resultado un mensaje de error
RBAC Access Denied. Su carga de trabajo sigue siendo accesible a través de puntos finales privados (desde VPC u otros componentes de Code Engine en el mismo proyecto). -
Si ha restringido los terminales privados por IP: El acceso a través de puntos finales privados sólo se concede a zonas de red o direcciones IP permitidas. Si una solicitud proviene de una fuente que no está en la lista de permitidos, verá un mensaje de error
RBAC Access Denied. Por ejemplo, si sólo permite9.9.9.9/32, entonces su aplicación o función es accesible sólo desde ese rango de IP a través del endpoint privado. Todo lo que esté fuera de ese rango aparece el mensaje de error.
Si seleccionó una zona de red que apunta a una VPC (nube privada virtual), también debe crear una puerta de enlace VPE (punto final privado virtual) para permitir que la VPC acceda a cargas de trabajo privadas. Después de crear la pasarela,
es posible que experimente un retraso temporal debido a la resolución de PDNS. Al principio verás mensajes de error en RBAC Access Denied, pero al cabo de un rato se te concederá el acceso.