Casos de ejemplo de restricciones basadas en contexto

Con las restricciones basadas en el contexto, los propietarios y administradores de cuentas pueden 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 recursos de Red Hat OpenShift on IBM Cloud puede controlarse con restricciones basadas en el contexto y políticas de gestión de identidades y accesos. Para obtener más información, consulte Protección de los recursos de Red Hat OpenShift on IBM Cloud con restricciones basadas en el contexto.

Las aplicaciones que se ejecutan en clústeres Red Hat OpenShift on IBM Cloud, por ejemplo servidores web expuestos por un Kubernetes LoadBalancer, no están restringidas por las reglas CBR.

Descripción del escenario

En este escenario de ejemplo, se utilizan restricciones basadas en contexto para restringir el tráfico al clúster permitiendo que solo una dirección IP individual se conecte a las API de cluster a través de la red pública y permitiendo al mismo tiempo todo el tráfico privado.

En los pasos siguientes, empiece creando una zona de red, o lista de elementos permitidos, que incluya una única dirección IP. A continuación, cree una regla de restricciones basadas en contexto para el clúster que permita el acceso a toda la red privada y que incluya en la lista de elementos permitidos la zona de red que contiene la dirección IP individual. Cuando crea la regla, la asocia con la zona de red que contiene la dirección IP individual.

Requisitos previos

Antes de comenzar este tutorial, asegúrese de haber creado o instalado los siguientes recursos y herramientas.

Creación de la zona de red

Acceda al clúster de Red Hat OpenShift.

  1. Ejecute el siguiente mandato de ejemplo para crear una red que incluya sólo una IP de cliente que desee utilizar.

    ibmcloud cbr zone-create --addresses 129.XX.XX.XX --description "Allow only client IP" --name allow-client-ip
    
  2. Verifique que se ha creado la zona de red.

    ibmcloud cbr zones
    

Creación de la regla CBR

  1. Después de crear la zona de red (lista de elementos permitidos), cree una regla CBR y añada la zona de red que ha creado en el paso anterior. El ejemplo siguiente crea una regla que utiliza el tipo de API cluster. Sustituya NETWORK-ZONE-ID por el ID de la zona de red de allow-client-ip que ha creado en el paso 1.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "privateAccess=allowAll, publicAccess=oneIP" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private --context-attributes endpointType=public,networkZoneId=NETWORK-ZONE-ID
    

    Descripción de las opciones de mandato.

    --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster
    Establezca la API de crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster para permitir que solo los recursos de la zona de red que ha creado anteriormente accedan únicamente a las API de cluster, que incluyen las API para varios mandatos de oc.
    --service-instance CLUSTER-ID
    Establezca el ámbito de la regla en un único clúster para que solo los recursos de la zona de red que ha creado anteriormente puedan acceder únicamente al CLUSTER-ID.
    --context-attributes endpointType=private
    Establecer el atributo de contexto endpointType=private sin asociar una zona de red permite todo el tráfico privado al clúster.
    --context-attributes endpointType=public,networkZoneId=all-client-ip
    Establezca el atributo de contexto endpointType=public y asocie el networkZoneId=allow-client-ip que ha creado anteriormente para permitir que sólo los recursos de la zona allow-client-ip accedan al clúster a través de la red pública.
  2. Comprueba que se ha creado la regla.

    ibmcloud cbr rules
    

Prueba de las restricciones basadas en contexto

Para probar la configuración de las restricciones basadas en contexto, puede intentar llamar a las API de clúster para el clúster, por ejemplo, listando pods, a través de la red pública desde una dirección IP distinta de la dirección IP individual que ha permitido en la zona de red. Con esta configuración, se permite toda la conectividad privada, mientras que sólo la dirección IP individual de la zona de red puede conectarse a las API de clúster a través de la red pública.

Escenarios adicionales

Ahora que ha creado una zona de red CBR simple y una regla, revise los siguientes ejemplos más avanzados para controlar adicionalmente el acceso a los recursos de Red Hat OpenShift on IBM Cloud.

Permitir que distintas IP accedan a los puntos finales de servicio público y privado

En este escenario, permite que diferentes direcciones IP o CIDR accedan a los puntos finales de servicio público y privado de los clústeres de Red Hat OpenShift on IBM Cloud creando zonas de red separadas para cada dirección IP. A continuación, cree una regla que permita a cada zona de red acceder a los puntos finales de servicio público o privado.

  1. Cree una zona de red para una dirección IP pública o CIDR y otra para una dirección IP privada o CIDR que desee permitir para acceder a los clústeres de Red Hat OpenShift on IBM Cloud.

    Mandatos de ejemplo para crear zonas de red separadas denominadas public-IP-zone y private-IP-zone. En este ejemplo, cada zona contiene varias direcciones IP o CIDR, separadas por una coma, que desea permitir que accedan a los clústeres.

    ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses Zone" --name "public-ip-zone"
    
    ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses Zone" --name "private-ip-zone"
    
  2. Obtenga los ID de las zonas private-ip-zone y public-ip-zone que ha creado en el paso anterior.

    ibmcloud cbr zones
    
  3. Cree una regla que permita al private-ip-zone conectarse al punto final de servicio privado del clúster y que también permita al public-ip-zone conectarse únicamente al punto final de servicio público del clúster. Esta regla se aplica al clúster especificado con la opción --service-instance. Si desea aplicar la regla a todos los clústeres de la cuenta, no especifique un clúster.

    ibmcloud cbr rule-create --context-attributes "endpointType=public,networkZoneId=PUBLIC-IP-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-IP-ZONE-ID" --description "Separate private and public IPs for cluster and management rule" --service-name containers-kubernetes --service-instance CLUSTER-ID
    

Permitir que distintas IP accedan a distintos tipos de API a través de los puntos finales de servicio público y privado

De forma similar al escenario anterior, en este escenario se permite que diferentes direcciones IP accedan al punto final de servicio público o privado para los clústeres de Red Hat OpenShift on IBM Cloud. Sin embargo, en este escenario, el acceso está más restringido por tipos de API específicos para las API cluster y management. Para obtener más información sobre los tipos de API, consulte Protección de API específicas.

  1. Cree cuatro zonas de red, una para cada una de las direcciones IP que desea permitir para acceder a las API de cluster públicas o privadas o a las API de management públicas o privadas. Tenga en cuenta que puede incluir varias direcciones IP o CIDR, separadas por una coma, que desea permitir para acceder a los clústeres.

    ibmcloud cbr zone-create --addresses 1.2.3.4,12.12.12.0/24 --description "Allowed Public IP Addresses for IKS and ROKS APIs" --name "public-mgmt-zone"
    
    ibmcloud cbr zone-create --addresses 10.20.20.20,10.10.10.0/24 --description "Allowed Private IP Addresses IKS and ROKS APIs" --name "private-mgmt-zone"
    
    ibmcloud cbr zone-create --addresses 11.11.11.0/24 --description "Allowed Public IP Addresses for cluster apiserver" --name "public-cluster-zone"
    
    ibmcloud cbr zone-create --addresses 10.30.30.30 --description "Allowed Private IP Addresses for cluster apiserver" --name "private-cluster-zone"
    
  2. Obtenga los ID de las zonas que ha creado en el paso anterior.

    ibmcloud cbr zones
    

    Salida de ejemplo

    OK
    id                                 name                   address_count   
    c14c0839c13d8aa0afa8383e2be2e124   public-mgmt-zone       2   
    f9676ca6ef37685315fa254b89d73159   public-cluster-zone    1   
    c14c0839c13d8aa0afa8383e2be2e843   private-cluster-zone   1   
    b53353de929de39ac2381f9b4cde8507   private-mgmt-zone      2
    
  3. Cree una regla que proteja el acceso a las API públicas y privadas de cluster y management utilizando las zonas que ha creado anteriormente.

    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:management --context-attributes "endpointType=public,networkZoneId=PUBLIC-MGMT-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-MGMT-ZONE-ID" --description "Separate private and public IPs for the management APIs" --service-name containers-kubernetes
    
    ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --context-attributes "endpointType=public,networkZoneId=PUBLIC-CLUSTER-ZONE-ID" --context-attributes "endpointType=private,networkZoneId=PRIVATE-CLUSTER-ZONE-ID" --description "Separate private and public IPs for cluster APIs" --service-name containers-kubernetes