I setup my Pi-hole on a VPS which having a public IP and the system is working well. However, my Pi-hole IP shared to many and many people and I want to grant permissions to a list of user only. I've tried to look for a solution but not luck. Could you please review and give me your advices?
You will need to use a firewall to grant only the allowed users access and block all other access. You can also use a VPN to give access only to the chosen few. Please be extra careful to lock it all down and not to expose your Pi-hole to the open internet, or it will be discovered very quickly and abused in denial of service attacks against others.
Usage of a VPN server would be the preferred approach of hosting a cloud-based Pi-hole.
You'd then share individual access credentials for your chosen VPN solution with the people that you want to have access.
For further details, you could take a look at our suggestions for setting up a VPN server in conjunction with Pi-hole available from Pi-hole's documentation under Guides | VPN.