ECS: Restricción de IP del cliente de CAS
Resumen: En este artículo, se describe la capacidad de restringir las direcciones IP de cliente que pueden acceder a un depósito de CAS.
Instrucciones
Introducción:
- La función se puede utilizar cuando el cliente desea restringir las direcciones IP del cliente para que no accedan a un depósito de CAS. Solo las direcciones IP configuradas en la lista de restricciones pueden tener acceso al usuario correspondiente.
- De manera predeterminada, no hay restricciones establecidas para un usuario.
- La restricción de direcciones IP de usuario de CAS se aplica al usuario en todos los VDC.
- El límite predeterminado de direcciones IP para un usuario es de 10 y se puede configurar.
Nota: Comuníquese con el soporte remoto de Dell ECS para cambiar el valor predeterminado del límite de direcciones IP.
Pasos para configurar la restricción de IP del cliente de CAS:
- Crear un usuario de CAS
- Cree un archivo de .xml con la lista de IP a la que desea proporcionar acceso al usuario. Cualquier otra IP que intente acceder al usuario de CAS debería fallar con
FP_AUTHENTICATION_FAILED_ERR - Presione la tecla
PUTpara establecer una restricción de IP para un usuario en particular - Presione la tecla
GETcomando para obtener o ver el conjunto de restricciones de un usuario - Para
EDITuna restricción que se estableció previamente para un usuario, edite el archivo xml con las direcciones IP y haga unPUT - Para
DELETEuna restricción que se estableció anteriormente, elimine el<ip_restrictions>127.127.127.127</ip_restrictions>Desde el archivo XML y haga unPUT
Archivo xml de muestra cuando se establece una restricción de IP: (solo estas dos direcciones IP tienen acceso al access_user de usuario de CAS)
cat new.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions_param> <ip_restrictions>127.127.127.127</ip_restrictions> <ip_restrictions>127.128.128.128 </ip_restrictions> <user_name>access_user</user_name> </user_ip_restrictions_param>
A continuación se muestran las REST comandos con PUT, GET, LISTy DELETE operations, se debe utilizar un token de acceso para el usuario raíz.
Ejemplo:
admin@ecsnode1:~> TOK=$(curl -iks https://localhost:4443/login -u root:*** | grep X-SDS-AUTH-TOKEN); echo $TOK X-SDS-AUTH-TOKEN: BAAcc1pZcEkxK3MyUU4xZy9ocEdnUXp0MHl2aTk0PQMAjAQASHVybjpzdG9yYWdlb3M6VmlydHVhbERhdGFDZW50ZXJEYXRhOjdlNWQ0YzFkLTkzNjEtNDBkNS1iMWE4LTUwNzE5NDEwODRiZQIADTE2ODQ4MjYzOTk5OTIDAC51cm46VG9rZW46ODYzMzEyZDEtYzA3NC00MWFjLThlMjAtZDUzZmQ3Njk2MjVhAgAC0A8= admin@ecsnode1:~>
Para establecer restricciones de direcciones IP de usuario:
Utilice el siguiente comando:PUT /object/user-cas/ip-restrictions/{namespace_name}/{user_name}
Ejemplo:
curl -ks -H 'Accept:application/xml' -H 'Content-Type:application/xml' -X PUT -d @new.xml -H "$TOK" https://10.245.xx.xx:4443/object/user-cas/ip-restrictions/cas_access/access_user
Ejemplo 1 del cuerpo de la respuesta: (de manera predeterminada cuando no hay ninguna restricción de IP configurada para el usuario)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions> <user_name>access_user</user_name> </user_ip_restrictions>
Ejemplo 2 del cuerpo de la respuesta: (solo la IP de cliente proporcionada a continuación tiene acceso al usuario)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions_param> <ip_restrictions>128.128.128.128</ip_restrictions> <ip_restrictions>127.127.127.127</ip_restrictions> <user_name>access_user</user_name> </user_ip_restrictions_param>
Para obtener restricciones de direcciones IP de usuario:
Utilice el siguiente comando:GET /object/user-cas/ip-restrictions/{namespace_name}/{user_name}
Ejemplo:
curl -ks -H "$TOK" -H "Content-Type: application/json" https://10.245.xx.xx:4443/object/user-cas/ip-restrictions/cas_access/access_user | xmllint -format -
Ejemplo del cuerpo de la respuesta: (solo la IP de cliente proporcionada a continuación tiene acceso al usuario)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions> <ip_restrictions>127.127.127.127</ip_restrictions> <user_name>access_user</user_name> </user_ip_restrictions>
Ejemplo 2 del cuerpo de la respuesta: (GET para un usuario de forma predeterminada cuando no hay ninguna restricción de IP establecida)
curl -ks -H "$TOK" -H "Content-Type: application/json" https://10.245.xx.xx:4443/object/user-cas/ip-restrictions/cas_access/access_user | xmllint -format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions> <user_name>access_user</user_name>
Para enumerar las restricciones de IP con los usuarios:
Utilice el siguiente comando:
GET /object/user-cas/ip-restrictions/
Ejemplo: (enumera las restricciones de IP para cada usuario)
curl -ks -H "$TOK" -H "Content-Type: application/json" https://10.245.xx.xx:4443/object/user-cas/ip-restrictions | xmllint -format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions_list> <userIpRestriction> <user_name>tsouser</user_name> </userIpRestriction> <userIpRestriction> <user_name>tsouser2</user_name> </userIpRestriction> <userIpRestriction> <ip_restrictions>10.245.xx.xx</ip_restrictions> <ip_restrictions>10.247.xx.xx</ip_restrictions> <ip_restrictions>10.245.xx.xx</ip_restrictions> <ip_restrictions>10.247.xx.xx</ip_restrictions> <ip_restrictions>10.243.xx.xx</ip_restrictions> <user_name>clientuser</user_name> >>>these are the restrictions set for this user </userIpRestriction> <userIpRestriction> <user_name>gctest</user_name> </userIpRestriction> <userIpRestriction> <user_name>casgcuser2</user_name> </userIpRestriction> <userIpRestriction> <user_name>user2</user_name> </userIpRestriction> <userIpRestriction> <user_name>gcu2</user_name> </userIpRestriction> <userIpRestriction> <user_name>casgcuser1</user_name> >>>all these users doesn't have any restrictions set </userIpRestriction> </user_ip_restrictions_list>
Para eliminar las restricciones de IP establecidas para un usuario:
Elimine las entradas de restricción de IP del .xml y realice un PUT
cat new.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions_param> <user_name>clientuser</user_name> </user_ip_restrictions_param>
Comando:
curl -ks -H 'Accept:application/xml' -H 'Content-Type:application/xml' -X PUT -d @new.xml -H "$TOK" https://10.245.130.65:4443/object/user-cas/ip-restrictions/clientns/clientuser
Ejemplo del cuerpo de la respuesta:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions> <user_name>clientuser</user_name> </user_ip_restrictions>
En el siguiente ejemplo, se muestra el comportamiento de la característica durante PUTy GETy acceso a un usuario con y sin restricción:
cat new.xml <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions_param> <ip_restrictions>127.127.127.127</ip_restrictions> <user_name>access_user</user_name> </user_ip_restrictions_param>
PUT:
curl -ks -H 'Accept:application/xml' -H 'Content-Type:application/xml' -X PUT -d @new.xml -H "$TOK" https://10.245.xx.xx:4443/object/user-cas/ip-restrictions/cas_access/access_user
GET:
curl -ks -H "$TOK" -H "Content-Type: application/json" https://10.245.xx.xx:4443/object/user-cas/ip-restrictions/cas_access/access_user | xmllint -format - <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions> <ip_restrictions>127.127.127.127</ip_restrictions> <user_name>access_user</user_name> </user_ip_restrictions>
Mediante JCASS, intentó acceder al pool desde 127.127.127.127 y pudo acceder a lo siguiente:
CASScript>po 10.245.xx.xx?name=access_user,secret=centera@1234 Attempting to connect to: 10.245.xx.xx?name=access_user,secret=centera@1234 Connected to: 10.245.xx.xx?name=access_user,secret=centera@1234 CASPool Properties: Connection String: 10.245.xx.xx?name=access_user,secret=centera@1234 Cluster Time: 2020.07.07 06:32:24 GMT Buffer Size: 16384 Prefetch Buffer Size: 32768 Connection Timeout: 120000 Multi-Cluster Failover Enabled: True Collision Avoidance Enabled: False
Se intentó acceder al pool desde una IP que no está en la lista de restricciones de IP (que es una lista permitida). El acceso al pool debe fallar con el siguiente error:
CASScript>po 10.245.xx.xx?name=access_user,secret=centera@1234
Attempting to connect to: 10.245.xx.xx?name=access_user,secret=centera@1234
SDK Error Occurred:
Error Number: -10153
System Error: 0
Error: FP_AUTHENTICATION_FAILED_ERR
Error Class: null
Trace: HPPAuthCRTransaction.run<FPConnection::authenticate<Cluster.authenticate<Cluster::updateClusterInfo()<ClusterCloud::updateClusterInfo(e9f1a3c9-5cb1-3a76-a589-f639de9ad2e4)<ClusterCloud::getClusterInfo(0,ClusterInformation&,2)<FPPool::Open(10.245.130.64?name=access_user,secret=centera@1234)<_FPPool_Open(10.245.130.64?name=access_user,secret=centera@1234)<FPPool_Open8(10.245.130.64?name=access_user,secret=centera@1234)Información adicional
https://dl.dell.com/content/manual52394679-ecs-3-8-administration-guide.pdf?language=en-us
https://www.dell.com/support/manuals/en-us/ecs-appliance-software-with-encryption/ecs_p_adminguide_3_8/restrict-user-ip-addresses-that-can-access-a-cas-bucket?guid=guid-c4e67b45-46f8-46fa-93cf-f63795add0ad⟨=en-us