On va faire dans l'ordre..
1. Le cryptage des données
Oui, il est possible sur SQL Server 2005 (Express incluse) de crypter les données directement dans le moteur. Les fonctions qui permettent de le faire seont EncryptXXX et DecryptXXX suivant d'un élément tel que Key, Cert. La plus simple étant celui-ci :
[ Lien ]
Et bien sûr la même chose en Decrypt
C'est aussi possible de le faire au niveau application (il y a pas mal de classes en .ent qui permettent çà) après c'est un choix le résultat étant le même c'est à dire les données stockkées de manière crypté dans la base de données.
2. Le cryptage de la base de données
C'est possible mais violent, je ne connais qu'un seul moyen (de crypter toute la base de données) c'est utiliser les fonctions EFS (Encryption File System) de Windows XP ou 2003 qui permettent de crypter des fichiers, auquel il suffit de crypter 1 à 1 tous les fichiers de la base de données. Mais en terme de performance, c'est pas terrible...
3. L'accès à la base de données
Ne pas confondre l'accès aux bases de données et l'accès au serveur. L'accès au serveur c'est les comptes de connexion aussi appelés Login, pour par exemple interdire l'accès au serveur par -E c'est à dire par des connexions Windows il suffit de supprimer tous les logins Windows du serveur (Par défaut un seul existe : BUILTIN\Administrators) et c'est tout. L'accès au bases de données est un peu différent on créée des utilisateur dans chaque base de données pour un login et on lui donne des droits (lecture seule, propriétaire de la base de données, etc.).
Voilà un petit tour du sujet. Attention à ne pas abuser du cryptage cela deviendrait vite compliqué et mauvais en terme de perf si l'on en met partout.
Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration