ECS : CAS Client IP Restriction
Résumé: Cet article décrit la possibilité de restreindre les adresses IP des clients qui peuvent accéder à un bucket CAS.
Instructions
Introduction :
- Cette fonctionnalité peut être utilisée lorsque le client souhaite empêcher les adresses IP du client d’accéder à un bucket CAS. Seules les adresses IP définies dans la liste de restrictions peuvent avoir accès à l’utilisateur correspondant.
- Par défaut, aucune restriction n’est définie pour un utilisateur.
- La restriction d’adresse IP de l’utilisateur CAS s’applique à l’utilisateur sur tous les VDC.
- La limite IP par défaut d’un utilisateur est de 10 et elle est configurable.
Remarque : Contactez le support à distance Dell ECS pour modifier la valeur de limite IP par défaut.
Étapes de configuration de la restriction d’adresse IP du client CAS :
- Créer un utilisateur CAS
- Créez un fichier .xml avec la liste d’adresses IP auxquelles vous souhaitez donner accès à l’utilisateur. Toute autre adresse IP tentant d’accéder à l’utilisateur CAS devrait échouer
FP_AUTHENTICATION_FAILED_ERR - Appuyez sur
PUTpour définir une restriction d’adresse IP pour un utilisateur particulier - Appuyez sur
GETCommande permettant d’obtenir ou d’afficher l’ensemble de restrictions pour un utilisateur - Vers
EDITune restriction qui a été précédemment définie pour un utilisateur, modifiez le fichier xml avec les adresses IP et faites unePUT - Vers
DELETEune restriction qui a été précédemment définie, supprimez le<ip_restrictions>127.127.127.127</ip_restrictions>à partir du fichier xml et faites unPUT
Exemple de fichier XML lorsque la restriction IP est définie : (seules ces deux adresses IP ont accès au access_user utilisateur 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>
Vous trouverez ci-dessous la liste des REST commandes avec PUT, GET, LISTet DELETE Un jeton d’accès doit être utilisé pour l’utilisateur root.
Exemple:
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:~>
Pour définir des restrictions d’adresse IP utilisateur :
Utilisez la commande ci-dessous :PUT /object/user-cas/ip-restrictions/{namespace_name}/{user_name}
Exemple :
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
Exemple 1 du corps de la réponse : (par défaut lorsqu’aucune restriction IP n’est définie pour l’utilisateur).
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions> <user_name>access_user</user_name> </user_ip_restrictions>
Exemple 2 dans le corps de la réponse : (seule l’adresse IP client fournie ci-dessous a accès à l’utilisateur)
<?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>
Pour obtenir des restrictions d’adresse IP utilisateur :
Utilisez la commande ci-dessous :GET /object/user-cas/ip-restrictions/{namespace_name}/{user_name}
Exemple :
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 -
Exemple de corps de réponse : (seule l’adresse IP client fournie ci-dessous a accès à l’utilisateur)
<?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>
Exemple 2 dans le corps de la réponse : (GET pour un utilisateur par défaut lorsqu’aucune restriction IP n’est définie)
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>
Pour répertorier les restrictions d’adresse IP avec les utilisateurs :
Utilisez la commande ci-dessous :
GET /object/user-cas/ip-restrictions/
Exemple : (répertorie les restrictions IP pour chaque utilisateur)
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>
Pour supprimer les restrictions d’adresse IP définies pour un utilisateur :
Supprimez les entrées de restriction IP du .xml et effectuez une 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>
Commande :
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
Exemple de corps de réponse :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <user_ip_restrictions> <user_name>clientuser</user_name> </user_ip_restrictions>
L’exemple ci-dessous illustre le comportement de la fonctionnalité au cours de PUTet GET, et l’accès à un utilisateur avec et sans restriction :
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>
À l’aide de JCASS, a tenté d’accéder au pool à partir de 127.127.127.127 et a pu accéder :
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
Tentative d’accès au pool à partir d’une adresse IP qui ne figure pas dans la liste des restrictions IP (liste autorisée). L’accès au pool doit échouer avec l’erreur ci-dessous :
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)Informations supplémentaires
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