Protección de los servicios de infraestructura de Virtual Private Cloud (VPC) con restricciones basadas en contexto

Las restricciones basadas en el contexto permiten a los propietarios y administradores de cuentas definir y aplicar restricciones de acceso a los recursos de IBM Cloud® en función del contexto de las solicitudes de acceso. El acceso a los servicios de infraestructura de VPC se puede controlar mediante restricciones basadas en el contexto y políticas de gestión de identidades y accesos (IAM).

Estas restricciones trabajan con políticas de IAM tradicionales, que se basan en la identidad, para proporcionar una capa de protección adicional. A diferencia de las políticas de IAM, las restricciones basadas en contexto no asignan el acceso. Las restricciones basadas en el contexto comprueban que una solicitud de acceso proceda de un contexto permitido que hayas configurado. Como el acceso de IAM y las restricciones basadas en el contexto imponen el acceso, las restricciones basadas en el contexto ofrecen protección aunque las credenciales estén comprometidas o mal gestionadas. Para obtener más información, consulte Qué son las restricciones basadas en el contexto.

Un usuario debe tener el rol de administrador en los servicios de infraestructura de VPC para crear, actualizar o eliminar reglas dirigidas a los servicios de infraestructura de VPC. Un usuario debe tener el rol de editor o administrador en el servicio de restricciones basadas en el contexto para crear, actualizar o eliminar zonas de red. Un usuario con el rol de visor en el servicio de restricciones basadas en el contexto solo puede añadir zonas de red a una regla.

El servicio de restricción basado en el contexto genera registros de auditoría cada vez que se aplica una política basada en el contexto. Para obtener más información, consulte Supervisión de restricciones basadas en contexto.

Para empezar a proteger sus servicios de infraestructura VPC con restricciones basadas en el contexto, consulte el tutorial Aprovechar las restricciones basadas en el contexto para proteger sus recursos.

Cómo se integra VPC Infrastructure Services con restricciones basadas en contexto

VPC Infrastructure Services es un servicio compuesto que se compone de varios servicios secundarios. Se pueden crear restricciones basadas en el contexto para IBM Cloud VPC o cualquiera de sus servicios secundarios; por ejemplo, subredes, instancias de servidores virtuales y volúmenes Block Storage.

Consulte la sección de creación de reglas para obtener más información sobre cómo crear reglas con los atributos necesarios para cada servicio.

Creación de zonas de red

Una zona de red representa una lista de elementos permitidos de direcciones IP donde se crea una solicitud de acceso. Define un conjunto de una o varias ubicaciones de red que se especifican mediante los siguientes atributos:

  • Direcciones IP, que incluyen direcciones individuales, rangos o subredes
  • VPC
  • Referencias de servicio, que permiten el acceso desde otros servicios de IBM Cloud®

Referencias de servicio

Una referencia de servicio, que se define como parte de una zona de red, permite que el servicio especificado se comunique con los recursos restringidos o las API a los que se aplica una política de restricción basada en el contexto. La siguiente tabla contiene las referencias de servicio que deben incluirse cuando se utilizan restricciones basadas en el contexto en el contexto de los servicios de infraestructura de VPC. También puede consultar las autorizaciones IAM de servicio a servicio en su cuenta cuando decida qué referencias de servicio añadir a su zona de red. Puede encontrar la autorización de servicio a servicio en su cuenta yendo a Administrar -> Acceso (IAM) y seleccionando la pestaña Autorizaciones.

Referencias de servicio necesarias para las restricciones basadas en el contexto
Servicio con restricciones basadas en contexto Servicio afectado Referencias de servicio que se requieren en la zona de red
Cloud Object Storage Servicios de infraestructura de VPC (is)
Key Protect Cloud Block Storage (server-protect),
File Storage for VPC (is.share)
Hyper Protect Crypto Service Cloud Block Storage (server-protect),
File Storage for VPC (is.share)
Instancias de servidor virtual Servicios de infraestructura de VPC (is)
Varios servicios de infraestructura de VPC-Volumen de Block Storage, grupos de seguridad, subredes IBM Kubernetes Service (containers-kubernetes)
Secrets Manager Servicios de infraestructura de VPC (is)

