Beveiligingsprinciplen beschrijven

Voltooid

Beveiligingsprincipals zijn entiteiten die SQL Server-resources kunnen aanvragen en waarvoor u (meestal) machtigingen kunt verlenen. Er zijn verschillende sets beveiligingsprinciplen in SQL Server. Beveiligingsprinciplen bestaan op serverniveau of op databaseniveau en kunnen personen of verzamelingen zijn. Sommige sets hebben een lidmaatschap dat wordt beheerd door de SQL Server-beheerders en sommige hebben een vast lidmaatschap.

Op databaseniveau kijken we naar gebruikers, databaserollen, toepassingsrollen.

Notitie

Nieuwe aanmeldingen kunnen worden toegevoegd door beheerders in Azure SQL Database, maar er kunnen geen nieuwe serverfuncties worden gemaakt.

Schema's en beveiligbare objecten

Voordat we de details van beveiligingsprinciplen bekijken, moeten we de concepten van beveiligbare en schema's begrijpen. SQL Server en Azure SQL Database hebben drie bereiken voor beveiligbare items. Beveiligbare objecten zijn de resources in de database waarnaar het autorisatiesysteem de toegang beheert. Een tabel is bijvoorbeeld een beveiligbaar. Om het toegangsbeheer te vereenvoudigen, bevat SQL Server beveiligbare items in geneste hiërarchieën die bereiken worden genoemd. De drie beveiligbare bereiken zijn de server, de database en het schema. Een schema is een verzameling objecten in uw database, waarmee objecten kunnen worden gegroepeerd in afzonderlijke naamruimten.

Elke gebruiker heeft een standaardschema. Als een gebruiker probeert toegang te krijgen tot een object zonder een schemanaam op te geven, zoals in: SELECT name FROM customers, wordt ervan uitgegaan dat het object zich in het standaardschema van de gebruiker bevindt. Als er geen dergelijk object in het standaardschema staat, controleert SQL Server of het object zich in het vooraf gedefinieerde dbo-schema bevindt. Als er geen object van de opgegeven naam in het standaardschema van de gebruiker of in het dbo-schema staat, ontvangt de gebruiker een foutbericht. Het wordt aanbevolen om altijd de schemanaam op te geven bij het openen van objecten, dus de vorige selectie zou ongeveer als volgt zijn: SELECT name FROM SalesSchema.customers Als een gebruiker geen standaardschema heeft gekregen, wordt het standaardschema ingesteld op dbo.

Als er standaard geen schema wordt opgegeven wanneer een gebruiker een object maakt, probeert SQL Server het te maken in het standaardschema van de gebruiker. Als de gebruiker geen machtiging heeft gekregen om objecten te maken in het standaardschema, kan het object niet worden gemaakt.

Aanmeldingen en gebruikers

Ongeacht de verificatiemodus die wordt gebruikt, wordt een aanmeldingsnaam die wordt gebruikt voor toegang tot uw SQL-database ingesteld als aanmelding binnen het exemplaar. Deze aanmeldingen worden ingesteld op exemplaarniveau van SQL Server en opgeslagen in de hoofddatabase. U kunt echter ingesloten gebruikers configureren die op databaseniveau worden toegevoegd. Deze gebruikers kunnen worden geconfigureerd als SQL Server-verificatiegebruikers, evenals Windows-verificatiegebruikers of Microsoft Entra-gebruikers (afhankelijk van het platform dat u gebruikt). Als u deze gebruikers wilt maken, moet de database worden geconfigureerd voor gedeeltelijke insluiting, die standaard is geconfigureerd in Azure SQL Database en optioneel kan worden geconfigureerd in SQL Server.

Deze gebruikers hebben alleen toegang tot de database waarmee de gebruiker is ingesteld. Voor azure SQL Database wordt het aanbevolen om gebruikers te maken binnen het bereik van de gebruikersdatabase en niet in de hoofddatabase, zoals hieronder wordt weergegeven.

CREATE USER [dba@contoso.com] FROM EXTERNAL PROVIDER;
GO

De CREATE USER instructie wordt uitgevoerd in de context van de gebruikersdatabase. In het bovenstaande voorbeeld is de gebruiker een Microsoft Entra-gebruiker, zoals aangegeven met de FROM EXTERNAL PROVIDER syntaxis.

Als aanmeldingen worden gemaakt op exemplaarniveau in SQL Server, moet er vervolgens een gebruiker worden gemaakt in de database, waarmee de gebruiker wordt toegewezen aan de aanmelding op de server, zoals wordt weergegeven in het volgende voorbeeld.

USE [master]
GO

CREATE LOGIN demo WITH PASSWORD = 'Pa55.w.rd'
GO

USE [WideWorldImporters]
GO

CREATE USER demo FROM LOGIN demo
GO

De aanmelding wordt eerst gemaakt in de hoofddatabase en vervolgens in de WideWorldImporters-database wordt een gebruiker gemaakt om aan die gebruiker toe te wijzen. Aanmeldingen worden gebruikt voor toegang tot de SQL Server of de Azure SQL Database, maar om werk in een database uit te voeren, moet de aanmelding worden toegewezen aan een gebruikersnaam. De gebruikersnaam wordt gebruikt voor alle verificatie.

Aanmeldingen en gebruikersnamen zijn de belangrijkste beveiligingsprinciplen waar u rekening mee moet houden, maar in de volgende secties worden enkele van de andere concepten en termen beschreven bij het verwerken van autorisatie.

Databaserollen

Zoals u zich kunt voorstellen, kan databasebeveiliging ingewikkeld worden voor toepassingen met veel gebruikers. Om het voor zowel beheerders als auditors gemakkelijker te maken, maken de meeste databasetoepassingen gebruik van beveiliging op basis van rollen. Rollen zijn effectief beveiligingsgroepen die een gemeenschappelijke set machtigingen delen. Door machtigingen in een rol te combineren, kan een set rollen worden gemaakt voor een bepaalde toepassing. Enkele voorbeelden van rollen zijn beheerders die volledige toegang hadden tot alle databases en servers, die gebruikers rapporteren die alleen de database lezen en een toepassingsaccount dat toegang had om gegevens naar de database te schrijven. De rollen kunnen worden gedefinieerd wanneer de toepassing is ontworpen en vervolgens kunnen gebruikers worden toegewezen aan die rollen omdat ze toegang nodig hebben tot de database. Op rollen gebaseerd toegangsbeheer is een algemene architectuur in computersystemen en hoe autorisatie wordt beheerd in Azure Resource Manager.

SQL Server en Azure SQL Database bevatten beide ingebouwde rollen die zijn gedefinieerd door Microsoft en bieden ook de mogelijkheid om aangepaste rollen te maken. Aangepaste rollen kunnen worden gemaakt op server- of databaseniveau. Serverfuncties kunnen echter niet rechtstreeks toegang krijgen tot objecten in een database. Serverfuncties zijn alleen beschikbaar in SQL Server en Azure SQL Managed Instance, niet in Azure SQL Database.

In een database kunnen machtigingen worden verleend aan de gebruikers die in de database bestaan. Als meerdere gebruikers allemaal dezelfde machtigingen nodig hebben, kunt u een databaserol in de database maken en de benodigde machtigingen voor deze rol verlenen. Gebruikers kunnen worden toegevoegd als leden van de databaserol. De leden van de databaserol nemen de machtigingen van de databaserol over.

CREATE USER [DP300User1] WITH PASSWORD = 'Pa55.w.rd'
GO

CREATE USER [DP300User2] WITH PASSWORD = 'Pa55.w.rd'
GO

CREATE ROLE [SalesReader]
GO

ALTER ROLE [SalesReader] ADD MEMBER [DP300User1]
GO

ALTER ROLE [SalesReader] ADD MEMBER [DP300User2]
GO

GRANT SELECT, EXECUTE ON SCHEMA::Sales TO [SalesReader]
GO

In het bovenstaande voorbeeld ziet u dat twee gebruikers zijn gemaakt en vervolgens wordt een rol met de naam SalesReader gemaakt. De twee nieuwe gebruikers worden toegevoegd aan de zojuist gemaakte rol en vervolgens wordt de rol verleend SELECT en EXECUTE machtigingen voor het verkoopschema . Elke gebruiker die zich in die rol bevindt, kan kiezen uit elk object in het verkoopschema en elke opgeslagen procedure uitvoeren in het schema.

Toepassingsrollen

Toepassingsrollen kunnen ook worden gemaakt in een SQL Server-database of Azure SQL Database. In tegenstelling tot databaserollen worden gebruikers niet lid van een toepassingsrol. Een toepassingsrol wordt geactiveerd door de gebruiker door het vooraf geconfigureerde wachtwoord voor de toepassingsrol op te leveren. Zodra de rol is geactiveerd, worden de machtigingen die worden toegepast op de toepassingsrol toegepast op de gebruiker totdat die rol is gedeactiveerd.

Ingebouwde databaserollen

Microsoft SQL Server bevat verschillende vaste databaserollen binnen elke database waarvoor de machtigingen vooraf zijn gedefinieerd. Gebruikers kunnen worden toegevoegd als leden van een of meer rollen. Deze rollen geven hun leden een vooraf gedefinieerde set machtigingen. Deze rollen werken hetzelfde in Azure SQL Database en SQL Server.

Databaserol Definitie
db_accessadmin Hiermee kunnen gebruikers andere gebruikers in de database maken. Deze rol verleent geen toegang tot het schema van een van de tabellen en verleent ook geen toegang tot de gegevens in de database.
db_backupoperator Hiermee kunnen gebruikers een back-up maken van een database in een SQL Server- of SQL Managed Instance. De rol db_backupoperator verleent geen machtigingen in een Azure SQL Database.
db_datareader Hiermee kunnen gebruikers lezen uit elke tabel en weergave in de database.
db_datawriter Hiermee kunnen gebruikers INSERT, UPDATEen DELETE gegevens uit elke tabel en weergave in de database.
db_ddladmin Hiermee kunnen gebruikers objecten in de database maken of wijzigen. Leden van deze rol kunnen de definitie van elk object, van elk type, wijzigen, maar leden van deze rol krijgen geen toegang tot het lezen of schrijven van gegevens in de databases.
db_denydatareader Gebruikers die moeten worden verhinderd om gegevens te lezen uit een object in de database, wanneer deze gebruikers rechten hebben gekregen via andere rollen of rechtstreeks.
db_denydatawriter Gebruikers die moeten worden verhinderd om gegevens naar een object in de database te schrijven wanneer deze gebruikers rechten hebben gekregen via andere rollen of rechtstreeks.
db_securityadmin Gebruikers die toegang moeten kunnen verlenen aan andere gebruikers in de database. Leden van deze rol krijgen geen toegang tot de gegevens in de database; leden van deze rol kunnen zichzelf echter toegang verlenen tot de tabellen in de database. Lidmaatschap van deze databaserol moet worden beperkt tot alleen vertrouwde gebruikers.
db_owner Gebruikers die beheerderstoegang tot de database nodig hebben. Leden van deze rol kunnen standaard elke actie in de database uitvoeren. In tegenstelling tot de eigenaar van de database, die de gebruikersnaam dbo heeft, kunnen gebruikers in de db_owner rol echter geen toegang krijgen tot gegevens door ze in andere databaserollen te plaatsen, zoals db_denydatareader, of door hen toegang tot objecten te weigeren. Lidmaatschap van deze databaserol moet worden beperkt tot alleen vertrouwde gebruikers.

Alle gebruikers in een database zijn automatisch lid van de public rol. Standaard is aan deze rol geen machtigingen verleend. Machtigingen kunnen worden verleend aan de openbare rol, maar u moet zorgvuldig overwegen of dat echt iets is wat u wilt doen. Het verlenen van machtigingen aan de openbare rol verleent deze machtigingen aan elke gebruiker, met inbegrip van het gastaccount, als het gastaccount is ingeschakeld.

De ingebouwde databaserollen voldoen aan de behoeften van veel toepassingen; Bij toepassingen waarvoor meer gedetailleerde beveiliging is vereist (bijvoorbeeld wanneer u alleen toegang wilt verlenen tot een specifieke subset van tabellen) is een aangepaste rol vaak een betere keuze.

Notitie

Standaard kunnen gebruikers in rollen zoals db_owner altijd alle gegevens in de database zien. Toepassingen kunnen profiteren van versleutelingsopties zoals Always Encrypted om gevoelige gegevens te beschermen tegen bevoegde gebruikers.

Azure SQL Database heeft twee rollen die zijn gedefinieerd in de hoofddatabase van Azure SQL Server.

Databaserol Definitie
Dbmanager Hiermee kunnen de leden extra databases maken in de Azure SQL Database-omgeving. Deze rol is het equivalent van de dbcreator vaste serverfunctie in een on-premises Microsoft SQL Server.
loginmanager Hiermee kunnen de leden extra aanmeldingen maken op serverniveau. Deze rol is het equivalent van de securityadmin vaste serverfunctie in een on-premises Microsoft SQL Server.

Vaste serverfuncties

Naast databaserollen bieden SQL Server en Azure SQL Managed Instance beide verschillende vaste serverfuncties. Met deze rollen worden machtigingen toegewezen aan het bereik van de hele server. Principals op serverniveau, waaronder SQL Server-aanmeldingen, Windows-accounts en Windows-groepen, kunnen worden toegevoegd aan vaste serverfuncties. De machtigingen voor vaste serverfuncties zijn vooraf gedefinieerd en er kunnen geen nieuwe serverfuncties worden toegevoegd. De vaste serverfuncties zijn:

Vaste serverfunctie Definitie
Sysadmin Hiermee kunnen de leden elke activiteit op de server uitvoeren.
serveradmin Hiermee kunnen de leden de configuratie-instellingen voor de hele server wijzigen (bijvoorbeeld Max Server Memory) en de server afsluiten.
securityadmin Hiermee kunnen de leden aanmeldingen en hun eigenschappen beheren (bijvoorbeeld het wachtwoord van een aanmelding wijzigen). De leden kunnen ook machtigingen op server- en databaseniveau verlenen en intrekken. Deze rol moet worden behandeld als gelijkwaardig aan de rol sysadmin.
processadmin Hiermee kunnen de leden processen beëindigen die worden uitgevoerd in SQL Server.
setupadmin Hiermee kunnen de leden gekoppelde servers toevoegen en verwijderen met behulp van T-SQL.
bulkadmin Hiermee kunnen de leden de BULK INSERT T-SQL-instructie uitvoeren.
diskadmin Hiermee kunnen de leden back-upapparaten beheren in SQL Server.
dbcreator Hiermee kunnen de leden een database maken, herstellen, wijzigen en verwijderen.
public Elke SQL Server-aanmelding behoort tot de openbare gebruikersrol. In tegenstelling tot de andere vaste serverfuncties kunnen machtigingen worden verleend, geweigerd of ingetrokken vanuit de openbare rol.