Användare, roller och rättigheter i SQL Server - del 1
Förord
Att hantera rättigheter i SQL Server är ett ganska stort område, med många möjligheter. Många väljer dock de enkla och säkerhetsmässigt sämre vägarna eftersom de inte kräver så mycket administration. I dessa artiklar ska jag visa vilka sätt man kan hantera rättigheter på, samt visa att det faktiskt inte är så mycket jobb att administrera dem.Innehåll
»»
»
»
»
»
Relaterade artiklar
» Användare, roller och rättigheter i SQL Server - del 2» Användare, roller och rättigheter i SQL Server - del 3
» Användare, roller och rättigheter i SQL Server - del 4
» Inloggning i SQL Server
Introduktion
Detta är första delen i en serie artiklar som ska behandla hantering av användare, roller och rättigheter i SQL Server. Artiklarna kommer att innehålla följande:Del 1: Inloggningar och användare
Del 2: Roller
Del 3: Rättigheter
Del 4: Olika lösningar för rättighetshantering
För att utföra det som beskrivs i artiklarna krävs att man har rättigheter att göra det. Exakt vilka rättigheter som krävs kommer vi att se i senare artiklar, men till dess går det bra att logga in som sa (eller något annat systemadministratörskonto) för att utföra det.
Inloggning i SQL Server
Jag har i en tidigare artikel (Inloggning i SQL Server) beskrivit hur inloggningar i SQL Server fungerar, så det tänker jag inte ta upp här. Istället ska jag visa hur man gör för att skapa inloggningar i SQL Server. Som jag berättade i den nämnda artikeln finns det två sätt att logga in i SQL Server. I det ena fallet godkänns inloggningen genom att klientapplikationen anger ett namn och lösenord för ett existerande SQL Server-konto. I det andra fallet godkänns inloggningen genom att kontrollera att den Windows-användare som klientapplikationen kör som (normalt sett den användare som är inloggad på klientmaskinen) har tillstånd att logga in i servern.
Skapa ett SQL Server login
För att skapa ett SQL Server-inloggningskonto i Enterprise Manager öppnar man mappen Security. Sedan högerklickar man på Logins och väljer att skapa ett nytt inloggningskonto. I dialogrutan som dyker upp fyller man i det inloggningsnamn som kontot ska ha och sedan väljer man SQL Server Authentication istället för Windows Authentication som är förvalt. När man valt SQL Server Authentication kan man fylla i ett lösenord för kontot. I drop-down boxen för default database bör man välja den databas som inloggningen normalt kommer att användas för. Om den ska användas till flera databaser väljer man en av de som den ska användas till. Den databas man sätter som standard är den databas som inloggningen hamnar i om man inte anger något annat när man loggar in. Man kan också konfigurera vilket språk inloggningen ska köra som standard. De övriga två flikarna i dialogrutan (Server Roles och Databas Access) kommer vi att behandla senare så de behöver vi inte fylla i just nu. När man sedan klickar OK får man skriva in det nya lösenordet en gång till för att verifiera det.Om man ska skapa en inloggning med inloggningsnamn eric och lösenord authority, vilken ska användas i databasen Northwind ska dialogrutan vara ifylld som i bild 1. Tänk på att om servern är konfigurerad för Windows security mode (i motsats till mixed mode, se mer i ovanstående artikel) kan man naturligtvis inte logga in med ett SQL Server-login efter att man skapat det.
Vill man som jag inte använda Enterprise Manager utan istället använda Transact-SQL kod för att skapa inloggningen (t ex i Query Analyzer eller osql) görs det med systemproceduren sp_addlogin. Med ovanstående exempel ser det ut så här (sp_addlogin har några andra parametrar man kan ange, t ex huruvida SQL Server ska kryptera lösenordet eller ej, se mer i Books Online för dessa):
EXEC sp_addlogin @loginame = 'eric', @passwd = 'authority', @defdb = 'Northwind'
Ge en Windows-användare inloggningsrättighet
Att ge en Windows-användare rättigheter att logga in på servern görs i samma dialogruta som för ett SQL Server-konto, men med Windows Authentication valt. Peka ut vilken användare det gäller genom att fylla i namnet för användaren och välj eller skriv vilken domän den tillhör i drop-down boxen för Domain. Om det är en lokal användare anger man maskinens namn som domän precis som vanligt i Windows. Observera att man även kan ge grupper av Windows-användare en gemensam inloggning i SQL Server så här, t ex så har alltid den lokala administratörsgruppen rätt att logga in på SQL Server om man inte manuellt har tagit bort detta (vilket man säkerhetsmässigt bör, men det tar vi i nån annan artikel). Ska vi ge SOUTHPARK\eric (användaren eric på domänen SOUTHPARK) rätt att logga in i SQL Server med Northwind som standarddatabas så bör dialogrutan vara ifylld som i bild 2. Vill man istället göra detta i T-SQL så använder man sp_grantlogin och sp_defaultdb (eftersom man inte kan ange standarddatabas i sp_grantlogin):
EXEC sp_grantlogin @loginame = 'SOUTHPARK\eric'
EXEC sp_defaultdb 'SOUTHPARK\eric',null Northwind'
Användare i databaser
Med ett inloggningskonto skapat kan en klientapplikation nu ansluta till servern. Det innebär dock inte att man kan använda någon databas på servern, inte ens den som angivits som standarddatabas när ett login skapades. Inloggningskonto ger bara rättighet att ansluta till servern, för att kunna använda en databas på servern måste det finnas en användare i databasen vilken är kopplad till inloggningen. Använder man Enterprise Manager kan man skapa och koppla användaren när man skapar ett inloggningskonto i fliken Database Access (eller senare genom att högerklicka och välja Properties för ett login), eller så skapar man den i mappen Users i den databas som användaren ska finnas i. Bild 3 visar hur en användare med namn eric i databasen Northwind skapas och kopplas till ett login som håller på att skapas. Observera att användarnamn inte är samma sak som inloggningsnamn och inte behöver heta likadant, även om de ofta gör det. Rutan nedanför med databasroller väntar vi med till nästa artikel, just nu nöjer vi oss med att ha rollen public ikryssad.För att skapa en ny användare i en databas och koppla den till ett existerande inloggningskonto öppnar man mappen Users under databasen i Enterprise Manager, och sedan högerklickar man och väljer New User. Här väljer man vilket login som användaren ska kopplas till, vilket namn användaren ska ha samt vilka roller den ska vara med i (enbart public än så länge). Om alla existerande inloggningskonton redan är kopplade till användare i databasen får man skapa ett nytt login. Man kan även skapa användare i T-SQL kod genom att använda sp_grantdbaccess:
USE Northwind
EXEC sp_grantdbaccess 'SOUTHPARK\eric',null eric'
I nästa artikel ska jag gå genom vilka typer av roller som finns i SQL Server och hur man använder dem.
0 Kommentarer