4

Would having the IP address and name of my database visible to the public be a security risk?

I have hosting with godaddy, a shared hosting plan. When I connect to my DB, via MS-SQL-MS, I can see the names of all databases on the shared hosting plan. I don't have permission to do much, but I do find this odd.

Thoughts?

2 Answers 2

4

Yeah, this is the price you pay for cut rate SQL hosting. It's not the end of the world, but you get what you pay for.

The idea of Security Through Obscurity is usually considered a bad practice when relied upon on it's own. Rather it's a better idea to secure systems as if an attacker had full visibility of how things are setup. It's also important to note that the databases running on a GoDaddy instance are not visible to the public - they are visible to other paying users who have databases running on GoDaddy's servers. Not a high bar for entry but also not the public. That said - the security mechanisms that SQL Server makes available should be capable of isolating database instances from one another and to my knowledge there has never been a GoDaddy security breach related to the ability to see other database instances running on the same SQL Server instance.

There are a number of reasons to not use GoDaddy for database hosting, but I don't think that this particular oddity is one of them. Personally - I have used them for DB hosting in the past and I would not recommend it for anything but hobby projects.

1

The short answer - This is a SQL Server limitation.

SQL Server (as many other Microsoft products) have a long battle between user experience and security. One of the decisions along this battle was the desire to show the list of databases in Management Studio. This decision was done long before multi-tenant databases become popular, and resulted in a server permission called VIEW ANY DATABASE that allows you to see the list of ALL the databases in the server.

If you run this query:

select p.name from sys.server_principals p
join sys.server_permissions m on principal_id = grantee_principal_id
where m.permission_name = 'VIEW ANY DATABASE'

You'll see that the public role has this permission, and from there is disseminates to everyone.

It's possible to deny that privilege (for example, from test_user) by doing:

deny view any database to test_user

However, this means that no database (except master and tempdb) will be visible in Management Studio. For many SQL Server users that rely on Management Studio and the ability to navigate the database tree this makes for an unacceptable user experience.

But since you're concerned with security, I would argue that hosting sensitive data in the cloud is a risky proposition to begin with. Beyond the risk of other users learning about your database and trying to log into it, there's the risk of the provider's administrators that have full access to your data.

Despite marketing propaganda, there are little if any security measures deployed against administrators even in much more reputable database hosting providers. Personally, I would not host sensitive information in environments where I have no control over access and means of monitoring what's being done with it (e.g. auditing DBA activity).

This is ultimately a balance of risk vs. cost - using a GoDaddy shared hosting plan reduces the cost but increases the risk.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .