Skapa och ta bort användare i Microsoft SQL Server. Användarhantering i MS SQL Server-miljö

I den här artikeln kommer jag att prata om hur man lägger till nya eller befintliga databaser till 1C:Enterprise-servern 8.3 (för andra plattformsversioner - 8.1 Och 8.2 stegen är desamma). Alternativ för att lägga till en infobas både från och genom 1C:Enterprise-serveradministrationsprogrammet (i Windows OS-familjen) kommer att övervägas. Några frågor om infobasadministration i ett kluster av 1C:Enterprise-servrar berördes också.

1. Lägga till en infobas från startfönstret för 1C:Enterprise

Låt oss skapa en ny databas på 1C:Enterprise-servern från en typisk konfiguration. För att göra detta, starta "1C:Enterprise" och i startfönstret klicka på " Lägg till…» för att lägga till en infobas.

Guiden Lägg till infobas startar, välj objektet " Skapande av en ny infobas» ställ in motsvarande omkopplare och tryck på « Ytterligare».

I listan över installerade konfigurationsmallar, välj mallen vi behöver och klicka igen " Ytterligare».

Ange namnet på databasen, hur den kommer att visas i listan över infobaser, ange platstyp " På 1C:Enterprise-servern» och tryck på « Ytterligare».

På nästa sida måste du ange parametrarna för infobasen som ska skapas, nämligen:

(I det här exemplet väljs inställningarna i enlighet med installationsinställningarna för 1C:Enterprise-servern som används i artikeln)

  • Serverklusternamn 1C:Enterprise— som regel matchar det nätverksnamnet på den dator där 1C:Enterprise-servern är installerad (serverns centrala kluster);
  • Namnet på databasen som ska skapas i klustret— namnet med vilket infobasen kommer att nås. Måste vara unik inom ett givet kluster;
  • Säker anslutning- inaktivera som standard;
  • Typ av DBMS som databasen kommer att lagras på- i detta exempel MS SQL Server;
  • Databasservernamn- som regel består det av nätverksnamnet på datorn där databasservern är installerad och namnet på serverinstansen (om någon), åtskilda av tecknet "\";
  • Databasnamn på databasservern- För enkelhetens skull kommer vi att följa regeln att databasnamnet måste matcha namnet på infobasen i klustret. Dessutom, vid användning av MS SQL Server, kan det första tecknet i databasnamnet endast vara en bokstav i det latinska alfabetet eller tecknet "_", efterföljande tecken kan endast vara en bokstav i det latinska alfabetet, en siffra eller tecknen "_" och "&", namnet måste vara unikt inom en given databasserverinstans och inte överstiga 63 tecken. Om databasen redan finns på servern kommer den aktuella databasen att användas, om inte, " Skapa en databas om den inte finns”, kommer en ny databas att läggas till databasservern.
  • Databasanvändare- en DBMS-användare som kommer att bli ägare till databasen på servern i händelse av att skapa en ny databas eller ha rättigheter att arbeta med en befintlig;
  • Användarlösenord— Lösenord för den användare för vars räkning tillgång till databasen kommer att ske.
  • Datumförskjutning- 0 eller 2000. Den här parametern anger antalet år som kommer att läggas till datum när de lagras i Microsoft SQL Server-databasen och subtraheras när de hämtas. Faktum är att DATATIME-typen som används av Microsoft SQL Server låter dig lagra datum i intervallet från 1 januari 1753 till 31 december 9999. Om det, när man arbetar med en infobas, kan vara nödvändigt att lagra datum som föregår den nedre gränsen för detta intervall, bör datumförskjutningen sättas till 2000. Dessutom, om applikationen använder ackumuleringsregister eller redovisningsregister (och troligen kommer det att göra det vara så), även i "fältförskjutning" måste datum sättas till 2000.
  • Ställ in blockering av schemalagda jobb— Genom att ställa in flaggan kan du förbjuda exekvering av schemalagda uppgifter på servern för denna infobas. Den bör ställas in för att skapa testinfobaser, där utförandet av rutinuppgifter inte bär någon praktisk belastning.

Efter att ha ställt in alla parametrar för infobasen, klicka på " Ytterligare».

Och slutligen, ange startalternativen för databasen som skapas och klicka på " Redo» för att starta processen med att skapa en ny infobas. Detta kommer att skapa en ny infobas på 1C:Enterprise-servern, om det behövs, skapa en ny databas på databasservern och ladda data från konfigurationsmallen.

Om alla ovanstående åtgärder slutfördes framgångsrikt, kommer guiden att slutföra sitt arbete, och vi kommer att se den nyskapade databasen i listan över infobaser i 1C:Enterprise-startfönstret.

2. Lägga till en infobas från administrationskonsolen för 1C:Enterprise-servrar

Låt oss nu lägga till ytterligare en infobas till serverklustret, men genom " Administration av 1C:Enterprise-servrar"(preliminärt). Du kan hitta det:

Nåväl, i alla fall kan snapin-modulen startas genom att köra filen " 1CV8 Servers.msc" finns i installationskatalogen 1C:Enterprise i underkatalogen " allmänning».

Om snäppet " " lanseras på samma dator där 1C: Enterprise-servern är installerad, sedan i trädet till vänster, i grenen med nätverksnamnet för den aktuella datorn, bör vi se detta serverkluster som heter " lokalt kluster". Öppna fliken " Informationsbaser"vi kommer att se alla infobaser i det här serverklustret (till exempel databasen som skapades genom 1C:Enterprise-startfönstret i föregående steg). För att lägga till en ny infobas, högerklicka på den här fliken, välj " Skapa» — « Informationsbas».

Inställningsfönstret för infobasen som skapas öppnas. Listan över parametrar är densamma som beskrivs ovan i punkt 1 i denna handbok. När du har fyllt i alla parametrar klickar du på " OK» för att starta processen med att skapa en ny infobas. Detta kommer att skapa en ny infobas på 1C:Enterprise-servern och vid behov skapa en ny databas på databasservern.

Om alla ovanstående åtgärder slutfördes framgångsrikt stängs parameterfönstret och vi kommer att se den nyskapade databasen i listan över infobaser för det aktuella klustret.

Och om du går till programmet "onsdag SQL Server Management Studio» och anslut till den aktuella instansen av MS SQL Server kan du se databaserna som skapats i de föregående stegen.

3. Infobasegenskaper

För att se eller ändra inställningarna för en specifik infobas måste du använda " Administration av 1C Enterprise-servrar", i listan över infobaser, högerklicka på den och välj " Egenskaper". För att autentisera i administrationskonsolen måste du använda administratörer i motsvarande infobaser. Med andra ord, denna kontroll liknar autentisering när du ansluter till en infobas via en 1C:Enterprise-klient.

Som du kan se har listan över parametrar som redan är bekanta för oss lagts till:

  • Blockering av sessionsstart aktiverad— en flagga som låter dig aktivera blockering av starten av sessioner med infobasen, om flaggan är inställd, då:
    • Befintliga sessioner kan fortsätta att köras, upprätta nya anslutningar och starta bakgrundsjobb;
    • Det är förbjudet att etablera nya sessioner och kopplingar till infobasen.
  • Start Och Slutet— Sessionsblockeringens varaktighet;
  • Meddelande— text som kommer att ingå i felmeddelandet när du försöker upprätta en anslutning till en blockerad infobas;
  • Tillståndskod— sträng som ska läggas till parametern /UC när du startar 1C:Enterprise för att ansluta till infobasen trots blockering;
  • Låsalternativ— godtycklig text som kan användas i konfigurationer för olika ändamål.
  • Extern sessionshantering— en sträng som beskriver parametrarna för webbtjänsten för extern sessionshantering;
  • Obligatorisk användning av extern styrning— om flaggan är inställd, om den externa sessionshanteringswebbtjänsten inte är tillgänglig, uppstår ett fel och anslutning till infobasen kan inte upprättas;
  • Säkerhetsprofil— om profilnamnet anges, börjar den tillämpade lösningen att fungera med hänsyn till de begränsningar som den specificerade säkerhetsprofilen ålägger;
  • Säkerhetsprofil för säkert läge- samma som säkerhetsprofilen, men begränsningarna kommer att läggas på fragment av den tillämpade lösningen som fungerar i säkert läge.

När du har ändrat de nödvändiga parametrarna klickar du på " Tillämpa» för att spara ändringar eller « OK» för att spara och stänga fönstret för infobasegenskaper.

4. Lägga till en befintlig infobas till listan över infobaser i 1C:Enterprise-startfönstret

Och slutligen måste vi bara lägga till den som skapades med " Administration av 1C Enterprise-servrar» infobas till listan över infobaser i 1C:Enterprise-startfönstret. Varför klickar vi på det här fönstret? Lägg till…" och i den startade guiden för att lägga till en infobas / grupp, välj lämpligt objekt och klicka på " Ytterligare».

Ange namnet på infobasen så som den kommer att visas i listan, välj platstyp för infobasen " På 1C:Enterprise-servern» och tryck igen « Ytterligare».

Ange adressen till 1C:Enterprise-serverklustret och namnet på infobasen som den är specificerad i detta kluster. Tryck " Ytterligare».

Och slutligen, ställ in infobasens startparametrar och klicka på " Redo» för att slutföra guiden.

Vår bas dök upp i listan över infobaser. Du måste förstå att detta är en tom (ren) databas, och då bör du ladda data till den från en mall eller från en förladdad datafil.

Hjälpte den här artikeln dig?

Termen "databasserver" används för att hänvisa till hela DBMS baserat på klient-server-arkitekturen, inklusive server- och klientdelarna. Sådana system är utformade för att lagra och ge tillgång till databasen. Vanligtvis lagras en databas helt i en nätverksnod och underhålls av en server i databasservern, vilket är en enkel och billig uppskattning av distribuerade databaser, eftersom en delad databas är tillgänglig för alla användare av det lokala nätverket. Åtkomst till databaser från ett applikationsprogram eller en användare görs med hjälp av klientdelen av systemet. SQL är huvudgränssnittet mellan klient- och serverdelar.

SQL-språket är den nuvarande DBMS-gränssnittsstandarden i öppna system. Genom att vidta försiktighetsåtgärder vid programmering kan du skapa informationssystem för mobila applikationer i klassen SQL-servrar.

Databasservrar, vars gränssnitt är baserat på SQL-språket, har sina egna fördelar och nackdelar.

Fördelar: öppet standardgränssnitt, det vill säga klientdelen av alla orienterade DBMS kan fungera med vilken SQL-server som helst, oavsett när företaget utvecklade den.

Nackdelar. Med ett högt gränssnitt mellan klient- och serverdelarna av systemet fungerar för få DBMS-program på klientsidan. Detta är normalt om en station med låg effekt används på klientsidan. Men om klientkomponenten har tillräcklig kraft, blir det ofta nödvändigt att tilldela stora databashanteringsfunktioner till den. Avlasta servern, som i det här fallet är flaskhalsen i detta system. En av de korrekta riktningarna för DBMS är ett flexibelt konfigurerat system, där funktioner fördelas mellan klient- och användarsystem.

Fördelar med fjärranropsprotokoll

    Genom att använda fjärranropsmekanismen kan du omfördela funktioner mellan klient- och serverdelarna av systemen, eftersom det i texten till RPC-programmet inte skiljer sig från det vanliga anropet. Därför kan vilken komponent som helst i systemet placeras både på serversidan och på klientsidan.

    RPC-mekanismen döljer skillnaderna mellan interagerande datorer; ett fysiskt heterogent lokalt nätverk reduceras till ett logiskt homogent nätverk av interagerande komponenter. Som ett resultat av användningen finns det ingen anledning att på allvar oroa sig för ett engångsköp av kompatibla servrar och arbetsstationer.

Typiska fördelningar av funktioner mellan klienter och servrar

Typiskt idag, på DBMS-sidan, fungerar bara sådan mjukvara som inte har direktåtkomst till databasen, utan tillträder servern med hjälp av SQL-språket för detta.

I vissa fall är det nödvändigt att i klientdelen av systemet inkludera några funktioner för att arbeta med den lokala databascachen, d.v.s. med den del av den som används intensivt av klientapplikationsprogrammet. Med modern teknik kan detta endast göras genom att formellt skapa en lokal kopia av databasservrarna på klientsidan och behandla hela systemet som en uppsättning interagerande servrar. Å andra sidan, ibland skulle det vara önskvärt att överföra en stor del av applikationssystemet till serversidan, om skillnaden i kapaciteten mellan klientarbetsstationerna och servern är stor, kan detta göras med hjälp av fjärrproceduranrop, förutsatt att serverprogramvaran tillåter det.

Kraven på hårdvara och mjukvara för klientdatorer och servicedatorer varierar beroende på vilken typ av system som används.

Om separationen mellan klienten och tjänstedelen är ganska stel, som i de flesta moderna DBMS, så bryr sig användarna som arbetar på stationerna inte vilken hårdvara och operativsystem som körs på servern, förutsatt att det jämförs med den nya begäran flöde.

Om det kan finnas behov av en omfördelning av funktioner mellan klienten och servern, så spelar det ingen roll vilka systemoperationer som används.

Distribuerade databaser

Huvuduppgiften för ett distribuerat databashanteringssystem är att tillhandahålla medel för att integrera lokala databaser belägna i vissa noder i ett datornätverk så att användare som arbetar vid vilken nod som helst i nätverket har tillgång till alla databaser som en enda databas. När du gör det måste följande tillhandahållas:

1) enkel användning av systemet;

2) möjligheten till autonom funktion i händelse av brott mot nätverksanslutning;

Variationer av distribuerade system

Det finns homogena och heterogena databaser. I en homogen databas hanteras varje lokal databas av samma DBMS. I ett heterogent system kan lokala databaser till och med tillhöra olika datamodeller.

Problemet med att integrera icke-homogena SQL-orienterade system löses för närvarande mest framgångsrikt. Detta underlättas av standardiseringen av SQL-språket och gemensam efterlevnad.

Huvudmålet med projektet att skapa ett distribuerat databashanteringssystem kan formuleras enligt följande: det är nödvändigt att tillhandahålla medel för att integrera lokala databaser som finns i noderna i ett datornätverk så att en användare som arbetar i vilken nod som helst i nätverket har tillgång till till alla dessa databaser, så, som om de vore centraliserade, samtidigt som de tillhandahåller:

1) enkel användning av systemet;

2) möjligheten till autonom drift i händelse av fel på nätverksanslutning;

3) hög effektivitetsgrad.

För att lösa dessa problem togs ett antal nödvändiga designbeslut angående nedbrytningen av den ursprungliga frågan, det optimala valet av frågekörningsmetoden, konsekvent transaktionsexekvering, synkronisering, detektering och upplösning av distribuerade dödlägen, återställande av tillståndet för databaser efter olika typer av fel i nätverksnoder. Enkel användning av systemet uppnås på grund av det faktum att användare förblir i miljön för SQL-språket. Möjligheten att använda SQL ger insyn i platsen för data. Systemet känner automatiskt av den aktuella platsen för de dataobjekt som nämns i användarförfrågan. Samma applikationsprogram inklusive SQL-applikationen kan köras i olika nätverksnoder. Samtidigt, i varje nätverksnod, vid frågekompileringsstadiet, väljs den mest optimala frågeexekveringsplanen i enlighet med platsen för data i det distribuerade systemet. Att säkerställa nätverksnodernas autonomi kan säkerställas på följande sätt: varje lokal databas administreras oberoende av de andra, det är möjligt att ansluta nya användare autonomt, ändra versionen av den autonoma delen av systemet, etc. Systemet är utformat på ett sådant sätt att det inte kräver centraliserad objektnamn eller dödlägesdetektering.

Enskilda noder behöver inte ha global kunskap om de operationer som utförs i andra noder i nätverket. Arbetet med tillgängliga databaser kan fortsätta om enskilda nätverksnoder och kommunikationslinjer misslyckas. För att uppnå en hög grad av systemeffektivitet används två huvudtekniker. Först föregås exekveringen av en fråga av dess kompilering. Under denna process söks namnen på databasobjekt som används i frågan i den distribuerade katalogen och namnen ersätts med interna identifierare; kontrollera åtkomsträttigheterna för användaren från vilken kompileringen utförs för att utföra motsvarande operation på databaser och välja den mest optimala globala frågeexekveringsplanen, som sedan utsätts för nedbrytning och skickas i andra delar till lämpliga nätverksnoder, där den optimala lokala exekveringsplaner för frågekomponenterna väljs och generering av åtkomstmoduler i maskinkoder. Som ett resultat utförs många åtgärder vid kompileringsstadiet innan frågorna faktiskt exekveras. Ett applikationsprogram som bearbetas på detta sätt, inklusive SQL-satser, kan senare exekveras många gånger utan extra overhead.

För det andra är ett sätt att förbättra systemets effektivitet möjligheten att flytta fjärrrelationer till lokala databaser.

Distribuerad frågesammanställning

SQL-frågor kan kompileras innan de faktiskt körs. Sammanställning av frågor kan utföras vid förkompileringen av ett applikationsprogram skrivet i ett konventionellt konventionellt programmeringsspråk med inkludering av SQL-satser, eller under exekvering av transaktioner med en SQL-sats. Ur användarens synvinkel leder kompileringsprocessen till följande resultat: för varje SQL-sats genereras ett inbyggt program, vars anrop placeras i källapplikationens programtext, men i verkligheten är frågekompileringsprocessen mycket mer komplicerat på grund av de komplexa nätverksinteraktioner som krävs under själva genomförandet av transaktionen. Vi kommer att kalla nätverkets huvudnod den nod där processen att kompilera SQL-satser initieras, och ytterligare noder (de noder som är involverade i denna process under dess exekvering). På den mest grova nivån kan kompileringsprocessen delas upp i följande steg:

    I nätverkets huvudnod utförs en grammatisk analys av SQL-satsen med konstruktionen av en intern representation av frågan i form av ett träd. Baserat på information från den lokala katalogen för huvudnoden och fjärrkataloger för ytterligare noder, ersätts namnen på objekten som visas i begäran med deras systemidentifierare.

    Masternoden genererar en global frågeexekveringsplan som endast tar hänsyn till den ordning i vilken noderna interagerar när frågan faktiskt exekveras. Den globala planen visas i det korrekt transformerade frågeträdet.

    Om ytterligare noder är involverade i den globala frågeexekveringsplanen delas den upp i delar, som var och en kan köras i en nod. Till exempel lokal filtrering av en relation enligt ett givet villkor, där motsvarande delar av frågan skickas till motsvarande ytterligare noder.

I varje nod som deltar i den globala frågeexekveringsplanen, i huvudsak eller sekundär, utförs det sista steget av kompileringen. Detta steg inkluderar i huvudsak de två sista faserna av frågekompileringsprocessen: optimering och generering av inbyggda koder, rättigheterna för användaren på vars vägnar kompileringen utförs kontrolleras för att utföra lämpliga åtgärder. Databasvyerna bearbetas, den bearbetade delen av frågan optimeras lokalt i enlighet med tillgängliga index och koden genereras.

Åtkomsträttigheter (behörigheter) för att arbeta med geodatabaser konfigureras genom att tilldela förkonfigurerade roller till användare och grupper. Kontot eller gruppen i det här fallet är Windows-kontot som identifierar användaren, och rollerna styr behörigheter för de åtgärder som användaren kan utföra.

De förkonfigurerade rollerna och möjliga åtkomsträttigheter listas nedan:

  • Nej (Ingen) – Ingen åtkomst till geodatabasen eller geodatabasens datauppsättning har beviljats.
  • Endast läs - Användaren kan visa och välja data.
  • Läs/skriv - Användaren kan läsa, skriva och skapa nya datauppsättningar i geodatabasen, eller kan läsa och skriva till befintliga datauppsättningar.
  • Administratör (Admin) - En användare kan utföra administrativa uppgifter på en specifik geodatabas.
  • Serveradministratör - Användaren som hanterar databasservern.

Behörigheterna är kumulativa. Om du är en databasserveradministratör är du också en geodatabasadministratör. Om du är en geodatabasadministratör får du automatiskt läs-/skrivbehörigheter för alla datauppsättningar i den geodatabasen.

Varje nivå där behörigheter kan tilldelas beskrivs nedan.

Åtkomsträttigheter på databasservernivå

Åtkomsträttigheter på databasservernivå kan endast konfigureras för serveradministratören; användaren är antingen serveradministratör eller inte.

Under efterinstallationsprocessen, som konfigurerar SQL Server Express-instansen för att lagra geodatabaser, läggs ett Windows-konto till databasservern. Vid denna tidpunkt tilldelas kontot rollen Serveradministratör. Databasserverns behörigheter kan sedan nås från databasserverns snabbmeny i ArcGIS for Desktop.

Serveradministratören kan utföra följande uppgifter:

  • Lägg till och ta bort databasserveranvändare.
  • Hantera geodatabaser och säkerhetsinställningar.
  • Skapa och ta bort geodatabaser.
  • Bifoga och koppla bort geodatabaser.
  • Gör säkerhetskopior och återställ geodatabaser.
  • Uppdatera geodatabaser.
  • Utför geodatabaskomprimering (Compress).
  • Uppdatera statistik och index i geodatabasen.
  • Krympa geodatabasen.
  • Starta, stoppa och pausa databasservern.

Vanligtvis har du en databasserveradministratör.

Följande är ett exempel på dialogrutan Behörigheter för databasservrar. ROCKETJAY\har-kontot har tilldelats rollen som serveradministratör.

Privilegier på geodatabasnivå

Åtkomsträttigheter på geodatabasnivå tilldelas med hjälp av snabbmenyn för geodatabaser när de nås via mappen Databasservrar i Katalogträdet.

Åtkomsträttigheter på denna nivå kommer initialt att ges till serveradministratören och kommer att hanteras baserat på roller. Möjliga roller som kan tilldelas en användare:

  • Endast läs - Denna behörighet tillåter användaren att välja data från valfri tabell i geodatabasen.
  • Läs/skriv - Användare som har tilldelats läs/skrivbehörighet kan välja och redigera all befintlig data i geodatabasen och kan skapa nya element i geodatabasen, såsom funktionsklasser. Om en användare har beviljats ​​läs-/skrivbehörighet på geodatabasnivå kommer du inte att kunna ändra deras behörigheter på datauppsättningsnivå, de kommer automatiskt att ställas in på läs/skriva.
  • Administratör (Admin) - Användare som tilldelats rollen Administratör (Admin) är endast administratörer för den geodatabasen. Detta innebär att användaren har läs-/skrivbehörigheter till alla dataset och geodatabasen, och dessa rättigheter kan inte återkallas på datauppsättningsnivå. Du kommer till exempel inte att kunna öppna fliken Behörigheter på datauppsättningsnivå och välja skrivskyddade behörigheter på klassuppsättningen för den användaren.

    Förutom läs-/skrivåtkomst till datauppsättningar kan geodatabasadministratörer utföra administrativa operationer på geodatabaser, inklusive att skapa säkerhetskopior, komprimera geodatabaser, uppdatera geodatabaser och administrera geodatabas användarrättigheter. (Användare måste finnas på databasservern; geodatabasadministratörer kan inte lägga till nya användare till databasservern.)

  • Ett annat alternativ för användarrollen är Ingen. I detta fall kommer användaren inte att ha åtkomsträttigheter till data på geodatabasnivå; dock kan användaren beviljas läs- eller läs-/skrivrättigheter till specifika datamängder, enligt beskrivningen i avsnittet Behörigheter på datauppsättningsnivå. Ingen är standardåtkomstnivån för användare som läggs till på databasservern.

I följande exempel på dialogrutan Geodatabasbehörigheter läggs kontot ROCKETAY\pllama till i rollen Läs/skriv för den historiska geodatabasen.

För mer information om server- och geodatabasadministratörer, se Databasserveradministratörer .

Åtkomsträttigheter på datauppsättningsnivå

Datauppsättningsbehörigheter är tillgängliga via kommandot Åtkomsträttigheter (privilegier) på datamängdsmenyn, som öppnar dialogrutan Behörigheter. De möjliga datauppsättningsbehörigheterna som är tillgängliga via dialogrutan Behörigheter på datauppsättningsnivå är Endast läsning, Läs/Skriv och Ingen.

Användaren kanske inte har behörigheter på geodatabasnivå (deras behörigheter kommer att vara inställda på Ingen), men de kan beviljas läs/skriv- eller skrivskyddad åtkomst till specifika datamängder i geodatabasen. Du kan till exempel ge analytikeranvändare skrivskyddad åtkomst till data i geodatabasen, men ge dem skriv-/läsåtkomst till en funktionsklass i geodatabasen.

När en användare skapar en uppsättning data, till exempel en tabell, blir den användaren ägare och tabellen behandlas som en del av användarens schema. Användaråtkomsträttigheter till datauppsättningar i en geodatabas kan endast konfigureras av datauppsättningens ägare.

Om serveradministratören skapar datauppsättningar kommer de att ägas av dbo-användaren och lagras i dbo-schemat. Således kan en serveradministratör ge behörigheter till vilken uppsättning klasser som helst i dbo-schemat, men bara till objekt i dbo-schemat. Med andra ord kommer serveradministratören inte att kunna ge behörigheter till data som ägs av icke-adminanvändare.

Följande är ett exempel på dialogrutan Behörigheter för brandstationsdataset:


För att lära dig mer om processen att tilldela roller till användare och bevilja och återkalla behörigheter, se

Databaser (inklusive MySQL-systemet) är en enhet för att lagra information i form av tabeller. Så att utländska databaser inte är tillgängliga för absolut alla användare på servern, finns det ett system av användare för dessa databaser. Tillgång till vilken databas som helst kan tilldelas av administratören (eller en auktoriserad användare) till en annan användare, och den kan vara fullständig eller begränsad till viss del. Mer specifikt uttrycks denna grad av åtkomst i termer av privilegier ("rättigheter" eller "behörigheter").

Rättigheter för MySQL-användare

Det finns ett antal privilegier i MySQL-databassystemet som listas nedan med en beskrivning. De sista privilegierna är privilegier på administratörsnivå, som endast anges som referens. Fullständig information om rättigheter/privilegier finns i MySQL-utvecklardokumentationen:

SKAPA- låter dig skapa nya databaser och tabeller

SLÄPPA- låter dig ta bort databaser eller tabeller

FÖRA IN- låter dig lägga till rader i tabellen.

UPPDATERING- låter dig ändra innehållet i tabellrader. Ej att förväxla med ALTER, som låter dig ändra själva strukturen i tabeller (antal rader/kolumner, kolumntyper).

RADERA- motsatsen till INSERT - låter dig ta bort rader från tabellen.

ÄNDRA- låter dig ändra strukturen för tabeller. Kräver CREATE och INSERT-behörighet.

BIDRAG- låter dig tilldela specifika rättigheter till en specifik användare (välj även). Det är möjligt att ge/ta bort endast de rättigheter som förordnaren själv har.

LÅS BORD- låser tabellen under perioden för artificiella ändringar av den (administration), så att data inuti den inte kan ändras på sitt naturliga sätt (under arbetsflödet).

REFERENSER- låter dig skapa en relation mellan tabeller med främmande nyckel.

HÄNDELSE- ger rätt att skapa/ändra/ta bort uppgifter för schemaläggaren

TRIGGER- låter dig skapa/modifiera/ta bort triggers (bifogade till specifika tabeller) som, när du utför DELETE, UPDATE eller FÖRA IN vidta ytterligare åtgärder.

INDEX- privilegiet ger rätt att lägga till/ta bort index till (från) tabeller. Själva indexen tilldelas manuellt och gör det möjligt att spara tid på att söka efter rader.

SKAPA TILLFÄLLIGA BORD- låter dig skapa tillfälliga tabeller under sessionens varaktighet.

SKAPA VY- låter dig skapa en vy i form av en tabell som faktiskt inte existerar som en enda tabell och endast innehåller data från andra tabeller. Till exempel, i den här vyn kan du samla in viss grupperad data från tre tabeller (med SELECT-satsen) och i själva verket kommer den insamlade informationen bara att referera till data från dessa 3 tabeller och kommer också att vara en fackförening som inte behöver sin egen tabell.

VISA VY- låter dig kontrollera vilken fråga (vilka data den består av) som skapade en specifik vy specificerad med CREATE VIEW

SKAPA RUTIN- låter dig skapa en procedur, som är en uppsättning förberedda uppsättningar SQL-kommandon.

ÄNDRA RUTIN- låter dig ändra en procedur skapad med CREATE RUTIN.

KÖR- låter dig ringa färdiga procedurer.

FIL- ger läsåtkomst till vilken fil som helst på servern som MySQL själv har tillgång till, och tillgång till att skapa en fil i kataloger som MySQL har skrivåtkomst till.

SKAPA BORDSPLATS(admin) - låter dig skapa/ändra/ta bort tabellutrymmen. Detta utrymme i sig är logiskt och är inte relaterat till databasstrukturen eller schemat. Den deklarerar platsen för databasobjekt på fysiska medier och används för att optimera databassystemet.

SKAPA ANVÄNDARE(admin) - låter dig skapa/ändra/byta namn på/ta bort databasanvändare.

BEARBETA(admin) - ger tillgång till information om trådar (processer) som körs på servern.

OMBUD(admin) - låter dig logga in som användare under sken av en annan användare. Används av administratören för att kontrollera/felsöka åtkomsträttigheterna för den önskade användaren.

LADDA OM(admin) - Möjliggör användning av FLUSH-satsen, som tömmer MySQL-cachen

REPLIKATIONSKLIENT(admin) - låter dig utföra VISA MASTER STATUS, VISA SLAVSTATUS och VISA BINÄR LOGG operationer.

REPLIKATIONSSLAV(admin) - denna behörighet krävs för användare av en slavdatabasserver så att denna server kan ansluta till masterservern som en slav. Utan denna behörighet kommer standby-servrar inte att kunna begära databas- och tabelluppdateringar från huvudservern.

VISA DATABASER(admin) - låter dig köra SHOW DATABASES-satsen. Användare som inte har denna behörighet kommer bara att kunna se de databaser som de har några rättigheter till när de kör detta uttalande.

STÄNGA AV(admin) - Behörigheten tillåter dig att köra SHUTDOWN-satsen, som stänger av MySQL-servern.

SUPER(admin) - ett privilegium som ger rätt till många operationer:

  • låter dig avsluta processer som ägs av andra användare
  • ändra globala systemvariabler
  • aktivera/avaktivera loggning
  • utföra uppdateringar även med läsbehörigheter inställda för systemvariabler
  • starta/stoppa replikering på standby-servrar
  • etc.

ALLT(admin) - en användare som har fått detta privilegium tilldelas automatiskt alla rättigheter inom privilegienivån (möjliga privilegier i princip, i enlighet med sammanhanget för beviljande av privilegier). Endast privilegiet tilldelas inte BIDRAG I detta fall.

Tilldela behörigheter för MySQL-användare i värdkontrollpaneler

  • DirectAdmin
  • cPanel
  • ISPmanager
  • Webuzo

DirectAdmin

På huvudsidan för DirectAdmin från under användarnivån i menyn Ditt konto gå till avsnittet MySQL-hantering:

Här kan vi hur man skapar en ny användare för denna databas genom att gå till Skapa ny databasanvändare, och binda en befintlig till den. Det bör noteras att det inte finns något dedikerat användargränssnitt. Den är endast tillgänglig genom att gå igenom en databas. För att ge användaren rättigheter - följ länken ändra privilegier:

På privilegiesidan väljer du de privilegier som vi vill ge användaren till en specifik databas och sparar. Statusfältet kommer att påminna dig om vad och till vem rättigheterna tilldelas:

Efter det kommer du att omdirigeras till sidan för bekräftelse av spara. Allt, rättigheterna är utfärdade.

cPanel

På cPanels huvudsida måste vi hitta avsnittet Databas i det gå till MySQL-databaser:

Alla manipulationer med MySQL-databaser, databasanvändare och deras rättigheter utförs i denna meny.

Om vi ​​varken har en databas eller en användare, skapar vi dem i motsvarande avsnitt på sidan:

Kapitel Aktuella databaser kommer att uppdatera:

Skapa en användare:

Kapitel Nuvarande användare kommer att uppdatera:

För att tilldela rättigheter till en specifik användare till en specifik databas måste vi hitta avsnittet på sidan Lägg till användare i databasen och lägg till den önskade användaren till den nödvändiga databasen:

Efter att ha lagt till en användare i databasen öppnas en dialogruta för att tilldela privilegier:

All Rights-knappen motsvarar ALL-privilegiet som beskrivs i början av handledningen och kommer att tilldela alla möjliga rättigheter till användaren i samband med användarens tillhörighet till en specifik användargrupp på MySQL-servernivå.

Efter att ha bekräftat de gjorda ändringarna kommer du att omdirigeras till en sida som bekräftar att de angivna rättigheterna har beviljats, och avsnittet om MySQL-databasen och användarhanteringssidan kommer att uppdateras igen. Aktuella databaser:

Redo. Användaren tilldelas databasen.

ISPmanager Lite 5

När du loggar in på ISPmanager som användare behöver du gå till Instrument -> Databas från vänstermenyn.

Välj sedan önskad databas i databashanteringsgränssnittet som öppnas och gå till menyn Användare för att gå till användargränssnittet för databasen. Om det inte finns några databaser kan du skapa en ny genom att klicka på knappen Lägg till.

Det bör noteras att när du skapar en ny databas kommer det att vara möjligt att omedelbart skapa en ny användare som kommer att tilldelas denna databas. Eller så kan du välja en befintlig användare, som också automatiskt tilldelas denna databas.

I databashanteringsgränssnittet kommer vi att presenteras med en lista över alla användare av denna databas i det aktuella ISPmanager-kontot. För att redigera rättigheter måste du välja en specifik användare som vi tilldelar rättigheter och gå till menyn Förändra

Efter det kommer vi att se alla rättigheter som kan tilldelas den här användaren:

Som standard, när du skapar en användare och en databas, tilldelas alla rättigheter. Vi ändrar de vi behöver och sparar resultaten. Efter det kommer du att återgå till användarhanteringssidan för databasen.

Webuzo

Webuzo består av 2 paneler: admin och användare. Gå till användarpanelen och välj på huvudsidan Hantera databaser

På sidan som öppnas kan vi:

  • se lista över befintliga databaser [ Databas(er)];
  • skapa en ny databas [ Skapa databas];
  • se lista över befintliga databasanvändare [ Databasanvändare];
  • skapa en databasanvändare och tilldela den till en specifik databas [ Lägg till användare i databasen]

Om måldatabasen inte finns ännu, gå till Skapa databas och skapa en ny databas:

Men om måldatabasen redan finns, måste vi gå till i databashantering Lägg till användare i databasen och skapa en ny databasanvändare eller ange en befintlig för att binda till databasen:

När en användare läggs till i databasen öppnas ett nytt fönster som ber dig att tilldela behörigheter till den användaren. Vi väljer de rättigheter vi behöver och bekräftar ändringarna med knappen Skicka ändringar.

Om rättigheterna har ändrats framgångsrikt kommer inskriptionen att visas i det aktuella fönstret. Databasrättigheter uppdaterade. Uppdrag slutfört.

Säkerhetssystemet som används i SQL-språket beaktas. Allmänna regler för tillträdeskontroll beskrivs. Beskriver autentiseringslägen och komponenter i säkerhetsstrukturen (användare, databasroller), säkerhetssystemadministration (skapa och hantera konton, hantera användare och roller). Definitionen av användarrättigheter för åtkomst till databasobjekt ges. Implicita rättigheter, åtkomst nekad och implicit åtkomst nekad, samt åtkomst konflikter beaktas.

Databasanvändarhantering

stabilt system Användarhantering- erforderligt skick datasäkerhet lagras i alla relationella DBMS. SQL har inte ett enda standardkommando för skapande av användare databaser - varje implementering gör det på olika sätt. I vissa implementeringar har dessa specialkommandon vissa likheter, medan deras syntax i andra är väsentligt annorlunda. Men oavsett den specifika implementeringen är alla grundläggande principer desamma.

Användarhantering i MS SQL Server-miljö

Fundera över frågan skapande av användare i MS SQL Server-miljö.

Efter att ha utformat databasens logiska struktur, relationer mellan tabeller, integritetsbegränsningar och andra strukturer, är det nödvändigt att bestämma kretsen av användare som kommer att ha tillgång till databasen.

SQL Server-systemet har en tvånivåinställning för att begränsa åtkomst till data. På den första nivån är det nödvändigt att skapa den så kallade användarkonto(inloggning), vilket gör att han kan ansluta till själva servern, men inte automatiskt kommer åt databaserna. På den andra nivån måste du skapa en användarpost för varje SQL Server-databas baserat på kontot. Baserat på de rättigheter som tilldelats användaren som databasanvändare (användare) får hans inloggningsnamn (inloggning) tillgång till motsvarande databas. I olika databaser kan samma användares inloggning ha samma eller olika användarnamn med olika åtkomsträttigheter. Med andra ord med hjälp användarkonto en anslutning görs till SQL-servern, varefter dess åtkomstnivåer bestäms för varje databas separat.

I SQL-serversystemet finns ytterligare objekt - roller som bestämmer åtkomstnivån till SQL-serverobjekt. De är indelade i två grupper: tilldelade till användarkonton server och används för att begränsa åtkomst till databasobjekt.

Så på servernivå fungerar säkerhetssystemet med följande koncept:

  • autentisering;
  • Konto ;
  • inbyggda serverroller.

På databasnivå gäller följande begrepp;

  • databasanvändare;
  • fast databas roll;
  • beställnings- databasroll.

Autentiseringslägen

SQL Server erbjuder två lägen användarautentisering:

  • autentiseringsläge med Windows NT/2000;
  • blandat autentiseringsläge (Windows NT-autentisering och SQL Server-autentisering).

Säkerhetsadministration

För skapande av användare i MS SQL Server-miljö bör följande steg vidtas:

  1. Skapa i databas användarkonto, ange ett lösenord för det och ett standarddatabasnamn (sp_addlogin-procedur).
  2. Lägg till denna användare i alla nödvändiga databaser (sp_adduser-proceduren).
  3. Ge den lämpliga privilegier på varje databas (GRANT-kommando).

Skapa ett nytt konto kan göras med en systemlagrad procedur:

sp_addlogin [@login=] "konto" [, [@lösenord=] "lösenord"] [, [@defdb=] "default_database"]

Efter avslutad autentisering och mottagande kontoidentifierare (inloggnings-ID) användare anses registrerad och ges åtkomst till servern. För varje databas vars objekt den avser att komma åt, användarkonto(inloggning) är associerad med användaren (användaren) av en viss databas, vilket görs genom proceduren:

sp_adduser [@loginame=] "konto" [, [@name_in_db=] "användarnamn"] [, [@grpname=] "rollnamn"]

Den lagrade proceduren låter dig mappa ett Windows NT-konto till ett användarnamn:

sp_grantdbaccess [@login=] 'konto' [, [@name_in_db=]'användarnamn']

Användaren som skapar ett objekt i databasen (tabell, lagrad procedur, vy) blir dess ägare. Objektägare(databasobjektets ägare dbo) har full åtkomsträtt till objektet som det skapade. För att en användare ska kunna skapa ett objekt måste databasägaren (dbo) ge användaren lämpliga rättigheter. Det fullständiga namnet på objektet som skapas inkluderar namnet på användaren som skapade det.

Objektägare har inget speciellt lösenord eller speciella åtkomsträttigheter. Den har implicit full åtkomst, men måste uttryckligen ge åtkomst till andra användare.

SQL Server låter dig överföra ägande från en användare till en annan med hjälp av proceduren:

sp_changeobjectowner [@objname=] 'object_name' [@newowner=] 'owner_name'

Rollen låter dig kombinera till en grupp användare som utför samma funktioner.

SQL Server implementerar två typer av standardroller: på servernivå och på databasnivå. SQL Server-installation skapar fasta serverroller (till exempel sysadmin med rätt att utföra alla SQL-serverfunktioner) och fasta databasroller (till exempel db_owner med fullständiga databasåtkomsträttigheter eller db_accessadmin med rätt att lägga till och ta bort användare). Bland de fasta databasrollerna finns den offentliga rollen som har ett speciellt syfte eftersom dess medlemmar är alla användare som har tillgång till databasen.

Du kan inkludera vilket SQL Server-konto (inloggning) eller Windows NT-konto som helst i vilken serverroll som helst.

Databasroller låter dig kombinera användare till en administrativ enhet och arbeta med den som en vanlig användare. Du kan tilldela åtkomsträttigheter till databasobjekt till en specifik roll, och automatiskt får alla medlemmar i denna roll samma rättigheter.

Databasrollen kan inkludera SQL Server-användare, SQL Server-roller, Windows NT-användare.

Olika åtgärder i relation till rollen utförs med hjälp av speciella procedurer:

  • skapa en ny roll:

    sp_addrole [@rolename=] "rollnamn" [, [@ownername=] "ägarenamn"]

  • lägga till en användare till en roll:

    sp_addrolemember [@rolename=] "rollnamn", [@membername=] "användarnamn"

  • ta bort en användare från en roll:

    sp_droprolemember [@rolename=] "rollnamn", [@membername=] "användarnamn"

  • ta bort en roll:

    sp_droprole [@rollnamn=] "rollnamn"

Dataåtkomstkontroll

Definiera privilegier i en språkstandard

Varje DBMS måste stödja en mekanism för att säkerställa att endast användare med lämplig behörighet kan komma åt databasen. SQL-språket innehåller GRANT- och REVOKE-satser för att säkra tabeller i en databas. Skyddsmekanismen är baserad på användningen användar-ID, äganderätten och de privilegier som de har fått .

användar IDär en vanlig SQL-språkidentifierare som används för att utse en databasanvändare. Varje användare måste tilldelas sitt eget ID som tilldelas av databasadministratören. Av uppenbara säkerhetsskäl användar ID, vanligtvis förknippad med något lösenord . Varje SQL-sats som exekveras av DBMS exekveras på uppdrag av en användare. användar ID definierar vilka databasobjekt användaren kan hänvisa till och vilka operationer med dessa objekt han har rätt att utföra.

Varje objekt som skapas i SQL-miljön har sin egen ägare, som initialt är den enda personen som känner till existensen av detta objekt och har rätt att utföra alla operationer med det.

Privilegier, eller rättigheter, är de åtgärder som en användare har rätt att utföra på en given databastabell eller vy. SQL-standarden definierar följande uppsättning privilegier:

  • SELECT - rätten att välja data från tabellen;
  • INSERT - rätten att infoga nya rader i tabellen;
  • UPPDATERING - rätten att ändra data i tabellen;
  • DELETE - rätten att ta bort rader från tabellen;
  • REFERENSER – rätten att hänvisa till kolumnerna i den angivna tabellen i beskrivningarna av stödkraven för dataintegritet;
  • ANVÄNDNING - rätten att använda domäner, checkar och teckenuppsättningar.

INSERT och UPDATE-privilegier kan begränsas till specifika kolumner i en tabell, i vilket fall användaren endast får ändra värdena för de angivna kolumnerna. På liknande sätt kan REFERENCES-privilegiet utökas uteslutande till enskilda kolumner i en tabell, vilket skulle tillåta deras namn att användas i formuleringen av dataintegritetsskyddskrav - till exempel i CHECK- och FOREIGN KEY-klausulerna som ingår i definitionen av andra tabeller , medan användningen av andra kolumner för sådana ändamål skulle vara förbjuden.

När en användare skapar en ny tabell med CREATE TABLE-satsen blir han automatiskt dess ägare och får en full uppsättning privilegier över den som andra användare inte har från början. För att ge dem åtkomst måste ägaren uttryckligen ge de nödvändiga rättigheterna, vilket görs med GRANT-satsen.

När du skapar en vy med CREATE VIEW-satsen blir användaren automatiskt ägare till den vyn och får även fullständiga behörigheter. För att skapa en vy behöver en användare bara ha SELECT-behörigheten för alla tabeller i vyn och REFERENCES-behörigheten för alla kolumner som refereras till i vydefinitionen. Behörigheterna INSERT , UPDATE , och DELETE på den skapade vyn kommer endast att beviljas till användaren om de har lämpliga privilegier på alla tabeller som används i vyn.

Ge privilegier till användare

GRANT-satsen används för att bevilja privilegier med avseende på namngivna databasobjekt till specificerade användare. Det används vanligtvis av bordsägaren att ge tillträde till andra användare. GRANT-satsen har följande format:

<предоставление_привилегий>::= BETYDNING(<привилегия>[,...n] | ALLA PRIVILEGIER) PÅ objektnamn TO (<идентификатор_пользователя>[,...n]| OFFENTLIGT) [MED BIDRAGSALTERNATIV]

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

<привилегия>::= (VÄLJ | DELETE | INFOGA [(kolumnnamn[,...n])] | UPPDATERA [(kolumnnamn[,...n])]) | REFERENSER [(kolumnnamn[,...n])] | ANVÄNDNING )

För enkelhetens skull kan du ange nyckelordet ALL PRIVILEGES i GRANT-satsen, vilket gör att du kan ge den angivna användaren alla befintliga privilegier utan att behöva räkna upp dem. Dessutom kan nyckelordet PUBLIC anges i detta uttalande, vilket betyder tillhandahållande av tillträde av den angivna typen, inte bara till alla befintliga användare, utan även till alla som kommer att definieras i databasen senare.

Parametern objektnamn kan användas som namn på en databastabell, vy, domän, teckenuppsättning, validering.

Med alternativet WITH GRANT OPTION har användarna som anges i GRANT-utlåtandet rätt att skicka in alla beviljas dem i förhållande till det angivna föremålet för privilegiet till andra användare, som i sin tur kommer att ges exakt samma rätt att överföra sina befogenheter. Om denna parameter inte anges kommer mottagaren av privilegiet inte att kunna överföra sina rättigheter till andra användare. Därmed kan ägaren av objektet tydligt styra vem som har fått rätt att tillträda objektet och vilka tillstånd som ges honom.

Återkalla behörigheter som beviljats ​​användare

I SQL-språket för återkalla privilegier, försedd till användare via GRANT-satsen används REVOKE-satsen. Med detta uttalande kan alla eller några av de privilegier som tidigare beviljats ​​den angivna användaren återkallas. REVOKE-satsen har följande format:

<отмена_привилегий>::= REVOKE(<привилегия>[,...n] | ALLA PRIVILEGIER) PÅ objektnamn FRÅN (<идентификатор_пользователя>[,...n]| OFFENTLIG)

Nyckelordet ALL PRIVILEGES betyder att alla privilegier återkallas för den angivna användaren. beviljas till det tidigare av användaren som angav denna operatör. Den valfria GRANT OPTION FOR-satsen tillåter att alla privilegier som lämnats i den ursprungliga WITH GRANT OPTION-satsen i den ursprungliga GRANT-satsen frångås, oavsett privilegierna i sig.

Om nyckelordet RESTRICT anges i satsen, kan REVOKE-kommandot endast lyckas om privilegierna som anges i satsen inte kan orsaka att någon annan användare har de så kallade "avlämnade" privilegierna. Alternativet CASCADE tar bort alla privilegier som andra användare annars kan ha.

"Vänster" är de privilegier som behålls av användaren som de tilldelades vid ett tillfälle med hjälp av GRANT OPTION-parametern.

Eftersom närvaron av ett privilegium är nödvändigt för att skapa vissa objekt, tillsammans med dess borttagning, kan man förlora rätten, på grund av användningen av vilken det här eller det objektet bildades (sådana objekt kallas "övergivna"). Om övergivna objekt (såsom vyer) kan bli resultatet av en REVOKE-sats, kommer rätten att återkallas, förutsatt att nyckelordet CASCADE inte anges i högerkanten. Om nyckelordet CASCADE finns i satsen kommer alla övergivna objekt som inträffar när den ursprungliga REVOKE-satsen körs automatiskt att utfärda DROP-satser.

Behörigheter som har beviljats ​​den angivna användaren av andra användare kan inte påverkas av REVOKE-satsen. Därför, om en annan användare också gav den här användaren privilegiet att tas bort, kommer den angivna användaren att behålla rätten att komma åt motsvarande tabell. Anta till exempel att användare A och användare E hade INSERT-behörighet i produkttabellen. Användare A har beviljat INSERT-behörighet till användare B i produkttabellen och specificerar WITH GRANT OPTION (steg 1). Användare B har överfört denna behörighet till användare C (steg 2). Användare C fick det sedan från användare E (steg 3). Därefter beviljade användare C nämnda behörighet till användare D (steg 4). När användare A återkallar ett privilegium INSERT för användare B, det kan inte ångras för användare C heller, eftersom han redan har fått det från användare E . Om användare E inte hade beviljat denna behörighet till användare C, skulle borttagningen av användare B:s behörighet resultera i en kaskadborttagning av behörigheter för användare C och D (se tabell 17.1).

Implementering av åtkomsträttigheter till databasobjekt i MS SQL Server-miljön

Rättighetskategorier i MS SQL Server-miljön

När du ansluter till SQL Server bestäms alla möjliga handlingar för användare av rättigheterna (privilegier, behörigheter) som beviljas deras konto, grupp eller roll där de är medlemmar.

Rättigheter kan delas in i tre kategorier:

  • objekts åtkomsträttigheter;
  • rättigheter att utföra kommandon;
  • implicita rättigheter.
Tabell 17.1.
Användare AAnvändare BAnvändare CAnvändare DAnvändare E
BIDRAG BILAGA PÅ ARTIKEL TILL B MED BIDRAG Att komma rätt
Att ta sig rätt från B . Få rätt från E BIDRAG BILAGA PÅ ARTIKEL TILL C MED BIDRAG
BILAGA BILAGA PÅ Artikel TILL D Att komma rätt
REVOKE INSERT PÅ Artikel TO B CASCADE Uppsägning av rättenFörbehåll av rättigheterFörbehåll av rättigheterFörbehåll av rättigheter

Att arbeta med data och exekvera lagrade procedurer kräver en åtkomstklass som kallas åtkomsträttigheter till objekt databaser. Objekt betyder tabeller, tabellkolumner, vyer, lagrade procedurer.

Olika objekt har olika uppsättningar åtkomsträttigheter till dem:

  • SELECT , INSERT , UPDATE , DELETE , REFERENSER - för en tabell eller vy;
  • SELECT , UPDATE - för en specifik kolumn i en tabell eller vy;
  • UTFÖR - för lagrade procedurer och funktioner.

Rätten INSERT låter dig infoga nya rader i en tabell eller vy och beviljas endast på tabell- eller vynivå; den kan inte returneras på kolumnnivå.

Rätten UPPDATERING ges antingen på tabellnivå, vilket gör att du kan ändra all data i den, eller på den individuella kolumnnivån, som tillåter dig att ändra data endast inom den.

Rätten DELETE låter dig ta bort rader från en tabell eller vy, och den beviljas endast på tabell- eller vynivå, men kan inte utfärdas på kolumnnivå.

SELECT-rätten tillåter att data hämtas och kan beviljas både på tabellnivå och på individuell kolumnnivå.

REFERENSER-rätten ger möjlighet att referera till det angivna objektet. För tabeller, låter dig skapa främmande nycklar som refererar till den primära nyckeln eller unika kolumnen i den tabellen.

Upplåtelse av rättigheter

För ledningen användarbehörighet att komma åt objekt databaskommandot används:

<предоставление_привилегий>::= BETYDNING ( ALLA [ PRIVILEGIER] |<привилегия>[,...n]) ( [(kolumnnamn [,...n])] PÅ ( tabellnamn | visningsnamn) | PÅ (tabellnamn | visningsnamn ) ([kolumnnamn [,...n])] | PÅ (lagrad procedurnamn | extern_procedurnamn)) TO ( användarnamn | gruppnamn | rollnamn) [,...n]

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

<привилегия>::= (VÄLJ | DELETE | INFOGA | UPPDATERA | UTFÖR | REFERENSER)

Alternativet MED BILJANDEALTERNATIV hjälper användaren som du beviljar rättigheter att tilldela rättigheter till objektet till andra användare. Dess användning kräver särskild försiktighet, eftersom ägaren förlorar kontrollen över bevilja rättigheter för åtkomst till andra användare. Det är bäst att begränsa kretsen av användare med förmågan hantera överlåtelse av rättigheter.

