SQL Server GRANT

Sql Server Grant



V tomto článku pochopíte, jak použít příkaz GRANT na serveru SQL Server k udělení oprávnění k zabezpečenému objektu.

SQL Server zabezpečený a hlavní

Zabezpečený odkazuje na zdroje, k nimž autorizační systém databázového stroje SQL Server řídí přístup. Příkladem může být databázová tabulka.

Principál odkazuje na jakoukoli entitu, která vyžaduje přístup k jakémukoli prostředku SQL Server. Například uživatel požadující oprávnění k tabulce je principál.







SQL Server Grant Statement

Následující text ukazuje syntaxi příkazu GRANT v SQL Server:



GRANT oprávnění
ON zabezpečený TO hlavní;

Musíte zadat oprávnění, která chcete přiřadit řídicímu objektu, jako seznam oddělený čárkami.



Klíčové slovo ON vám umožňuje určit zabezpečený prvek, na který se vztahují oprávnění. Nakonec klíčové slovo TO umožňuje nastavit cílový objekt.





Například vytvoření uživatele pomocí příkazu CREATE USER nedefinuje oprávnění pro tohoto uživatele. K nastavení oprávnění pro daného uživatele je proto nezbytné použít příkaz GRANT.

Vezměme si příklad.



Vytvořit příklad přihlášení

Začněme vytvořením vzorového přihlášení pro ilustrační účely. Dotaz je uveden níže:

vytvořit přihlašovací linuxhint
s heslem='heslo';

Výše uvedený příkaz by měl vytvořit uživatele s uživatelským jménem linuxhint a zadaným heslem.

Vytvořit ukázkovou databázi

Můžeme vytvořit databázi, kde bude uživatel sídlit, jakmile nadefinujeme přihlašovací jméno. Dotazy jsou následující:

zahodit databázi, pokud existuje resolver;

vytvořit překladač databáze;

použít resolver;

vypustit tabulku, pokud existují záznamy;

vytvořit záznamy v tabulce (
id int není nulová identita(1,
1) primární klíč,
server_name varchar(50),
server_address varchar(255) není null,
komprese_method varchar(100) výchozí 'žádný',
size_on_disk float není null,
size_compressed float,
total_records int není null,
datum init_date
);
vložit
do
VSTUPY(název_serveru,
adresa serveru,
kompresní_způsob,
velikost_na_disku,
size_compressed,
celkem_zaznamy,
init_date)
hodnoty
('MySQL','localhost:3306','lz77',90.66,40.04,560000,'2022-01-02'),
('Redis','localhost:6307','Snappy',3.55,998.2,100000,'2022-03-19'),
('PostgreSQL','localhost:5432','pglz',101.2,98.01,340000 ,'2022-11-11'),
('Elasticsearch','localhost:9200','lz4',333.2,300.2,1200000,'2022-10-08'),
('MongoDB','localhost:27017','Snappy',4.55,4.10,620000,'2021-12-12'),
('Apache Cassandra','localhost:9042','zstd',300.3,200.12,10000000,'2020-03-21');

Vytvořte uživatele pro přihlášení

Jakmile vytvoříme databázi a tabulku, můžeme vytvořit uživatele pro přihlášení do linuxhintu jako:

použít resolver
vytvořit uživatelský linuxhint
pro přihlášení linuxhint;

Přihlaste se jako Nový uživatel

Dále se přihlaste jako nově vytvořený uživatel. Příkaz vypadá takto:

setuser 'linuxhint';

Po přihlášení se můžeme pokusit zobrazit tabulky spuštěním příkazu select:

vyberte * ze záznamů;

Spuštění dotazu výše by mělo vrátit chybu:

Zpráva 229, úroveň 14, stát 5, linka 379
Oprávnění SELECT bylo odepřeno u objektu 'položky', databáze 'resolver', schéma 'dbo'.

Je to proto, že uživatel linuxhintu nemá žádná oprávnění k databázi, včetně oprávnění SELECT.

Udělení oprávnění uživateli

Musíme udělit oprávnění SELECT, abychom uživateli umožnili prohlížet informace uložené v tabulkách.

K tomu se musíte přihlásit pomocí administrativního účtu SQL Server.

Dále spusťte dotaz jako:

udělit výběr na záznamy do linuxhint;

Po spuštění se přihlaste jako uživatel linuxhintu a použijte příkaz SELECT.

vyberte * ze záznamů;

V tomto případě příkaz vrátí tabulku, protože uživatel má oprávnění SELECT

Uživateli můžete také přidělit další oprávnění, například vkládat a mazat jako:

udělovat vkládání, mazat záznamy do linuxhintu;

v tomto případě by uživatel linuxhintu měl mít oprávnění SELECT, INSERT a DELETE v tabulce záznamů.

Závěr

V tomto příspěvku jsme prozkoumali použití příkazu GRANT v SQL Server. Příkaz vám umožňuje přiřadit oprávnění danému principálovi.