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.
- Una cuenta de IBM Cloud. Para obtener más información, consulte Creación de una cuenta.
- Las herramientas de CLI que incluyen la CLI de IBM Cloud, el plugin de CLI del servicio Containers y el plugin CBR. Para obtener más información, consulte Iniciación a la CLI de IBM Cloud.
- Cree un clúster.
- Revise la documentación de Qué son las restricciones basadas en contexto para conocer las zonas y reglas de red.
- Revise la documentación de Protección de recursos de clúster con restricciones basadas en contexto para comprender cómo puede utilizar CBR para los recursos de Red Hat OpenShift on IBM Cloud.
- Revise las limitaciones de para utilizar CBR con Red Hat OpenShift on IBM Cloud.
Creación de la zona de red
Acceda al clúster de Red Hat OpenShift.
-
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 -
Verifique que se ha creado la zona de red.
ibmcloud cbr zones
Creación de la regla CBR
-
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. SustituyaNETWORK-ZONE-IDpor el ID de la zona de red deallow-client-ipque 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-IDDescripció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:clusterpara permitir que solo los recursos de la zona de red que ha creado anteriormente accedan únicamente a las API decluster, que incluyen las API para varios mandatos deoc. --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=privatesin 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=publicy asocie elnetworkZoneId=allow-client-ipque ha creado anteriormente para permitir que sólo los recursos de la zonaallow-client-ipaccedan al clúster a través de la red pública.
-
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.
-
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-zoneyprivate-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" -
Obtenga los ID de las zonas
private-ip-zoneypublic-ip-zoneque ha creado en el paso anterior.ibmcloud cbr zones -
Cree una regla que permita al
private-ip-zoneconectarse al punto final de servicio privado del clúster y que también permita alpublic-ip-zoneconectarse ú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.
-
Cree cuatro zonas de red, una para cada una de las direcciones IP que desea permitir para acceder a las API de
clusterpúblicas o privadas o a las API demanagementpú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" -
Obtenga los ID de las zonas que ha creado en el paso anterior.
ibmcloud cbr zonesSalida 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 -
Cree una regla que proteja el acceso a las API públicas y privadas de
clusterymanagementutilizando 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-kubernetesibmcloud 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