Valfri parameter AS (gruppnamn | rollnamn) låter dig ange användarens deltagande i rollen som tillhandahåller bevilja rättigheter andra användare.

Den enda åtkomsträttigheten som kan ges till en lagrad procedur är rätten att utföra den ( EXECUTE ). Naturligtvis, utöver detta, kan ägaren av en lagrad procedur se och ändra dess kod.

Du kan ge en funktion rätt att köra den, och du kan också ge REFERENCER rätt, vilket gör det möjligt för funktionen att binda till objekten den refererar till. Sådan länkning gör att du kan förbjuda ändringar i strukturen på objekt som kan leda till en kränkning av funktionen.

Rättigheter att utföra SQL-kommandon

Denna klass av rättigheter styr möjligheten att skapa objekt i databasen, själva databasen och utföra säkerhetskopieringen. Du kan använda följande kommando för att tillhandahålla rättigheter att utföra kommandon SQL:

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

Parameter<команда>är följande struktur:

<команда>::= (SKAPA DATABAS | SKAPA TABELL | SKAPA VY | SKAPA STANDARD | SKAPA REGEL | SKAPA PROCEDUR | SÄKERHETSDATABAS | BACKUPLOGG | ALLA)

Således kan du ge rätten att skapa en databas, tabell, vy, standard, regel, lagrad procedur, säkerhetskopiering av databas och transaktionslogg, eller alla ovanstående rättigheter på en gång.

Implicita rättigheter

Vissa åtgärder kräver inte uttrycklig tillstånd och är tillgängliga som standard. Dessa åtgärder kan endast utföras av medlemmar av serverroller eller av ägare av objekt i databasen.

Implicita rättigheter ges inte direkt till användaren, de ges endast under vissa omständigheter. En användare kan till exempel bli ägare till ett databasobjekt endast om han skapar objektet själv eller om någon annan överför äganderätten till hans objekt till honom. Således kommer ägaren av objektet automatiskt att få rättigheterna att utföra alla åtgärder med objektet, inklusive tillhandahållande av tillträde till objektet till andra användare. Dessa rättigheter är inte specificerade någonstans, bara det faktum att objektet äger objektet låter dig utföra några åtgärder.

Tillträde beviljas ej

SQL Server-säkerhet är hierarkisk, så databasroller inkluderar Windows NT-konton och grupper, SQL Server-användare och roller. Användaren kan i sin tur delta i flera roller och samtidigt ha olika åtkomsträttigheter för olika roller. När en av rollerna som en användare tillhör har behörighet att komma åt data har han automatiskt samma rättigheter. Men om behovet uppstår kan användaren nekas åtkomst till data eller kommandon, då avbryts alla åtkomstbehörigheter som han fått på valfri nivå i hierarkin. Detta säkerställer att åtkomst förblir nekad oavsett vilka behörigheter som ges på en högre nivå.

För tillträde beviljas ej

<запрещение_доступа>::= DENY(ALLA | |<привилегия>[,...n]) ( [(kolumnnamn [,...n])] PÅ ( tabellnamn | visningsnamn) | PÅ (tabellnamn | visningsnamn ) [kolumnnamn [,...n])] | PÅ (lagrat procedurnamn | externt_procedurnamn)) TO (användarnamn | gruppnamn | rollnamn) [,...n]

CASCADE-alternativet låter dig återkalla rättigheter inte bara från en specifik användare, utan också från alla de som han beviljat liknande rättigheter.

För att inaktivera exekveringen av SQL-kommandon används följande sats:

<запрещение_выполнения>::= DENY(ALLA |<команда>[,...n]) TO (användarnamn | gruppnamn | rollnamn) [,...n]

Implicit nekande av åtkomst

Implicit avslag tycka om neka tillträde med skillnaden att den endast fungerar på den nivå som den är definierad på. Om användaren är på en viss nivå implicit nekad åtkomst, kan han fortfarande få det på en annan nivå i hierarkin genom medlemskap i en roll som har visningsbehörighet. Som standard nekas användaråtkomst till data implicit. För implicit nekande av åtkomst Följande kommando används på databasobjekt:

<неявное_отклонение_доступа>::= REVOKE (ALLA [ PRIVILEGIER] | |<привилегия>[,...n]) ( [(kolumnnamn [,...n])] PÅ ( tabellnamn | visningsnamn) | PÅ (tabellnamn | visningsnamn ) [kolumnnamn [,...n])] | PÅ (lagrade_procedurnamn | externa_procedurnamn)) TILL | FROM (användarnamn | gruppnamn | rollnamn)[,...n]

För implicit avslagkommandokörningsbehörigheter SQL använder följande kommando:

<неявное_отклонение_разрешения>::= REVOKE(ALLA |<команда>[,...n]) FROM (användarnamn | gruppnamn | rollnamn)[,...n]

Innebörden av parametrarna liknar parametrarna för GRANT- och DENY-kommandona. Alternativet BIDRAG ALTERNATIV FÖR används när en rättighet behöver återkallas. beviljas alternativet WITH GRANT OPTION för GRANT-kommandot. Användaren behåller behörigheten att komma åt objektet, men förlorar möjligheten att ge den behörigheten till andra användare.

Tillgångskonflikter

behörigheter, beviljas roller eller grupp ärvs av sina medlemmar. Även om användaren kan vara det beviljats ​​tillträde genom medlemskap i en roll kan en roll på en annan nivå ha ett förbud mot handlingen med objektet. I det här fallet finns det åtkomstkonflikt.

Med tillåtelse tillgångskonflikter SQL Server styrs av följande princip: behörighet att tillhandahållande av tillträde har lägst prioritet, och tillträde beviljas ej- den högsta. Detta innebär att data endast kan nås explicit. tillhandahålla med frånvaro tillträde beviljas ej på någon annan nivå i säkerhetshierarkin. Om åtkomst inte uttryckligen beviljas kommer användaren inte att kunna arbeta med data.

Exempel 17.1. Skapa en ny databas, en ny användare för denna databas, vilket ger honom alla rättigheter.

Administratör som skapar en ny -- databas SKAPA DATABAS basa_user -- skapar en ny användare med namnet -- UserA och lösenord '123' -- standarddatabasen för -- användare UserA kommer att vara -- databasen med namnet basa_user. sp_addlogin "UserA","123","basa_user" -- gå till databasen basa_user ANVÄND basa_user -- lägg till i den aktuella databasen -- (basa_user) en användare som heter -- userA sp_adduser "UserA" -- ge användaren användareA -- i databasen basa_user alla rättigheter GIVNA ALLA TILL UserA Exempel 17.1. Skapar en ny databas, en ny användare för denna databas, med alla rättigheter som tilldelats honom.

Exempel 17.2. Användning av roller.

Låt oss skapa en stud-roll och inkludera två användare user1 och user2 i denna roll:

sp_addrole "stud" sp_addrolemember "stud","user1" sp_addrolemember "stud","user2"

Låt oss ge rättigheter till stud-rollen och direkt till user2:

BETY SELECT, INSERT PÅ Artikel TO stud GANT SELECT, INSERT ON Artikel TILL användare2

Efter att ha utfört dessa kommandon kan användare användare1 och användare2 utföra kommandon för att välja och lägga till en post i produkttabellen.

Ta bort rätten att infoga i produkttabellen för stud-rollen:

ÅTERVÄNDA INSLAG PÅ produkten TILL stift

Efter att ha utfört det föregående kommandot förlorar användare1 rätten att infoga en post, och användare2 behåller denna rätt, eftersom infogningsrätten uttryckligen beviljades honom.

Utför kommandot

NEJ INSLAG PÅ produkt TILL stud.

Efter att ha utfört det här kommandot förlorar båda användarna rätten att infoga i produkttabellen.