Ocultando tablas de usuarios de bases de datos

Tengo una aplicación web que usa una database en SQL Server 2008. Soy el desarrollador de este proyecto y este proyecto ha sido alojado en otro lugar.

He entregado el proyecto al administrador. Ahora el administrador puede conectarse a SQL Server, pero no quiero que el administrador pueda ver las tablas de la database.

¿Hay alguna manera de hacer esto?

He visto esto hecho antes por los creadores de ACT. Su producto instala una nueva instancia de SQL Server Express y como parte de ese process encriptan la contraseña de sa para la instancia. Esto hace que sea "imposible" que otros se conecten a la database utilizando cualquier cosa que no sea el producto y las herramientas complementarias. No sé exactamente cómo lo hacen, pero tal vez podrías search encriptar tu contraseña o algo similar y descubrir cómo hacerlo. Tímido de instalar tu propia instancia de SQL Server, no estoy seguro de cómo lo harías. Tenga en count que su aplicación deberá proporcionar la capacidad de hacer una copy de security, ajustar, modificar, etc. la database ya que el DBA no tendría acceso a la instancia de SQL Server.

Incidentalmente, lanzamos ACT una vez que vimos esto, no lo hice, y todavía no lo hago, como la idea de una caja negra ejecutándose en uno de nuestros serveres.

Al final, probablemente encontrará que esta capa de protección adicional (para usted, no para el cliente) simplemente no justifica la agravación. Si bien puede tener información de propiedad en forma de esquema de database, las posibilidades de que el cliente aplique ingeniería inversa a su aplicación y luego haga las suyas propias son escasas. Incluso si lo hicieran, es difícil hacer un buen software; de ​​todos modos, es probable que no lo hagan "bien".

Mi consejo, no te preocupes por esto, concéntrate en hacer que tu software sea lo mejor, así que no hay ninguna razón para que ellos hagan lo propio o busquen otro lado.

Simple: No, él es DBA. Él no puede hacer su trabajo sin la capacidad de trabajar con la database. Supere sus objeciones.

No puede limitar los derechos de un administrador en un server.

El administrador también tiene acceso a casi todas las tablas que almacenan sus keys de encryption, por lo que TDE no funcionará.

Si él es un administrador de security o uno de los otros roles, eso podría resolver el problema ya que por defecto dichos roles no tienen permissions sobre sus datos.

Los administradores de SQL normalmente tienen estos roles para proteger sus datos. Lo necesitan. Si los datos son muy delicados, debe usar medios alternativos para protegerlos, como aplicar su propio encryption antes de save los valores confidenciales. (AES, etc.)