AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Rechte verweigern nur für bestimmte Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Rechte verweigern nur für bestimmte Tabellen

Ein Thema von Jelly · begonnen am 9. Sep 2005 · letzter Beitrag vom 9. Sep 2005
Antwort Antwort
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Rechte verweigern nur für bestimmte Tabellen

  Alt 9. Sep 2005, 12:10
Datenbank: MSSQL • Zugriff über: ADO
Ich habe in einer relativ unübersichtlich gewordenen MSSQL Datenbank knapp 400 Tabellen und Views drin. Was die Zugriffssicherheit momentan betrifft, ist es so dass alle User in der Datenbankrole db_datareader, db_datawriter sowie db_public sind. Somit können sie soweit überall zugreifen.

Jetzt kommt aber ein Modul hinzu, da soll keiner der normalen Angestellten darauf zugreifen dürfen. Jetzt könnte ich hingehen, eine neue Role erstellen, und die Rechte für alle 400 DB Objekte verteilen, und die Benutzer aus db_datareader und db_datawrite entfernen. Das würde klappen, ist aber umständlich.

Geht das auch irgendwie einfacher. Sobald ich ein
deny all on Websessions to Angestellte mache, erhalte ich selbst auch keinen Zugriff mehr auf das Objekt, da ich selbst auch Angestellte-Mitglied bin.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Rechte verweigern nur für bestimmte Tabellen

  Alt 9. Sep 2005, 13:35
Ich hab mir jetzt so geholfen, wenns auch nicht die feine englische Art ist...
Ich habe eine Role "Buero" erstellt. Da lege ich alle Leute rein, denen ich Normalzugriff auf die Tabellen geben will. Die dürfen eigentlich alles tun, ausser Zugriff auf bestimmte Tabellen erhalten. Diese Tabellen nehme ich namentlich in die Tabelle excludetables auf. Die Tabellennamen die dort drin enthalten sind, für die sollen keine Rechte an die Role buero vergeben werden. Darin selbst steht die Tabelle excludetables und die Stored Procedure, welche die Rechte neu setzt.

SQL-Code:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[proc_Regrant]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[proc_Regrant]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


create procedure proc_Regrant as
declare @Tablename varchar(300)
declare @xtype varchar(10)
declare @CMD varchar(300)
declare CR CURSOR for
  select name, xtype from sysobjects where type in ('U','V','P','FN') and not(name like 'dt_%and xtype='P') and not(name like 'sys%and xtype='V') and not (name in (select tablename from excludetables)) order by name

open CR
fetch next from CR into @Tablename, @xtype
while @@fetch_status = 0
begin
  /* Beginne hier, die Records zu bearbeiten */
  set @CMD = 'grant all on [' + @Tablename + '] to Buero
      execute (@CMD)
      print @Tablename + ' (' + rtrim(@xtype) + ')'
  fetch next from CR into @Tablename, @xtype
END
CLOSE CR
DEALLOCATE CR



GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
Naja, die SP macht nichts anderes, als alle sysObjects zu durchlaufen, die vom Typ U(Tabelle), P(Stored Procedure), V(View) oder FN(Funtion) sind, und welches keine System SP sind (dt_%), keine Systemviews (sys%) sind, und welche nicht in der Tabelle excludetables enthalten sind. Für die restlichen, hoffentlich nur noch Benutzerobjekte, werden alle Rechte zugeteilt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz