Maak een login aan met Transact-SQL. Rechten intrekken die aan gebruikers zijn verleend

Het beveiligingssysteem aangenomen in SQL-taal. De algemene regels voor toegangscontrole worden uiteengezet. Beschrijft authenticatiemodi en componenten van de beveiligingsstructuur (gebruikers, databaserollen), beheer van het beveiligingssysteem (aanmaken en beheren van accounts, beheren van gebruikers en rollen). Er wordt een definitie gegeven van gebruikersrechten voor toegang tot databaseobjecten. Er wordt rekening gehouden met impliciete rechten, kwesties als het weigeren van toegang en impliciete weigering van toegang, evenals toegangsconflicten.

Databasegebruikersbeheer

Stabiel systeem gebruikersbeheervoorwaarde gegevensbeveiliging, opgeslagen in elk relationele DBMS. In SQL is er geen enkele standaard commando, bestemd voor gebruikers aanmaken databases - elke implementatie doet dit anders. In sommige implementaties vertonen deze speciale commando's bepaalde overeenkomsten, terwijl in andere hun syntaxis aanzienlijk verschilt. Ongeacht de specifieke implementatie zijn echter alle basisprincipes hetzelfde.

Gebruikersbeheer in MS SQL Server-omgeving

Laten we de vraag eens bekijken gebruikers aanmaken in MS-omgeving SQL-server.

Na het ontwerpen van de logische structuur van de database, de relaties tussen tabellen, integriteitsbeperkingen en andere structuren, is het noodzakelijk om het bereik van gebruikers te bepalen die toegang zullen hebben tot de database.

Het SQL-serversysteem heeft een configuratie op twee niveaus van beperkingen voor gegevenstoegang. Op het eerste niveau is het noodzakelijk om de zogenaamde te creëren gebruikersaccount(login), waardoor hij verbinding kan maken met de server zelf, maar hem niet automatisch toegang geeft tot de databases. Op het tweede niveau moet voor elke SQL-serverdatabase een gebruikersrecord worden aangemaakt op basis van het account. Op basis van de rechten die aan de gebruiker als databasegebruiker (user) zijn verleend, krijgt zijn loginnaam (login) toegang tot de bijbehorende database. In verschillende databases kan de login van dezelfde gebruiker hetzelfde of verschillend zijn gebruikersnamen met verschillende toegangsrechten. Met andere woorden: met hulp gebruikersaccount Er wordt verbinding gemaakt met de SQL-server, waarna voor elke database afzonderlijk de toegangsniveaus worden bepaald.

In het SQL-serversysteem zijn er extra objecten - rollen, die het toegangsniveau tot SQL-serverobjecten bepalen. Ze zijn verdeeld in twee groepen: degenen die zijn toegewezen aan gebruikersaccounts servers en gebruikt om de toegang tot databaseobjecten te beperken.

Op serverniveau werkt het beveiligingssysteem dus met de volgende concepten:

  • authenticatie;
  • rekening ;
  • ingebouwde serverrollen.

Op databaseniveau zijn de volgende concepten van toepassing;

  • databasegebruiker;
  • vaste databaserol;
  • aangepast rol van de databank.

Authenticatiemodi

SQL Server biedt twee modi gebruikersauthenticatie:

  • authenticatiemodus Windows gebruiken NT/2000;
  • authenticatie in gemengde modus (Windows NT-authenticatie en SQL Server-authenticatie).

Beheer van beveiligingssystemen

Voor een gebruiker aanmaken In een MS SQL Server-omgeving moeten de volgende stappen worden genomen:

  1. Creëren in database gebruikersaccount door een wachtwoord en een standaarddatabasenaam (sp_addlogin) op te geven.
  2. Voeg deze gebruiker toe aan alle vereiste databases (sp_adduser).
  3. Verleen het de juiste rechten in elke database (opdracht GRANT).

Maak een nieuw account aan kan worden gedaan met behulp van een door het systeem opgeslagen procedure:

sp_addlogin [@login=] "account" [, [@password=] "wachtwoord"] [, [@defdb=] "standaard_database"]

Na het voltooien van authenticatie en ontvangst login-ID gebruiker wordt als geregistreerd beschouwd en krijgt toegang tot de server. Voor elke database waarvan hij de objecten wil openen, gebruikersaccount(login) is gekoppeld aan de gebruiker (gebruiker) van een specifieke database, wat gebeurt via de procedure:

sp_adduser [@loginame=] "account" [, [@name_in_db=] "gebruikersnaam"] [, [@grpname=] "rolnaam"]

Met de opgeslagen procedure kunt u een Windows NT-account aan een gebruikersnaam toewijzen:

sp_grantdbaccess [@login=] 'account' [, [@name_in_db=]'gebruikersnaam']

De gebruiker die een object in de database aanmaakt (tabel, opgeslagen procedure, weergave) wordt de eigenaar ervan. Objecteigenaar(databaseobjecteigenaar dbo) heeft alle toegangsrechten tot het object dat hij heeft gemaakt. Voordat een gebruiker een object kan maken, moet de database-eigenaar (dbo) de gebruiker de juiste rechten verlenen. Volledige naam Het gemaakte object bevat de naam van de gebruiker die het heeft gemaakt.

Objecteigenaar heeft niet speciaal wachtwoord of speciale toegangsrechten. Hij heeft impliciet de volledige controle, maar moet expliciet toegang verlenen aan andere gebruikers.

Met SQL Server kunt u het eigendom van de ene gebruiker naar de andere overdragen met behulp van de volgende procedure:

sp_changeobjectowner [@objname=] 'objectnaam' [@newowner=] 'eigenaar_naam'

Met een rol kunt u gebruikers die dezelfde functies uitvoeren in één groep samenbrengen.

SQL Server implementeert twee soorten standaardrollen: op serverniveau en op databaseniveau. Bij het installeren van SQL Server worden vaste serverrollen aangemaakt (bijvoorbeeld sysadmin met het recht om alle functies van de SQL-server uit te voeren) en vaste databaserollen (bijvoorbeeld db_owner met het recht volledige toegang naar de database of db_accessadmin met het recht om gebruikers toe te voegen en te verwijderen). Te midden van vaste rollen database is er een publieke rol die dat heeft speciaal doel omdat de leden ervan allemaal gebruikers zijn die toegang hebben tot de database.

U kunt elk SQL Server-account (inloggen) of Windows NT-account in elke serverrol opnemen.

Met databaserollen kunt u gebruikers combineren in één administratieve eenheid en ermee werken als gewone gebruiker. U kunt toegangsrechten tot databaseobjecten toewijzen aan een specifieke rol, waardoor alle leden van die rol automatisch dezelfde rechten krijgen.

De databaserol kan SQL Server-gebruikers, SQL Server-rollen en Windows NT-gebruikers omvatten.

Verschillende acties met betrekking tot de rol worden uitgevoerd met behulp van speciale procedures:

  • een nieuwe rol creëren:

    sp_addrole [@rolename=] "rolnaam" [, [@eigenaarnaam=] "eigenaar_naam"]

  • een gebruiker aan een rol toevoegen:

    sp_addrolemember [@rolename=] "rolnaam", [@membername=] "gebruikersnaam"

  • een gebruiker uit een rol verwijderen:

    sp_droprolemember [@rolename=] "rolnaam", [@membername=] "gebruikersnaam"

  • een rol verwijderen:

    sp_droprole [@rolename=] "rolnaam"

Controle van gegevenstoegang

Het definiëren van rechten in een taalstandaard

Elk DBMS moet een mechanisme ondersteunen dat ervoor zorgt dat alleen gebruikers met de juiste machtigingen toegang krijgen tot de database. De SQL-taal bevat GRANT- en REVOKE-instructies die zijn ontworpen om tabellen in een database te beschermen. Het beschermingsmechanisme is gebaseerd op het gebruik gebruikers-ID's, eigendomsrechten en privileges die hun zijn verleend.

Gebruikers-ID is een veelgebruikte SQL-identificatie die wordt gebruikt om een ​​databasegebruiker te identificeren. Aan elke gebruiker moet een eigen ID worden toegewezen, toegewezen door de databasebeheerder. Om duidelijke veiligheidsredenen gebruikers-ID meestal geassocieerd met een wachtwoord. Elke SQL-instructie die door het DBMS wordt uitgevoerd, wordt namens een gebruiker uitgevoerd. Gebruikers-ID bepaalt naar welke databaseobjecten een gebruiker kan verwijzen en welke bewerkingen op die objecten hij mag uitvoeren.

Elk object dat in de SQL-omgeving wordt gemaakt, heeft een eigen eigenaar, die in eerste instantie de enige persoon is die op de hoogte is van het bestaan ​​ervan van dit voorwerp en heeft het recht om er alle handelingen mee uit te voeren.

Privileges, of rechten, zijn acties waartoe een gebruiker het recht heeft om uit te voeren met betrekking tot een bepaalde databasetabel of -weergave. De SQL-standaard definieert de volgende reeks rechten:

  • SELECT – het recht om gegevens uit de tabel te selecteren;
  • INSERT – het recht om nieuwe rijen in de tabel in te voegen;
  • UPDATE – het recht om gegevens in de tabel te wijzigen;
  • DELETE – het recht om rijen uit de tabel te verwijderen;
  • REFERENTIES – het recht om te verwijzen naar kolommen van de gespecificeerde tabel in beschrijvingen van vereisten voor ondersteuning van gegevensintegriteit;
  • GEBRUIK – het recht om domeinen, validaties en karaktersets te gebruiken.

INSERT- en UPDATE-rechten kunnen worden beperkt tot specifieke kolommen in een tabel, in welk geval de gebruiker alleen de waarden van die kolommen mag wijzigen. Op dezelfde manier kan het privilege REFERENCES exclusief worden toegepast op individuele kolommen van een tabel, waardoor hun namen kunnen worden gebruikt in zoals CHECK- en FOREIGN KEY-clausules die zijn opgenomen in de definitie van andere tabellen, terwijl het gebruik van andere kolommen verboden is. voor soortgelijke doeleinden.

Wanneer een gebruiker de instructie CREATE TABLE gebruikt om create nieuwe tafel, hij wordt automatisch de eigenaar ervan en ontvangt ten opzichte van haar volledige set privileges die andere gebruikers aanvankelijk niet hebben. Om ze toegang te verlenen, moet de eigenaar expliciet de benodigde rechten verlenen, wat gebeurt met behulp van de GRANT-instructie.

Door een weergave aan te maken met behulp van de CREATE VIEW-instructie, wordt de gebruiker automatisch de eigenaar van die weergave en beschikt hij tevens over volledige rechten. Om een ​​weergave te maken hoeft de gebruiker alleen het recht SELECT te hebben voor alle tabellen die erin zijn opgenomen, en het recht REFERENTIES voor alle kolommen waarnaar wordt verwezen in de definitie van deze weergave. De gebruiker krijgt alleen de rechten INSERT, UPDATE en DELETE voor de gemaakte weergave als hij over de overeenkomstige rechten beschikt voor alle tabellen die in de weergave worden gebruikt.

Rechten verlenen aan gebruikers

Hiervoor wordt de GRANT-instructie gebruikt het verlenen van privileges tegen benoemde databaseobjecten voor gespecificeerde gebruikers. Het wordt meestal gebruikt door de tafeleigenaar toegang verlenen aan andere gebruikers. De GRANT-verklaring heeft het volgende formaat:

<предоставление_привилегий>::= SUBSIDIE (<привилегия>[,...n] | ALLE PRIVILEGES) ON objectnaam TO (<идентификатор_пользователя>[,...n]| OPENBAAR) [MET SUBSIDIEOPTIE]

Parameter<привилегия>vertegenwoordigt:

<привилегия>::= (SELECT | VERWIJDEREN | INSERT [(kolomnaam[,...n])] | UPDATE [(kolomnaam[,...n])]) | REFERENTIES [(kolomnaam[,...n])] | GEBRUIK)

Omwille van de eenvoud kunt u dit specificeren in de GRANT-verklaring trefwoord ALL PRIVILEGES , waardoor de opgegeven gebruiker alles kan hebben bestaande privileges zonder dat u ze hoeft op te sommen. Bovendien kan deze verklaring het trefwoord PUBLIC bevatten, betekenis toegang verlenen van het opgegeven type, niet alleen voor alle bestaande gebruikers, maar ook voor iedereen die later in de database wordt gedefinieerd.

De parameter objectnaam kan worden gebruikt als de naam van een databasetabel, weergave, domein, tekenset, controle.

Met de WITH GRANT OPTION hebben gebruikers gespecificeerd in de GRANT-verklaring het recht om alles over te dragen mits ze met betrekking tot het gespecificeerde privilegeobject over te dragen aan andere gebruikers, die op hun beurt precies hetzelfde recht zullen krijgen om hun bevoegdheden over te dragen. Als deze parameter niet is opgegeven, kan de ontvanger van het privilege zijn rechten niet overdragen aan andere gebruikers. Op deze manier kan de eigenaar van een object duidelijk bepalen wie toegang heeft tot het object en welke rechten hem worden verleend.

Rechten intrekken die aan gebruikers zijn verleend

In SQL-taal voor privileges intrekken, mits aan gebruikers via de GRANT-instructie, wordt de REVOKE-instructie gebruikt. Met deze operator kunnen alle of sommige van de eerder door de opgegeven gebruiker verkregen rechten worden ingetrokken. De REVOKE-instructie heeft het volgende formaat:

<отмена_привилегий>::= INTREKKEN (<привилегия>[,...n] | ALLE PRIVILEGES) ON objectnaam FROM (<идентификатор_пользователя>[,...n]| OPENBAAR)

Het trefwoord ALLE PRIVILEGES betekent dat voor opgegeven gebruiker alle privileges worden ingetrokken, mits hem eerder door de gebruiker die binnenkwam deze exploitant. Met de optionele GRANT OPTION FOR-clausule kunnen alle privileges die in de oorspronkelijke GRANT-instructie van WITH GRANT OPTION zijn doorgegeven, worden overschreven, ongeacht de privileges zelf.

Als het trefwoord RESTRICT in de instructie is opgegeven, kan de opdracht REVOKE alleen slagen als de in de instructie genoemde bevoegdheden er niet voor zorgen dat andere gebruikers zogenaamde "behouden" bevoegdheden hebben. De CASCADE-optie verwijdert alle rechten die anders bij andere gebruikers zouden blijven.

"Behouden" privileges zijn de privileges die worden behouden door de gebruiker aan wie ze ooit zijn toegekend met behulp van de GRANT OPTION-parameter.

Omdat de aanwezigheid van een privilege noodzakelijk is om bepaalde objecten te maken, samen met de verwijdering ervan, kunt u het recht verliezen door het gebruik waarvan dit of dat object is gemaakt (dergelijke objecten worden "verlaten" genoemd). Als de REVOKE-instructie kan resulteren in verlaten objecten (zoals views), wordt het recht ingetrokken, tenzij het trefwoord CASCADE wordt opgegeven. Als het trefwoord CASCADE in de instructie voorkomt, worden DROP-instructies automatisch uitgegeven voor alle gedropte objecten die optreden wanneer de oorspronkelijke REVOKE-instructie wordt uitgevoerd.

Rechten die door andere gebruikers aan de opgegeven gebruiker zijn verleend, kunnen niet worden beïnvloed door de REVOKE-instructie. Als een andere gebruiker een bepaalde gebruiker ook een verwijderbaar privilege heeft verleend, behoudt de opgegeven gebruiker het recht op toegang tot de bijbehorende tabel. Stel bijvoorbeeld dat gebruiker A en gebruiker E de machtiging INSERT hadden voor de tabel Product. Gebruiker A heeft INSERT-bevoegdheid verleend aan gebruiker B voor de Product-tabel, waarbij hij WITH GRANT OPTION opgeeft (stap 1). Gebruiker B heeft dit recht overgedragen aan gebruiker C (stap 2). Vervolgens ontving gebruiker C het van gebruiker E (stap 3). Vervolgens heeft gebruiker C het genoemde recht verleend aan gebruiker D (stap 4). Wanneer gebruiker A privilege intrekt INSERT voor gebruiker B, kan voor gebruiker C niet ongedaan worden gemaakt omdat hij deze eerder van gebruiker E heeft ontvangen. Als gebruiker E dit privilege niet aan gebruiker C had verleend, zou het verwijderen van het privilege van gebruiker B het effect hebben van: trapsgewijs verwijderen rechten voor gebruikers C en D (zie Tabel 17.1).

Implementatie van toegangsrechten tot databaseobjecten in de MS SQL Server-omgeving

Categorieën van rechten in de MS SQL Server-omgeving

Bij het verbinden met SQL Server alles mogelijke acties gebruikers worden gedefinieerd door de rechten (privileges, machtigingen) die zijn verleend aan hun account, groep of rol waartoe zij behoren.

Rechten kunnen worden onderverdeeld in drie categorieën:

  • rechten om toegang te krijgen tot objecten;
  • rechten om opdrachten uit te voeren;
  • impliciete rechten.
Tabel 17.1.
Gebruiker AGebruiker BGebruiker CGebruiker DGebruiker E
SUBSIDIE-INSERT OP Product NAAR B MET SUBSIDIEOPTIE Het verkrijgen van het recht
Rechten verkrijgen van B. Het verkrijgen van het recht van E SUBSIDIE-INSERT OP Product NAAR C MET SUBSIDIE-OPTIE
SUBSIDIEBIJVOEGSEL OP Item AAN D Het verkrijgen van het recht
INTREK INSERT OP Product NAAR B CASCADE Annulering van rechtenVoorbehoud van rechtenVoorbehoud van rechtenVoorbehoud van rechten

Voor het werken met gegevens en het uitvoeren van opgeslagen procedures is een toegangsklasse vereist die wordt genoemd rechten om toegang te krijgen tot objecten databases. Objecten betekenen tabellen, tabelkolommen, weergaven, opgeslagen procedures.

Voor diverse voorwerpen toepassen verschillende setjes toegangsrechten daartoe:

  • SELECT, INSERT, UPDATE, DELETE, REFERENTIES – voor een tabel of weergave;
  • SELECT, UPDATE – voor een specifieke kolom van een tabel of weergave;
  • UITVOEREN – voor opgeslagen procedures en functies.

Met het INSERT-recht kunt u nieuwe rijen in een tabel of weergave invoegen. Dit recht wordt alleen verleend op tabel- of weergaveniveau; het kan niet op kolomniveau worden uitgegeven.

Het UPDATE-recht wordt verleend op tabelniveau, waardoor u alle gegevens daarin kunt wijzigen, of op het niveau van een individuele kolom, waardoor u de gegevens alleen binnen de grenzen ervan kunt wijzigen.

Met het DELETE-recht kunt u rijen uit een tabel of weergave verwijderen. Dit recht wordt alleen verleend op tabel- of weergaveniveau, maar kan niet worden verleend op kolomniveau.

Het SELECT-recht maakt gegevensselectie mogelijk en kan zowel op tabelniveau als op het niveau van een individuele kolom worden uitgegeven.

Het REFERENTIES-recht biedt de mogelijkheid om naar te verwijzen opgegeven voorwerp. Met betrekking tot tabellen: maakt het mogelijk om te creëren vreemde sleutels, verwijzend naar de primaire sleutel of unieke kolom van deze tabel.

Het verlenen van rechten

Voor beheer gebruikersmachtiging voor toegang tot objecten databaseopdracht wordt gebruikt:

<предоставление_привилегий>::= SUBSIDIE ( ALLE [ PRIVILEGES] |<привилегия>[,...n]) ( [(kolomnaam [,...n])] ON ( tabelnaam | weergavenaam) | ON (tabelnaam | weergavenaam ) ([kolomnaam [,...n])] | AAN (opgeslagen_procedurenaam | externe_procedurenaam)) TO (gebruikersnaam | groepsnaam | rolnaam) [,...n]

Parameter<привилегия>

<привилегия>::= (SELECT | VERWIJDEREN | INSERT | BIJWERKEN | UITVOEREN | REFERENTIES )

De optie MET GRANT OPTIE helpt de gebruiker aan wie u rechten verleent, om andere gebruikers toegangsrechten tot het object te verlenen. Het gebruik ervan vereist speciale zorg, omdat de eigenaar de controle over het apparaat verliest het verlenen van rechten voor toegang tot andere gebruikers. Het is het beste om de kring van gebruikers die deze mogelijkheid hebben, te beperken rechtentoewijzing beheren.

Optionele parameter AS (groepsnaam | rolnaam) Hiermee kunt u de deelname van de gebruiker aan een rol specificeren die daarin voorziet het verlenen van rechten andere gebruikers.

Het enige toegangsrecht dat aan een opgeslagen procedure kan worden verleend, is het recht om deze uit te voeren (EXECUTE). Daarnaast kan de eigenaar van de opgeslagen procedure uiteraard de code ervan bekijken en wijzigen.

U kunt een functie het recht verlenen om deze uit te voeren, maar ook het recht REFERENTIES, waardoor het mogelijk wordt de functie te associëren met de objecten waarnaar deze verwijst. Een dergelijke binding voorkomt veranderingen in de structuur van objecten die tot verstoring van de functie zouden kunnen leiden.

Machtigingen om SQL-opdrachten uit te voeren

Deze klasse rechten bepaalt de mogelijkheid om objecten in de database en de database zelf te maken en back-upprocedures uit te voeren. U kunt de volgende opdracht gebruiken om te verstrekken rechten om opdrachten uit te voeren SQL:

<предоставление_права_выполнения>::= SUBSIDIE (ALLE |<команда>

Parameter<команда>is de volgende structuur:

<команда>::= (DATABANK MAKEN | TABEL MAKEN | WEERGAVE MAKEN | STANDAARD MAKEN | REGEL MAKEN | PROCEDURE MAKEN | BACK-UP DATABASE | BACK-UPLOG | ALLES )

U kunt dus het recht verlenen om een ​​database, tabel, weergave, standaard, regel, opgeslagen procedure, databaseback-up en transactielogboek te maken, of u kunt alle bovenstaande rechten in één keer verlenen.

Impliciete rechten

Voor sommige acties is geen expliciete toestemming vereist en deze zijn standaard beschikbaar. Deze acties kunnen alleen worden uitgevoerd door leden van serverrollen of eigenaren van objecten in de database.

Impliciete rechten worden niet rechtstreeks aan de gebruiker verleend; deze worden alleen onder bepaalde omstandigheden verleend. Een gebruiker kan bijvoorbeeld alleen eigenaar worden van een databaseobject als hij het object zelf maakt of als iemand anders het eigendom van zijn object aan hem overdraagt. De eigenaar van het object krijgt dus automatisch rechten om alle acties met het object uit te voeren, inclusief toegang verlenen aan het object aan andere gebruikers. Deze rechten worden nergens gespecificeerd; alleen het feit dat u het object bezit, stelt u in staat alle acties uit te voeren.

Toegang weigeren

SQL Server-beveiliging heeft een hiërarchische structuur en omvat daarom databaserollen rekeningen en Windows NT-groepen, SQL Server-gebruikers en -rollen. De gebruiker kan op zijn beurt meerdere rollen vervullen en tegelijkertijd verschillende toegangsrechten hebben verschillende rollen. Wanneer een van de rollen van de gebruiker toestemming heeft om toegang te krijgen tot gegevens, heeft de gebruiker automatisch dezelfde rechten. Als de noodzaak zich echter voordoet, kan de gebruiker de toegang tot gegevens of opdrachten worden ontzegd, waarna alle toegangsrechten die hem op enig niveau van de hiërarchie zijn verleend, worden ingetrokken. Dit zorgt ervoor dat toegang geweigerd blijft, ongeacht de machtigingen die op een hoger niveau zijn verleend.

Voor toegang weigeren

<запрещение_доступа>::= ONTKENNEN (ALLE | |<привилегия>[,...n]) ( [(kolomnaam [,...n])] ON ( tabelnaam | weergavenaam) | ON (tabelnaam | weergavenaam ) [kolomnaam [,...n])] | ON (opgeslagen_procedurenaam | externe_procedurenaam)) TO (gebruikersnaam | groepsnaam | rolnaam) [,...n]

Met de CASCADE-parameter kunt u niet alleen rechten intrekken van specifieke gebruiker, maar ook voor al degenen aan wie hij soortgelijke rechten verleende.

Om de uitvoering van SQL-opdrachten te verbieden, gebruikt u de volgende operator:

<запрещение_выполнения>::= ONTKENNEN (ALLE |<команда>[,...n]) TO (gebruikersnaam | groepsnaam | rolnaam) [,...n]

Impliciete toegangsweigering

Impliciete afwijzing leuk vinden toegang weigeren met het verschil dat het alleen opereert op het niveau waarop het is gedefinieerd. Als de gebruiker zich op een bepaald niveau bevindt de toegang wordt impliciet geweigerd, kan hij deze nog steeds op een ander niveau van de hiërarchie verkrijgen door lidmaatschap van een rol met kijkrechten. Standaard wordt de toegang tot gebruikersgegevens impliciet geweigerd. Voor impliciete toegangsweigering Het commando dat wordt gebruikt voor databaseobjecten is:

<неявное_отклонение_доступа>::= INTREKKEN (ALLE [ PRIVILEGES]| |<привилегия>[,...n]) ( [(kolomnaam [,...n])] ON ( tabelnaam | weergavenaam) | ON (tabelnaam | weergavenaam ) [kolomnaam [,...n])] | AAN (opgeslagen_procedurenaam | externe_procedurenaam)) AAN | FROM (gebruikersnaam | groepsnaam | rolnaam)[,...n]

Voor impliciete afwijkingmachtigingen om opdrachten uit te voeren Het gebruikte SQL-commando is het volgende:

<неявное_отклонение_разрешения>::= INTREKKEN (ALLE |<команда>[,...n]) FROM (gebruikersnaam | groepsnaam | rolnaam)[,...n]

De betekenis van de parameters is vergelijkbaar met de parameters van de GRANT- en DENY-opdrachten. De parameter GRANT OPTION FOR wordt gebruikt wanneer het nodig is om het recht in te trekken, mits met de parameter WITH GRANT OPTION van het GRANT-commando. De gebruiker behoudt de toestemming om toegang te krijgen tot het object, maar verliest de mogelijkheid om die toestemming aan andere gebruikers te verlenen.

Toegangsconflicten

Machtigingen, mits rollen of groepen worden overgenomen door hun leden. Hoewel de gebruiker dat misschien wel doet toegang verleend Door lidmaatschap van de ene rol kan het een rol op een ander niveau verboden worden om op een object in te spelen. In dit geval ontstaat er toegangsconflict.

Wanneer opgelost toegang tot conflicten SQL Server wordt geleid door het volgende principe: toestemming voor toegang verlenen heeft de laagste prioriteit, en toegang weigeren- de hoogste. Dit betekent dat gegevens alleen expliciet toegankelijk zijn. verstrekken bij afwezigheid toegang weigeren op elk ander niveau van de beveiligingshiërarchie. Als er niet expliciet toegang wordt verleend, kan de gebruiker niet met de gegevens werken.

Voorbeeld 17.1. Maak een nieuwe database aan, een nieuwe gebruiker voor deze database, en geef hem alle rechten.

Aanmaak door de beheerder van een nieuwe -- database CREATE DATABASE basa_user -- creatie van een nieuwe gebruiker met -- naam UserA en wachtwoord '123' -- de standaarddatabase voor -- gebruiker UserA zal een database zijn -- genaamd basa_user. sp_addlogin "UserA", "123", "basa_user" -- ga naar de database basa_user GEBRUIK basa_user -- voeg aan de huidige database -- (basa_user) een gebruiker toe met de naam -- userA sp_adduser "UserA" -- geef de gebruiker userA -- in de database basa_user alle rechten GRANT ALL TO UserA Voorbeeld 17.1. Creatie nieuwe basis

data, een nieuwe gebruiker voor deze database, waardoor hij alle rechten krijgt. Voorbeeld 17.2.

Rollen gebruiken.

Laten we de stud-rol maken en twee gebruikers user1 en user2 in deze rol opnemen:

sp_addrole "stud" sp_addrolemember "stud", "gebruiker1" sp_addrolemember "stud", "gebruiker2"

Laten we rechten verlenen aan de stud-rol en rechtstreeks aan gebruiker2:

GRANT SELECT, INSERT ON Product TO stud GRANT SELECT, INSERT ON Product TO user2

Na het uitvoeren van deze opdrachten kunnen gebruikers gebruiker1 en gebruiker2 de opdrachten uitvoeren om een ​​record te selecteren en toe te voegen aan de Producttabel.

Laten we het recht om in de Producttabel in te voegen voor de rol van hengst opschorten:

HERROEP INVOEGSEL OP Product NAAR stud

Na het uitvoeren van het vorige commando verliest gebruiker1 het recht om een ​​record in te voegen, en gebruiker2 behoudt dit recht, aangezien hem het invoegrecht expliciet wordt verleend.

Laten we de opdracht uitvoeren

WEIGEREN INVOEGEN OP Product NAAR stud.

Na het uitvoeren van deze opdracht wordt beide gebruikers het recht ontzegd om in de Producttabel in te voegen.

Toegangsrechten (machtigingen) om met geodatabases te werken worden geconfigureerd door vooraf geconfigureerde rollen toe te wijzen aan gebruikers en groepen. Het account of de groep is in dit geval het Windows-account dat de gebruiker identificeert, en de rollen bepalen de machtigingen voor de acties die de gebruiker kan uitvoeren.

  • De vooraf geconfigureerde rollen en mogelijke toegangsrechten worden hieronder vermeld:
  • Geen: er is geen toegang verleend tot de geodatabase of geodatabase-gegevensset.
  • Alleen lezen – Gebruiker kan gegevens bekijken en selecteren.
  • Lezen/schrijven: de gebruiker kan nieuwe datasets in een geodatabase lezen, schrijven en maken, of kan bestaande datasets lezen en schrijven.
  • Serverbeheerder – De gebruiker die de databaseserver beheert.

Machtigingen zijn cumulatief. Als u een beheerder bent op databaseserverniveau, bent u ook een geodatabasebeheerder. Als u een geodatabasebeheerder bent, heeft u automatisch lees-/schrijfrechten voor alle datasets in die geodatabase.

Hieronder wordt elk niveau beschreven waarop machtigingen kunnen worden toegewezen.

Toegangsrechten op databaseserverniveau

Machtigingen op databaseserverniveau kunnen alleen worden geconfigureerd voor de serverbeheerder; de gebruiker is een serverbeheerder of niet.

Tijdens het post-installatieproces dat het SQL-exemplaar configureert Server-express Om geodatabases op te slaan wordt een Windows-account toegevoegd aan de databaseserver. Op dit punt wordt aan het account de rol van serverbeheerder toegewezen. De machtigingen voor de databaseserver zijn vervolgens toegankelijk via het contextmenu van de databaseserver in ArcGIS for Desktop.

De serverbeheerder kan de volgende taken uitvoeren:

  • Databaseservergebruikers toevoegen en verwijderen.
  • Beheer geodatabases en beveiligingsinstellingen.
  • Geodatabases maken en verwijderen.
  • Geodatabases koppelen en losmaken.
  • Maak een back-up van geodatabases en herstel deze.
  • Update geodatabases.
  • Geodatabases comprimeren (Compress).
  • Update statistieken en indexen in de geodatabase.
  • Verklein de geodatabase.
  • Start, stop en pauzeer de databaseserver.

Normaal gesproken heeft u één databaseserverbeheerder.

Hieronder ziet u een voorbeeld van het dialoogvenster Machtigingen voor databaseservers. Aan het ROCKETJAY\har-account is de rol Serverbeheerder toegewezen.

Machtigingen op geodatabaseniveau

Machtigingen op geodatabaseniveau worden toegewezen via het geodatabasecontextmenu wanneer u toegang krijgt via de map Databaseservers in de catalogusstructuur.

Toegangsrechten op dit niveau worden in eerste instantie verleend aan de serverbeheerder en worden beheerd op basis van rollen. Mogelijke rollen die aan een gebruiker kunnen worden toegewezen:

  • Alleen-lezen – Met deze toestemming kan de gebruiker gegevens uit elke tabel in de geodatabase selecteren.
  • Lezen/schrijven: gebruikers aan wie de machtiging Lezen/schrijven is toegewezen, kunnen alle bestaande gegevens in een geodatabase selecteren en bewerken en kunnen nieuwe geodatabase-elementen maken, zoals functieklassen. Als aan een gebruiker de machtiging Lezen/Schrijven is verleend op geodatabaseniveau, kunt u de machtigingen niet wijzigen op gegevenssetniveau. Deze worden automatisch ingesteld op Lezen/Schrijven.
  • Beheerder: Gebruikers aan wie de rol Beheerder is toegewezen, zijn alleen beheerders van die geodatabase. Dit betekent dat de gebruiker lees-/schrijfrechten heeft op alle datasets en de geodatabase, en deze rechten kunnen niet worden ingetrokken op datasetniveau. U kunt bijvoorbeeld het tabblad Machtigingen niet op gegevenssetniveau openen en Alleen-lezen-machtigingen selecteren voor de klassenset voor die gebruiker.

    Naast lees-/schrijftoegang tot datasets kunnen geodatabasebeheerders administratieve bewerkingen uitvoeren op die geodatabases, inclusief het maken ervan reservekopieën, het comprimeren van geodatabases, het bijwerken van geodatabases en het beheren van gebruikersrechten voor geodatabases. (Er moeten gebruikers aanwezig zijn op de databaseserver; geodatabasebeheerders kunnen geen nieuwe gebruikers toevoegen aan de databaseserver.)

  • Een andere optie voor de gebruikersrol is Geen. In dit geval heeft de gebruiker geen toegangsrechten tot gegevens op geodatabaseniveau; de gebruiker kan echter wel de machtiging Alleen-lezen of Lezen/Schrijven krijgen voor specifieke gegevenssets, zoals beschreven in de sectie Machtigingen voor gegevenssets. Geen is het standaardmachtigingsniveau voor gebruikers die aan de databaseserver worden toegevoegd.

In het volgende voorbeeld van het dialoogvenster Geodatabase-machtigingen is het account ROCKETAY\pllama toegevoegd aan de rol Lezen/Schrijven voor de historische geodatabase.

Om te ontvangen aanvullende informatie Zie Databaseserverbeheerders voor informatie over server- en geodatabasebeheerders.

Machtigingen op gegevenssetniveau

Gegevenssetmachtigingen zijn beschikbaar via de opdracht Toegangsrechten (privileges) V contextmenu gegevensset, waarmee het dialoogvenster Machtigingen wordt geopend. Mogelijke machtigingen voor gegevenssets die beschikbaar zijn via het dialoogvenster Machtigingen op gegevenssetniveau zijn Alleen-lezen, Lezen/schrijven en Geen.

Een gebruiker heeft mogelijk geen machtigingen op geodatabaseniveau (hun machtigingen worden ingesteld op Geen), maar ze kunnen wel lees-/schrijf- of alleen-lezen machtigingen krijgen voor specifieke gegevenssets in de geodatabase. U kunt analistengebruikers bijvoorbeeld alleen-lezen toegang geven tot gegevens in een geodatabase, maar hen schrijf-/leestoegang geven tot één featureklasse in de geodatabase.

Wanneer een gebruiker een set gegevens maakt, zoals een tabel, wordt die gebruiker de eigenaar ervan en wordt de tabel beschouwd als onderdeel van het schema van de gebruiker. Gebruikersrechten voor datasets in een geodatabase kunnen alleen worden geconfigureerd door de eigenaar van de dataset.

Als de serverbeheerder datasets aanmaakt, zijn deze eigendom van de dbo-gebruiker en worden ze opgeslagen in het dbo-schema. Een serverbeheerder kan dus machtigingen verlenen aan elke set klassen in het dbo-schema, maar alleen aan objecten in het dbo-schema. Met andere woorden: de serverbeheerder kan geen toestemming verlenen voor gegevens die eigendom zijn van niet-beheerders.

Hier volgt een voorbeeld van het dialoogvenster Machtigingen voor de gegevensset van de brandweerkazernes:


Zie voor meer informatie over het proces van het toewijzen van rollen aan gebruikers en het verlenen en intrekken van machtigingen

Hallo allemaal! Nu zullen we naar voorbeelden kijken gebruikers aanmaken en verwijderen Microsoft DBMS SQL-server zowel met behulp van Transact-SQL-instructies als met behulp van de omgeving Managementstudio.

Het proces voor het aanmaken van gebruikers in MS SQL Server bestaat uit twee fasen:

  1. Een SQL Server-aanmelding maken. Deze naam is vereist zodat de gebruiker verbinding kan maken met het SQL Server-exemplaar;
  2. Een databasegebruiker aanmaken. In dit geval verlenen we de gebruikers al machtigingen voor databaseobjecten.

Opmerking! Als SQL-server en voor mijn voorbeeld zal ik de Microsoft SQL Server 2012 Express-versie gebruiken. Op deze SQL-server is een testdatabase Test aangemaakt.

Een login aanmaken op MS SQL Server

Voordat u begint met het aanmaken van een login voor de SQL-server, moet u beslissen over de authenticatiemethode. Er zijn twee opties:

  1. Windows-verificatie is wanneer een login een gebruiker kan identificeren als een Windows-account of als lid van een Windows-groep ( inclusief domeinaccounts en groepen);
  2. SQL Server-verificatie. In dit geval bestaat de login alleen in SQL Server.

Laten we een paar voorbeelden bekijken van het maken van een login op een SQL-server. We doen dit eerst met behulp van SQL Server Management Studio en vervolgens met Transact-SQL.

Een login aanmaken met behulp van SQL Server Management Studio

We starten Management Studio en vervolgens vinden we in de objectbrowser het item “ Veiligheid", open het met een plusteken, klik met de rechtermuisknop op het item " Inloggen" en selecteer het item " Inloggen aanmaken».

Laten we vervolgens als voorbeeld een testaanmelding maken met SQL Server-authenticatie. Wij geven een inlognaam op, maken een wachtwoord aan en bevestigen deze. We kunnen ook verschillende opties controleren, zoals het gebruik van wachtwoordbeleid, standaarddatabase, standaardtaal en andere.

Klik dan op de knop “ OK", waarna de login TestLogin wordt aangemaakt. Standaard voornaam login wordt ingeschakeld en heeft de rechten van de "openbare" serverrol.

Een aanmelding maken met Transact-SQL

Om een ​​login in Transact-SQL aan te maken, moet u de query-editor in Management Studio openen en uitvoeren de volgende instructies (het doet precies hetzelfde als onze acties hierboven grafische interface Managementstudio).

AANMELDEN MET WACHTWOORD=N"Pa$$w0rd", DEFAULT_DATABASE=, DEFAULT_LANGUAGE=[Russisch], CHECK_EXPIRATION=UIT, CHECK_POLICY=ON GO

Met andere woorden, om een ​​login op de SQL-server aan te maken, wordt de instructie gebruikt AANMELDEN.

Een SQL Server-aanmelding maken met Windows-verificatie

Ga als volgt te werk om een ​​Windows-geauthenticeerde aanmelding te maken: SQL-instructie:

AANMELDEN VANAF WINDOWS MET DEFAULT_DATABASE=, DEFAULT_LANGUAGE=[Russisch];

  • GAAN
  • Computernaam\NaamGebruiker is de computernaam\Gebruikersnaam;
  • VANUIT WINDOWS - geeft aan dat Windows-authenticatie zal worden gebruikt;
  • WITH DEFAULT_DATABASE= – standaarddatabase;

DEFAULT_LANGUAGE=[Russisch] – standaardtaal.

Inloggen in MS SQL Server in- en uitschakelen

Indien nodig kunt u de aanmelding tijdelijk uitschakelen om te voorkomen dat de gebruiker toegang krijgt tot de server.

Schakel ALTER LOGIN uit TestLogin UITSCHAKELEN;

--ALTER LOGIN inschakelen TestLogin INSCHAKELEN;

Een databasegebruiker aanmaken in MS SQL Server Zodra de login is aangemaakt, kunt u doorgaan met het aanmaken van een databasegebruiker, d.w.z. het toewijzen van een gebruiker aan een login. Studio- en T-SQL-taal.

Een databasegebruiker aanmaken met Management Studio

Open Management Studio, zoek de gewenste database in de objectbrowser en open deze met het plusteken. Gebruik dan ook het plusteken om het item “ Veiligheid" en klik op de map " Gebruikers"Klik met de rechtermuisknop en selecteer" Maak een gebruiker aan».

Voer vervolgens de gebruikersnaam en inlognaam in die bij deze gebruiker horen ( in mijn geval zijn de namen hetzelfde), en geef ook het standaardschema aan ( indien niet gespecificeerd, wordt het dbo-schema toegewezen).

Laten we ook meteen de rol opmerken die de database zal spelen deze gebruiker. Op de pagina " Lidmaatschap"Ik heb het vakje naast de rol aangevinkt db_datareader, d.w.z. de gebruiker heeft rechten om gegevens uit gebruikerstabellen te lezen. Klik op " OK».

Een databasegebruiker maken met Transact-SQL

Met de volgende T-SQL-instructie wordt een databasegebruiker gemaakt ( standaardschema dbo) en wijst deze de rol db_datareader toe, d.w.z. doet hetzelfde als wat we iets eerder deden in de grafische interface van Management Studio.

GEBRUIK Test GA GEBRUIKER AANMAKEN VOOR INLOGGEN MET DEFAULT_SCHEMA= GA WIJZIG ROL LID TOEVOEGEN;

GAAN De instructies dus MAAK GEBRUIKER AAN

gebruikt om een ​​databasegebruiker aan te maken.

Databasegebruiker verwijderen en inloggen in MS SQL Server Om een ​​databasegebruiker te verwijderen kunt u schrijven eenvoudige SQL

instructies bijvoorbeeld

DROP GEBRUIKER Testinloggen; Of gebruik de grafische tool Management Studio, b.v. in de Objectbrowser, in de benodigde databank gegevens selecteren " Beveiliging -> Gebruikers " en klik met de rechtermuisknop op de gebruiker die u wilt verwijderen en selecteer "».

Opmerking! Verwijderen

Gebruikers die beveiligbare objecten bezitten, kunnen niet uit de database worden verwijderd. U kunt ook de grafische tool van Management Studio gebruiken ( die. “Beveiliging -> Logins” klik met de rechtermuisknop op de naam en klik vervolgens op “Verwijderen”

) en Transact-SQL-instructie, d.w.z.

Opmerking! DROP LOGIN TestLogin; De huidige login kan niet worden verwijderd, net zomin als een login die eigenaar is van een beveiligbaar object of taak op serverniveau. SQL-agent Server. Bovendien kan de login niet worden verwijderd als de op dit moment

de gebruiker is verbonden met het systeem. Het is mogelijk om een ​​login te verwijderen zonder de bijbehorende databasegebruiker te verwijderen, maar dit zal resulteren in gebruikers die niet langer aan hun accounts zijn gekoppeld.

Dat is alles wat ik hoop, het materiaal was nuttig voor je, doei! Deze lezing bevat materiaal over het beheren van de toegang tot SQL Server-databases. In het bijzonder gaat het over het beheren van databasegebruikers, het inschakelen van de gastgebruiker, het creëren van databaserollen, het verlenen van databasemachtigingen en het toevoegen van een databasegebruiker.

Het bieden van toegang tot een instance van SQL Server alleen zal niet voldoende zijn voor een applicatie die toegang tot gegevens nodig heeft. Nadat u toegang heeft verleend tot een exemplaar van SQL Server, moet u toegang verlenen tot specifieke databases. Toegang tot databases wordt verleend door databasegebruikers toe te voegen en logins toe te wijzen aan databasegebruikers. Elke login wordt gekoppeld aan een databasegebruiker voor elke database waartoe die login toegang nodig heeft. Elke databasegebruiker wordt aan slechts één login toegewezen, met uitzondering van de dbo-databasegebruiker.

Opmerking. In eerdere versies van SQL Server kon u de opgeslagen systeemprocedure sp_addalias gebruiken om meerdere aanmeldingen toe te wijzen aan één databasegebruiker. Dit kan ook worden gedaan in SQL Server 2005. Deze functie wordt echter niet aanbevolen omdat deze verouderd is en mogelijk wordt verwijderd in toekomstige versies van het programma.

Het verlenen van toegang tot databases

Databasegebruikers zijn deelnemers op databaseniveau. Alle logins behalve serverrol sysadmin moet worden toegewezen aan gebruikers, die op hun beurt worden toegewezen aan de database waartoe ze toegang nodig hebben. Rol leden systeembeheerder toegewezen aan gebruikers-dbo in alle serverdatabases.

Een databasegebruiker toevoegen

U kunt een databasegebruiker toevoegen met behulp van de instructie CREATE USER. In het volgende Transact-SQL-codevoorbeeld worden de login Peter en de bijbehorende gebruiker gemaakt in de Adventure Works-database:

  • Maak een inlognaam aan Peter

    AANMELDEN Peter MET WACHTWOORD = "Tyu87IOR0";

  • GEBRUIK AdventureWorks; GAAN

  • Voeg een databasegebruiker toe, Peter, die is toegewezen aan de Peter-login in de AdventureWorks-database.

    MAAK GEBRUIKER AAN Peter VOOR INLOGGEN Peter;

Databasegebruikers beheren

Met de volgende verklaring kunt u controleren of de huidige login toegang heeft tot de database:

SELECTEER HAS_DBACCESS("AdventureWorks");

Om informatie over databasegebruikers te verkrijgen, kunt u de catalogusweergave sys.database_principals gebruiken.

Als u de toegang van een gebruiker tot de database tijdelijk wilt uitschakelen, kunt u de CONNECT-machtiging voor die gebruiker intrekken. In het volgende voorbeeld wordt de CONNECT-machtiging voor de gebruiker Peter ingetrokken:

  • Wijzig de verbindingscontext naar de AdventureWorks-database.

    GEBRUIK AdventureWorks; GAAN

  • Trek de verbindingstoestemming voor Peter in AdventureWorks in.

    VERBINDEN MET Peter INTREKKEN;

U kunt een gebruiker uit een database verwijderen met behulp van de DROP USER-instructie.

Waarschuwing. SQL Server 2005 staat het verwijderen van een gebruiker die eigenaar is van een databaseschema niet toe. Circuits worden later in deze lezing besproken.

Beheer van gebruikers die het contact zijn kwijtgeraakt met hun logins

Zwevende aanmeldingen zijn databasegebruikers die niet zijn gekoppeld aan een aanmelding in het huidige exemplaar van SQL Server. In SQL Server 2005 kan het voorkomen dat een gebruiker niet meer aan een aanmelding is gekoppeld als de daaraan gekoppelde aanmelding wordt verwijderd. Om informatie over dergelijke gebruikers te krijgen, kunt u de volgende code uitvoeren:

  • Wijzig de verbindingscontext naar de AdventureWorks-database.

    GEBRUIK AdventureWorks; GAAN

  • Genereer een rapport over alle databasegebruikers die hun inlogverbinding hebben verloren

    UITVOEREN sp_change_users_login @Action="Rapport";

Met SQL Server 2005 kunt u een gebruiker maken die niet aan een aanmelding is gekoppeld door de clausule WITHOUT LOGIN te gebruiken. Gebruikers die zijn aangemaakt met behulp van de WITHOUT LOGIN-clausule worden niet beschouwd als verweesde login-gebruikers. Deze functie kan erg handig zijn in een situatie waarin u de uitvoeringscontext van een module moet wijzigen. De uitvoeringscontext wordt later in deze lezing besproken. In het volgende voorbeeld wordt een gebruiker gemaakt zonder bijbehorende aanmelding.

  • Wijzig de verbindingscontext naar de AdventureWorks-database.

    GEBRUIK AdventureWorks; GAAN

  • Maak een databasegebruiker Paul aan in de AdventureWorks-database
  • zonder de inlognaam ermee te matchen dit exemplaar SQL Server-exemplaar

    GEBRUIKER AANMAKEN Paul ZONDER INLOGGEN;

Schakel de gastgebruiker in

Wanneer een login zonder toegewezen gebruiker probeert verbinding te maken met de database, probeert SQL Server verbinding te maken met behulp van de gastgebruiker. De gastgebruiker wordt standaard gemaakt zonder machtigingen te verlenen. U kunt de gastgebruiker inschakelen door hem CONNECT-toestemming te verlenen, zoals hieronder weergegeven.

  • Wijzig de verbindingscontext naar de AdventureWorks-database.

    GEBRUIK AdventureWorks; GAAN

  • Wij verlenen de gastgebruiker toegang tot de AdventureWorks-database.

    VERLEEN VERBINDING MET Gast;

    Overweeg zorgvuldig of u de gastgebruiker wilt inschakelen, omdat uw databaseomgeving hierdoor aan extra risico wordt blootgesteld.

Databasemachtigingen verlenen

Nadat u databasegebruikers hebt aangemaakt, moet u de machtigingen voor die gebruikers beheren. Dit kan worden gedaan door gebruikers toe te voegen aan databaserollen of door gedetailleerde machtigingen aan de gebruikers zelf te verlenen.

Databaserollen maken

Databaserollen zijn niveauleden databases. Rollen databases kunnen worden gebruikt om machtigingen toe te wijzen database groep gebruikers. In SQL Server 2005 wordt standaard een set databaserollen gemaakt. Deze standaardrollen staan ​​in de tabel. 3.1.

Tabel 3.1.
Standaarddatabaserollen Rol van de databank
"Beschrijving db_accessadmin
Kan de toegang tot de database controleren db_backupoperator Kan presteren back-up
db_datareader databases
Kan gegevens uit alle gebruikerstabellen lezen db_datawriter
Kan gegevens in de tabellen van alle gebruikers toevoegen, verwijderen en bijwerken db_ddladmin
Kan alle DDL-opdrachten in de database uitvoeren db_denydatareader
Kan geen gegevens in gebruikerstabellen lezen db_denydatawriter
Kan geen gegevens in gebruikerstabellen toevoegen, verwijderen of bijwerken db_eigenaar
Kan alle configuratie- en onderhoudsactiviteiten uitvoeren db_securityadmin
Kan het lidmaatschap van de databaserol wijzigen en machtigingen beheren publiek

De bijzondere rol van de database. Alle gebruikers behoren tot de publieke rol. Gebruikers uit de openbare groep kunnen niet worden verwijderd.

  • Wijzig de verbindingscontext naar de AdventureWorks-database.

    GEBRUIK AdventureWorks; GAAN

  • U kunt databaserollen toevoegen als u gebruikers wilt groeperen op basis van specifieke machtigingsvereisten. In het volgende codevoorbeeld wordt een databaserol met de naam Auditors gemaakt en wordt de gebruiker Peter aan deze nieuwe rol toegevoegd.

    Maak de rol Auditors in de AdventureWorks-database.

  • CREËER ROL Auditors; GAAN

    Voeg de gebruiker Peter toe aan de rol Auditors

UITVOEREN sp_addrolemember "Auditors", "Peter";

Databaserollen beheren Na het invullen van het verzoek systeem functie

  • Wijzig de verbindingscontext naar de AdventureWorks-database.

    GEBRUIK AdventureWorks; GAAN

  • IS_MEMBER, kunt u controleren of de huidige gebruiker tot een databaserol behoort. In het volgende voorbeeld controleren we of de huidige gebruiker tot de databaserol db_owner behoort.

    Controleren of de huidige gebruiker tot de rol db_owner behoort
    Er zijn nogal wat soortgelijke artikelen, maar ik heb dit artikel vooral voor mezelf geschreven, waarbij ik me concentreerde op de aantekeningen die mogelijke problemen beschrijven. Ik hoop dat het artikel nuttig zal zijn voor anderen.
    1. Installeer het 1C-platform

    Open na de installatie het beheerpaneel voor 1C enterprise-servers en zie dat dit leeg is.
    U moet een server maken: Open console root->Central 1C: Enterprise 8.2-servers. Klik er met de rechtermuisknop op en selecteer Nieuw. Maak een keuze uit het vervolgkeuzemenu Centrale server 1C Onderneming 8.2. Voor ons gaat een venster met 4 velden open:
    Protocol- protocol waarmee gegevens worden verzonden
    Naam- de naam van de computer op het netwerk waarop de server zich bevindt
    IP-poort- poort waarop de server toegankelijk is
    Beschrijving-beschrijving. niet nodig.

    Opmerking:
    Als het 1C-platform op een computer is geïnstalleerd en de computer vervolgens is hernoemd, kunt u deze niet bereiken, omdat het 1C-platform een ​​zeer slim platform is en tijdens de installatie de computernaam in bepaalde bestanden opslaat, maar dan: wanneer de computernaam verandert, zal het platform niet langer herschrijven Deze bestanden zijn nodig voor de werking van de RAGENT 1C-service (deze kunnen worden gevonden in actieve services, via het Windows Server-beheerpaneel). Dit alles wijst erop dat u, om deze bestanden te hernoemen, de RAGENT-service moet stoppen. De bestanden zelf bevinden zich op de volgende plaatsen:
    C:\Program Files (x86)\1cv82\srvinfo\srvribrg
    C:\Program Files (x86)\1cv82\srvinfo\reg_1541\1CV8Reg
    We openen deze bestanden met Kladblok en veranderen de vroegere naam van de machine handmatig in de huidige. Bewaar en start RAGENT.

    Laten we terugkeren naar de instellingen:
    Nadat het venster met de velden is ingevuld, klikt u op OK en als alles correct is gedaan, hebben we een server met de naam van de machine waarop deze zich bevindt.

    Dus. De server draait en nu moeten we een database op de MYSQL-server maken en deze verbinden met de 1C-server. Er zijn verschillende manieren - hier zal ik de eenvoudigste beschrijven:
    Open op de enterprise 1C-server onze nieuw gemaakte server door op de + naast de servernaam en op het item "INFORMATIEBASES" te klikken, klik met de rechtermuisknop en selecteer Nieuw->Informatiebasis
    Er wordt een venster voor ons geopend met de volgende velden:

    Naam-de naam van onze database op de 1C-server (in de regel schrijven veel mensen het hetzelfde als in het databaseveld, om niet in de war te raken)
    Beschrijving-beschrijving
    Veilige verbinding-standaard uitgeschakeld. je kunt het inschakelen, maar dan neemt de belasting van de server toe
    Databaseserver-als de server op dezelfde server staat, geef dan (lokaal) precies zo aan tussen haakjes, zo niet op deze server, geef dan het server-ip aan
    DBMS-type-Selecteer MS SQL-type
    Database-naam van de database op de MS SQL-server. Als er geen database is, kunt u een van de selectievakjes aanvinken en deze wordt aangemaakt
    Databaseservergebruiker-Specificeer de gebruiker die u tijdens de installatie hebt aangemaakt, of maak deze aan individuele gebruiker in MS SQL, geef het rechten en registreer het hier.
    Gebruikerswachtwoord databaseserver-wachtwoord
    Sta de uitgifte van licenties door de 1C Enterprise-server toe-kies ja
    Land-Kies een land
    Datumverschuiving-instellen op 0
    Selectievakje “Creëer een database bij afwezigheid”-hetzelfde selectievakje voor het maken van een database als deze niet bestaat
    Selectievakje “Stel het blokkeren van geplande taken in”- vink het vakje niet aan

    Klik op OK en we zien dat de servers zijn geconfigureerd en op het tabblad “Informatiebases” staan informatiebasis onder de naam die we haar gaven.

    Om Back-up in te stellen, moeten we openen Microsoft SQL BEHEERSTUDIO.
    Voer uw login in en maak verbinding met de server.
    Voor ons ligt de beheerdersconsole. IN Objectverkenner open een tabblad Beheer en daarin zien wij Onderhoudsplannen. Hier zullen we de BackUP maken die we nodig hebben. Zoals gewoonlijk, klik met de rechtermuisknop op Onderhoudsplannen -> nieuw onderhoudsplan. Het tabblad Subplan verschijnt in het hoofdvenster, en onder Objectverkenner er verschijnt een ander venster Gereedschapskist waarin is genest Onderhoudsplannen Taken. Daarin zullen we kiezen Back-up maken van databasetaak door er 2 keer op te klikken. Het wordt overgebracht naar het hoofdvenster. We klikken er 2 keer op en er verschijnt een venster voor ons, opnieuw met velden waarin we kunnen kiezen welke Back Up we willen doen, welke BackUp-basis we moeten gebruiken en waar we deze willen opslaan. Nadat u de instellingen hebt voltooid, klikt u op Ok.

    Opmerking:
    Wanneer u Back-up opslaat in een netwerkmap (u zult het pad trouwens handmatig moeten registreren, omdat het mapselectievenster alleen lokale bronnen ziet), houd dan de toegangsrechten bij en houd tegelijkertijd bij welke soort van de authenticatie die u heeft ingeschakeld MySQL-server omdat authenticatie niet gebaseerd is op inloggegevens Windows-records, en voor een interne DBMS-gebruiker en als u de AD-server hebt ingeschakeld, zal BackUp een fout genereren wanneer u probeert uit te voeren, omdat het dit namens de interne DBMS-gebruiker zal doen en AD het nergens anders doorlaat dan lokale computer.

    Nadat u het pad, de basis en het BackUp-type hebt geconfigureerd, moet u het schema configureren. Om dit te doen, staat er in het hoofdvenster boven de taak die u hebt gemaakt een bord Subplan. Aan het einde van het bord (aan de rechterkant) staat een kalenderpictogram. Door erop te klikken komt u bij de roosterinstellingen. Door de selectievakjes van de dagen aan te vinken en de tijd in te stellen, stelt u een schema op. Door te dubbelklikken op het opgeroepen veld Subplan u kunt de naam van de taak wijzigen. Nadat u alles hebt geconfigureerd, gaat u naar Bestand-> Bewaar alles. Na het opslaan verschijnt er in Onderhoudsplannen een Taak met jouw naam die je aan BackUp hebt gegeven.

    Controleer na het voltooien van de installatie de werking. Om dit te doen, klikt u met de rechtermuisknop op de gemaakte taak en voert u Exicute uit.

    Opmerking:
    Als Exicute een foutmelding geeft, lees dan de foutmeldingen die Studio u geeft, en controleer allereerst of u actief bent SQL-serveragent. Hij is het die de taken uitvoert en de Exicute-functie wendt zich tot hem om de taken te voltooien. Als het niet actief is, mislukt de uitvoeringspoging. Om te zien of de agent in Studio in Object Explorer wel of niet werkt, gaat u naar het tabblad SQL Server-agent. Als het opsommingsteken een rode cirkel met een kruis heeft, betekent dit dat de agent is tegengehouden. U kunt het starten door er met de rechtermuisknop op te klikken en de optie START in het contextmenu te selecteren.