We need to make some instances of our SQL Server invisible, so you can't view it from SQL Server Management Studio "Browse for servers" screen but you can connect to it if you know its instance name...
Also prevent any possibility of getting the list of the other instances from inside an instance that you are connected
Any ideas?
It seems we didnt google about it with the correct keywords...searching about hidding instance returned the answer:
To hide an instance of the SQL Server Database Engine
In SQL Server Configuration Manager, expand SQL Server Network Configuration, right-clickProtocols for , and then selectProperties.
On the Flags tab, in the HideInstance box, select Yes, and then click OK to close the dialog box. The change takes effect immediately for new connections.
Perhaps this is what you are looking for. How to: Hide an Instance of SQL Server Database Engine
Maybe this would be sufficient:
http://technet.microsoft.com/en-us/library/ms179327.aspx
It is configuration option.
As I mentioned, I'd suggest you use a non-standard TCP port for the "protected" instance and disable the SQL Browser service. You'd need to then know the server + instance name + port number to connect using SSMS.
I haven't tested this configuration, but off the top of my head I think this will make it tougher for instance detection.
Is there any particular reason for wanting to "hide" the instance? Can't you just set up login/security account restrictions to prevent unauthorized access?