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

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

Las restricciones basadas en el contexto ofrecen a los propietarios y administradores de cuentas la posibilidad de definir y aplicar restricciones de acceso para los recursos de IBM Cloud® basadas en el contexto de las solicitudes de acceso de acceso. El acceso a los servicios de infraestructura de VPC se puede controlar con restricciones basadas en contexto y políticas de gestión de identidad y acceso (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 contexto comprueban que una solicitud de acceso provenga de un contexto permitido 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 suprimir reglas que tengan como destino los servicios de infraestructura de VPC. Un usuario debe tener el rol de Editor o Administrador en el servicio de restricciones basadas en contexto para crear, actualizar o suprimir zonas de red. Un usuario con el rol de Visor en el servicio de restricciones basadas en contexto sólo puede añadir zonas de red a una regla.

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.

Para empezar a proteger los servicios de infraestructura de VPC con restricciones basadas en contexto, consulte la guía de aprendizaje sobre Cómo aprovechar las restricciones basadas en contexto para proteger los recursos.

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

VPC Infrastructure Services es un servicio compuesto formado por una serie de servicios hijo. Se pueden crear restricciones basadas en contexto para IBM Cloud VPC o cualquiera de sus servicios hijo; por ejemplo, subnets, instancias de servidor virtual y volúmenesBlock Storage.

Consulte la sección de creación de reglas para obtener detalles sobre cómo puede 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 servicios, que permiten el acceso desde otros servicios de IBM Cloud®

Referencias de servicio

Una referencia de servicio, definida como parte de una zona de red, permite que el servicio determinado hable con los recursos restringidos o las API que son el destino de una política de restricción basada en contexto determinada. La tabla siguiente incluye referencias de servicio que deben incluirse cuando se utilizan restricciones basadas en contexto en el contexto de los servicios de infraestructura de VPC. También puede consultar las autorizaciones de IAM de servicio a servicio en su cuenta al decidir qué referencias de servicio añadir en la zona de red. Puede encontrar la autorización de servicio a servicio en su cuenta navegando a Gestionar-> 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 Referencia (s) de servicio necesaria (s) en la zona de red
Cloud Object Storage Servicios de infraestructura 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 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 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 atributo serviceRef 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 plugin de CLI de CBR.

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

    Para encontrar una lista de destinos de referencia de servicio disponibles, ejecute el mandato ibmcloud cbr service-ref-targets mandato. Los 2 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 agrega el is servicio, denominado Servicios de infraestructura de VPC 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=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. Compruebe la sección referencias de servicio para ver si necesita añadir alguna referencia de servicio a la 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 hijo necesita determinados atributos en una regla basada en contexto.

Cuando utiliza la API, Terraform o la interfaz de línea de mandatos (CLI) de IBM Cloud para crear, actualizar o suprimir restricciones basadas en contexto de IBM Cloud, puede especificar el recurso de infraestructura de VPC de destino utilizando atributos de recurso.

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

Puede 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.

La carga útil de ejemplo siguiente crea una regla que protege las instancias de servidor virtual y permite el 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 ejemplos de esta sección son las 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. Seleccione Reglas y haga clic en Crear.

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

  4. Alcance de la regla a Todos los recursos o a Recursos específicos. Para obtener más información, consulte Protección de recursos de VPC Infrasturcture Services. 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 zona o zonas de red que ya haya creado, o cree una nueva zona de red pulsando 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. Haga clic en Añadir para añadir su configuración al resumen. Pulse Siguiente.

  8. Asigne un nombre a la regla y seleccione cómo desea aplicarla. A continuación, pulse 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

Usuario que obtiene 403 no autorizado

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

Error 403 no autorizado al utilizar 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 al utilizar la consola de IBM Cloud

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

403 error no autorizado al utilizar 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.

A continuación se muestra un ejemplo de suceso de restricción basado en contexto. Algunos campos se han eliminado 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. Por 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 IBM Cloud Logs, es posible que el acceso se haya denegado debido a las políticas de acceso de IAM. Para obtener más información, consulte Guía de inicio de VPC IAM.

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

Si un usuario habilita un ID de usuario y código de acceso al configurar la autenticación de cliente para una VPN de cliente a sitio y crea reglas basadas en contexto en recursos de VPC, la conexión de cliente a la VPN se ve afectada por restricciones basadas en 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