Prijava in posredovanje identitete
Prehod odgovori na dve ločeni vprašanji: kdo pošilja zahtevo (način prijave) in pod čigavo identiteto se stavek izvede v SQL Serverju (posredovanje identitete, ki ga nastavite za vsak alias posebej). Na tej strani sta pojasnjeni obe vprašanji in dovoljene kombinacije. Podrobna pravila so v HTTP: prijava in Posredovanje identitete in identitete podatkovne zbirke.
Ključne funkcije
- Prijava s ključem storitve, računom Windows, prijavo SQL Server ali osebnim ključem.
- 2FA (dvostopenjsko preverjanje identitete) po pravilniku prijave, ločeno za vsak način prijave, področje in omrežje.
- Stavki se izvajajo pod prijavo aliasa, lastno prijavo osebe ali dodeljeno skupno prijavo. Oseba ostane vidna v kontekstu seje.
Osnovni pojmi
Posredovanje identitete SQL Serverju
Gradniki:
Personsz vrednostmaServiceinImpersonate, seznam zavrnitevDenyImpersonates pogoji glede omrežja inTrustedProxies, prijava SQL Server prek HTTP Basic z lastno povezavo ter identitete podatkovne zbirke iz skrbniške shrambe.
Vodilo: do podatkovne zbirke se prehod vede tako, kot bi se oseba povezala neposredno. To pomeni tri lastnosti, ki jih lahko preverite:
- Ko se stavek izvaja kot oseba,
USER_NAME(),SUSER_SNAME()inCURRENT_USERvrnejo to osebo, in to tudi v privzetih vrednostih stolpcev, sprožilcih in pogledih. - SQL Server preveri dovoljenja osebe. Če jih ni, prehod odgovori z
403, enako kot bi bila zavrnjena neposredna povezava. - Prijavo SQL Server preveri SQL Server sam, ko odpre njeno povezavo.
Kjer to ne velja, torej pri ključih storitve in pri posredovanju Service, podatkovna zbirka vidi
prijavo aliasa. Zato prehod loči dve vprašanji:
- Kdo kliče? To ugotovi način prijave.
- Pod čigavo identiteto se stavek izvede v SQL Serverju? To določa konfiguracija aliasa.
To je pomembno, ker podatkovne zbirke prijavo vrednotijo same. Privzete vrednosti stolpcev se
izpolnijo z USER_NAME() (na primer polje „ustvaril“), sprožilci, pogledi in procedure pa berejo
USER_NAME(), CURRENT_USER, SYSTEM_USER ali HOST_NAME(). Pri Service vsi vidijo prijavo
aliasa: v polju „spremenil“ je zapisan račun storitve, pogled, ki uporablja CURRENT_USER, pa vrne
podatke za račun storitve namesto za osebo.
Kdo kliče – načini prijave:
| Način | Identiteta | Kdo jo preveri |
|---|---|---|
| Ključ storitve | aplikacija | prehod |
| Osebni ključ | oseba, vpisana v skrbniški shrambi | prehod, na podlagi skrbniške shrambe |
Windows (Negotiate) | račun Windows z njegovimi skupinami | Windows (Kerberos ali NTLM) |
| Prijava SQL Server prek HTTP Basic | prijava SQL Server z imenom in geslom | SQL Server sam, ko odpre povezavo |
Identitete, ki jo posredniški strežnik pred prehodom pošlje v glavi zahteve, prehod ne prevzame. Dokler je prehod dosegljiv tudi mimo tega posrednika, bi lahko vsakdo tako glavo nastavil sam.
Pod čigavo identiteto se stavek izvede – posredovanje, ki ga nastavite za vsak alias:
| Posredovanje | SQL Server vidi | Pogoj |
|---|---|---|
Service (privzeto) | prijavo iz niza povezave aliasa | – |
Impersonate | osebo: vsak stavek zahteve se izvede pod EXECUTE AS LOGIN = '<prijava>' WITH COOKIE | oseba ima lastno prijavo (dostop samo prek skupine ne zadošča, SQL Server ga zavrne z napako 15406); prijava aliasa ima pravico IMPERSONATE ANY LOGIN ali IMPERSONATE za prijavo osebe |
| lastna povezava | prijavo SQL Server samo, prek povezave z njenimi poverilnicami | AllowSqlLogins pri aliasu; samo prek zaščitene povezave, glejte prijava SQL Server |
Kako nastavitev Persons aliasa deluje pri posameznem načinu prijave:
| Način | Service (privzeto) | Impersonate |
|---|---|---|
| Ključ storitve | prijava aliasa | prijava aliasa; ključ storitve ni oseba in identitete nikoli ne zamenja |
| Osebni ključ | prijava aliasa | prijava SQL Server, ki je vpisana pri osebi v skrbniški shrambi; če prijava ni vpisana, prijava aliasa, oseba pa je zapisana v kontekstu seje (brez 403) |
| Windows | prijava aliasa | prijava Windows tega računa v SQL Serverju; brez lastne prijave 403 |
| Prijava SQL Server | lastna povezava prijave | lastna povezava prijave, ker bi EXECUTE AS obšel preverjanje gesla |
Identiteta podatkovne zbirke, ki jo izbere oseba, ima prednost pred obema nastavitvama (glejte identitete podatkovne zbirke).
Oseba ostane vidna. Ko se oseba, vpisana v skrbniški shrambi, prijavi z osebnim ključem ali izbere
identiteto podatkovne zbirke, jo prehod pred vsako zamenjavo identitete zapiše v kontekst seje, in
sicer samo za branje (SESSION_CONTEXT(N'wkl.person'), poleg tega še wkl.key in wkl.role). To
velja tudi pri Service. Pri prijavi z računom Windows ali s prijavo SQL Server ostane wkl.person
prazen, tudi če je račun dodeljen osebi; tam SQL Server osebo vrne prek SUSER_SNAME(), če se stavek
izvaja pod njeno identiteto. Posebne nastavitve za to ni; pravila so opisana v razdelku
Omejitev po vrsticah.