2009-06-30 14 views
0

Ich versuche, einen symmetrischen Schlüssel in SQL Server 2005 zu erstellen und es auf nur die sa- und die Anwendungsbenutzerkonten zu beschränken. Alle anderen Konten sollten beim Versuch, sie zu öffnen, eine Fehlermeldung erhalten.Gewähren Sie Symmetric Key Zugriff auf nur 2 Benutzer

Hier ist, wie ich es erstelle. Ich habe die Namen für diese Frage geändert.

An dieser Stelle kann der Schlüssel von meinem App-Benutzer geöffnet werden, obwohl ich keine Erlaubnis erteilt habe. Wenn ich die Gruppe [public] VERWEIGERT, kann ich den Schlüssel nicht öffnen, auch wenn ich ihn später GRANT direkt an den App-Benutzer übergebe. Ich möchte nicht jeden Benutzer einzeln ablehnen, weil ich nicht weiß, welche Benutzer in der Produktion existieren. Ich möchte auch, dass neue Benutzer, die erstellt werden, keinen Zugriff auf diesen Schlüssel haben.

Die DENY und GRANT Linien Ich verwende sind:

DENY VIEW DEFINITION ON SYMMETRIC KEY :: My_Key TO [public] 
GRANT VIEW DEFINITION ON SYMMETRIC KEY :: My_Key TO [AppUser] 

Antwort

1

Wer den Schlüssel besitzt? Wie greift Ihre App auf die Schlüssel zu? Spielt die Besitzverkettung zufällig irgendeine Rolle? Zu welchen Gruppen und Rollen gehört AppUser?

Welche Berechtigung gibt fn_my_permissions('My_Key', 'SYMMETRIC KEY') zurück, wenn sie von AppUser ausgeführt wird (gleich nachdem der Schlüssel erstellt wurde)?

Update: Festtippfehler in fn_my_permissions festlegbar Typ

+0

habe ich den Schlüssel mit meinem eigenen Konto. Ich öffne den Schlüssel am Anfang der gespeicherten Prozedur und entweder verschlüsseln oder entschlüsseln, wie hier zu sehen: http://msdn.microsoft.com/en-us/library/ms179331.aspx AppUser gehört zur öffentlichen Server-Rolle und ist db_owner, öffentlich in der Datenbank selbst. fn_my_permissions() gibt keine Ergebnisse zurück. – AndyMcKenna

+0

Also AppUser ist db_owner? Das würde ihm Zugriff auf alles im db geben, oder? –

+0

Ja, und ich möchte, dass er Zugang hat. Ich muss nur alle anderen sperren. Ich werde versuchen, den Schlüssel als AppUser zu erstellen und zu sehen, ob mein persönlicher Account darauf zugreifen kann. Ich werde sicherstellen, dass ich auch kein db_owner bin. – AndyMcKenna

Verwandte Themen