Creación de zonas de red mediante la API

Puede crear zonas de red utilizando el mandato create-zone. Para obtener más información, consulte el apartado Documentos de API.

El serviceRef atributo para los servicios de infraestructura VPC es is. Cloud Block Storage es server-protect, y File Storage for VPC es is.share.

{
  "name": "Example zone 1",
  "description": "",
  "addresses": [
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "is"
      }
    }
  ]
}
{
  "name": "Example zone 1",
  "description": "",
  "addresses": [
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "server-protect"
      }
    }
  ]
}

Creación de zonas de red mediante la CLI

  1. Para crear zonas de red desde la CLI, instale el complemento CBR CLI.

  2. Utilice el cbr-zone-create comando para añadir ubicaciones de red, VPC y referencias de servicio a las zonas de red. Para obtener más información, consulte la referencia de la CLI de CBR.

    Para encontrar una lista de los objetivos de referencia de servicio disponibles, ejecute el comando ibmcloud cbr service-ref-targets comando. El service_name para los servicios de infraestructura VPC es is. Cloud Block Storage es server-protect, y File Storage for VPC es is.share.

    El siguiente comando de ejemplo añade el is servicio, denominado Servicios de infraestructura de VPC en la consola de IBM Cloud®, a una zona de red.

    ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=is
    

    El siguiente comando de ejemplo agrega el server-protect servicio, denominado* Cloud Block Storage* en IBM Cloud® consola, a una zona de red.

    ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=server-protect
    

Creación de zonas de red desde la consola

  1. Determine qué recursos desea añadir a la lista de elementos permitidos.
  2. Consulte la sección de referencias de servicio para ver si necesita añadir alguna referencia de servicio a su zona de red.
  3. Siga estos pasos para crear restricciones basadas en contexto en la consola.

Creación de reglas

Dentro de los servicios de infraestructura de VPC, cada servicio secundario necesita ciertos atributos en una regla basada en el contexto.

Cuando utilice la API, Terraform o la CLI de IBM Cloud para crear, actualizar o eliminar restricciones basadas en el contexto de IBM Cloud, puede especificar el recurso de infraestructura VPC de destino utilizando atributos de recursos.

Consulte Atributos de recurso de VPC para ver los atributos de recurso que se corresponden con recursos de VPC individuales.

Puedes seleccionar un recurso introduciendo el ID del objeto. De forma alternativa, puede utilizar el comodín * para seleccionar todos los recursos aplicables. Por ejemplo, el atributo vpcId:* establece las restricciones basadas en contexto que se deben aplicar a todas las VPC de la cuenta. También puede especificar a qué grupo de recursos se aplica la política en el mandato.

Creación de reglas utilizando la API

Revise las siguientes solicitudes de ejemplo para crear reglas. Para obtener más información sobre v1/rules API, consulte la documentación de API.

Después de crear una regla, puede tardar hasta 10 minutos antes de que pueda actualizar dicha regla.

El siguiente ejemplo de carga útil crea una regla que protege las Instancias de Servidor Virtual y permite acceso sólo desde la zona de red especificada a través de un punto final privado.

{
  "contexts": [
    {
      "attributes": [
        {
          "name": "endpointType",
          "value": "private"
        },
        {
          "name": "networkZoneId",
          "value": "45ec64065b7c2bf84b3edec803335111"
        }
      ]
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "resourceGroupId",
          "value": "1171749e3a8545069d04e6fca1ded18f"
        },
        {
          "name": "serviceName",
          "value": "is"
        },
        {
          "name": "instanceId",
          "value": "*"
        }
      ]
    }
  ]
}

Creación de reglas mediante la CLI

  1. Para crear reglas desde la CLI, instale el plugin de CLI CBR.
  2. Utilice el mandato de ibmcloud cbr rule-create para crear reglas CBR. Para obtener más información, consulte la referencia de CLI de CBR.

Los siguientes ejemplos son reglas de aplicación. Puede convertirlos en sólo informes añadiendo --enforcement-mode report.

El siguiente mandato de CLI de ejemplo crea una regla de restricción basada en contexto para todas las instancias de servidor virtual en la cuenta actual:

ibmcloud cbr rule-create  --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"

El siguiente mandato de CLI de ejemplo crea una regla de restricción basada en contexto para un volumen de almacenamiento en bloque específico en la cuenta actual:

ibmcloud cbr rule-create --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for volume" --service-name is --resource-attributes "volumeId=UUID_OF_THE_VOLUME"

El siguiente mandato de CLI de ejemplo crea una regla de restricción basada en contexto para todas las instancias de servidor virtual en la cuenta actual y restringe el acceso a puntos finales privados:

ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*"

El siguiente mandato de CLI de ejemplo crea una regla de restricción basada en contexto para todas las instancias de servidor virtual del grupo de recursos y restringe el acceso a puntos finales privados:

ibmcloud cbr rule-create --context-attributes 'endpointType=private' --zone-id a7eeb5dd8e6bdce670eba1afce18e37f --description "Test CBR for VSIs" --service-name is --resource-attributes "instanceId=*" --resource-group-id 1171749e3a8545069d04e6fca1ded18f

Creación de reglas en la consola

  1. Vaya a Gestionar > Restricciones basadas en contexto en la consola de IBM Cloud®.

  2. Selecciona « Reglas » y haz clic en « Crear ».

  3. Seleccione Servicios de infraestructura de VPC y pulse Siguiente.

  4. Aplica la regla a « Todos los recursos » o a « Recursos específicos ». Para obtener más información, consulte Protección de los recursos de servicios de infraestructura de VPC. Pulse Continuar.

  5. Defina los tipos de punto final permitidos.

    • Mantenga el conmutador establecido en No para permitir todos los tipos de punto final.
    • Establezca el conmutador en para permitir sólo tipos de punto final específicos y, a continuación, elija en la lista.
  6. Seleccione una o varias zonas de red existentes, o cree una zona de red haciendo clic en Crear.

    Los contextos definen la ubicación desde la que se puede acceder a los recursos, enlazando de forma efectiva la zona de red con la regla.

  7. Haz clic en «Añadir» para añadir tu configuración al resumen. Pulse Siguiente.

  8. Asigne un nombre a la regla y seleccione cómo desea aplicarla. A continuación, pulse en Crear.

Supervisión de restricciones basadas en contexto en los servicios de infraestructura de VPC

El servicio de restricción basado en contexto genera registros de auditoría cada vez que se aplica una política basada en contexto . Para obtener más información, consulte Supervisión de restricciones basadas en contexto.

Resolución de errores debido a restricciones basadas en contexto

403 Mensajes de error no autorizados

Cuando se deniega una solicitud debido a permisos de acceso inadecuados o porque la solicitud se origina fuera de la zona de red definida en la regla de restricciones basadas en el contexto, la respuesta de error es similar a los siguientes ejemplos.

Error 403 no autorizado en la respuesta de la CLI

Error code: not_authorized and
Error message: the provided token is not authorized
Trace ID: b266a31c-b359-4ecb-8b81-a27c1b2cdb7b

Error 403 no autorizado en la consola IBM Cloud

reference_id b266a31c-b359-4ecb-8b81-a27c1b2cdb7b
code not_authorized
message the provided token is not authorized

Error 403 no autorizado en la respuesta de la API

"code":"not_authorized",
"message":"the provided token is not authorized to list floating-ips in this account"
"trace":"b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"

Localización de eventos de restricción basados en el contexto

Puede utilizar el valor de Trace ID o Reference ID para buscar en su instancia IBM Cloud Logs los eventos generados por el servicio de restricciones basadas en el contexto. La sección requestData.environment muestra la dirección IP de origen de la llamada y otra información que puede utilizar para verificar por qué se denegó la autorización. Los campos requestData.action y requestData.resource se pueden utilizar para determinar qué recurso subyacente se ha denegado el acceso.

El siguiente ejemplo es un evento de restricción basado en el contexto. Se han eliminado algunos campos para mejorar la legibilidad.

{
  "level": "critical",
  "action": "context-based-restrictions.policy.eval",
  "message": "Context based restriction rendered a deny",
  "severity": "critical",
  "correlationId": "TXID-b266a31c-b359-4ecb-8b81-a27c1b2cdb7b-df2f912c-80a1-422c-8b17-6092651fea00",
  "requestData": {
    "action": "is.vpc.vpc.create",
    "reqOrder": 0,
    "environment": {
      "attributes": {
        "ipAddress": "192.168.0.1",
        "networkType": "public"
      }
    },
    "resource": {
      "attributes": {
        "accountId": "67db3d7ff3f34220b40e2d81480754c9",
        "resource": "NEWRESOURCE",
        "vpcId": "NEWRESOURCE",
        "resourceGroupId": "d272ce832535498e9142b557ff8638ed",
        "region": "au-syd",
        "serviceName": "is",
        "resourceType": "vpc"
      }
    },
    "subject": {
      "attributes": {
        "scope": "ibm openid",
        "token.account.bss": "67db3d7ff3f34220b40e2d81480754c9",
        "id": "IBMid-550009FB7N"
      }
    }
  },
  "responseData": {
    "decision": "Deny",
    "isEnforced": true
  }
}

A continuación, puede utilizar el mismo ID de rastreo o ID de referencia para buscar el evento de servicio de infraestructura de VPC específico en su instancia de IBM Cloud Logs.

{
  "action": "is.vpc.vpc.create",
  "outcome": "failure",
  "message": "Virtual Private Cloud: create vpc -failure",
  "severity": "critical",
  "dataEvent": false,
  "logSourceCRN": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
  "saveServiceCopy": true,
  "initiator": {
    "id": "IBMid-ABCDEFGH",
    "typeURI": "service/security/account/user",
    "name": "test@ibm.com",
    "authnName": "test",
    "authnId": "IBMid-ABCDEFGH",
    "host": {
      "address": "192.168.0.1",
      "addressType": "IPv4"
    },
    "credential": {
      "type": "token"
    }
  },
  "target": {
    "id": "crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:",
    "typeURI": "is.vpc/vpc",
    "name": "",
    "resourceGroupId": "crn:v1:bluemix:public:resource-controller::a/67db3d7ff3f34220b40e2d81480754c9::resource-group:d272ce832535498e9142b557ff8638ed"
  },
  "reason": {
    "reasonCode": 403,
    "reasonType": "Forbidden",
    "reasonForFailure": "Your access token is invalid or does not have the necessary permissions to perform this task"
  },
  "requestData": {
    "generation": "2",
    "requestId": "b266a31c-b359-4ecb-8b81-a27c1b2cdb7b"
  },
  "responseData": {
    "responseURI": "/v1/vpcs/"
  }
}

También puede buscar sucesos utilizando un identificador de recurso. Un ID de recurso es un UUID y es el último identificador de un CRN. Véase el siguiente ejemplo

crn:v1:bluemix:public:is:au-syd:a/67db3d7ff3f34220b40e2d81480754c9::vpc:<resourceID>

Las solicitudes de suministro de recursos no contienen un ID de recurso.

Si no encuentra un evento de restricción basado en el contexto en el IBM Cloud Logs, es posible que se haya denegado el acceso debido a las políticas de acceso de IAM. Para obtener más información, consulte la guía de introducción a VPC IAM.

Impacto del plano de datos VPN de cliente a sitio con restricciones basadas en contexto

Si habilita la identificación de usuario y el código de acceso en la configuración de autenticación de cliente para una VPN de cliente a sitio y crea reglas basadas en el contexto en los recursos de VPC, la conexión del cliente a la VPN se verá afectada por las restricciones basadas en el contexto. Si la IP remota del cliente VPN no está en la Zona de red, la conexión con el servidor VPN devuelve un error Auth Failed.

Después de que el cliente VPN se conecte al servidor VPN, las solicitudes al punto final de VPE o al punto final de servicio en la nube (CSE) se controlan con restricciones basadas en contexto. Además, la IP de origen de las solicitudes es la VPC Direcciones de origen de punto final de servicio en la nube. Asegúrese de que las direcciones de origen CSE de VPC estén en la zona de red CBR; de lo contrario, se denegará la solicitud.

Limitaciones