GRANT (Transact-SQL)
Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)SQL analiz uç noktası microsoft fabricAmbarı'nda Microsoft FabricSQL veritabanında Microsoft Fabric
Bir sorumluya güvenli hale getirilebilir izinler verir. Genel kavram GRANT <some permission> ON <some object> TO <some user, login, or group>
. İzinlerin genel bir tartışması için bkz. İzinler (Veritabanı Altyapısı).
Transact-SQL söz dizimi kuralları
Sözdizimi
SQL Server, Azure SQL Veritabanı ve Doku SQL veritabanı için söz dizimi.
-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
| permission [ ( column [ , ...n ] ) ] [ , ...n ]
[ ON [ class :: ] securable ] TO principal [ , ...n ]
[ WITH GRANT OPTION ] [ AS principal ]
Azure Synapse Analytics, Paralel Veri Ambarı ve Microsoft Fabric ambarı için söz dizimi.
GRANT
<permission> [ , ...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ , ...n ]
[ WITH GRANT OPTION ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Bağımsız değişken
TÜM
Bu seçenek kullanım dışıdır ve yalnızca geriye dönük uyumluluk için korunur. Tüm olası izinleri vermez.
ALL
vermek, aşağıdaki izinleri vermekle eşdeğerdir.
Güvenilir | İzinler |
---|---|
Veritabanı |
BACKUP DATABASE , BACKUP LOG , CREATE DATABASE , CREATE DEFAULT , CREATE FUNCTION , CREATE PROCEDURE , CREATE RULE , CREATE TABLE ve CREATE VIEW |
Skaler işlev |
EXECUTE ve REFERENCES |
Tablo değerli işlev |
DELETE , INSERT , REFERENCES , SELECT ve UPDATE |
Saklı yordam | EXECUTE |
Masa |
DELETE , INSERT , REFERENCES , SELECT ve UPDATE |
Görünüm |
DELETE , INSERT , REFERENCES , SELECT ve UPDATE |
AYRICALIK
ISO uyumluluğuna dahildir.
ALL
davranışını değiştirmez.
izin
İzin adı. İzinlerin güvenli hale getirilebilir izinlere yönelik geçerli eşlemeleri aşağıdaki bölümlerde açıklanmıştır.
sütun
İzinlerin verildiği tablodaki bir sütunun adını belirtir. Parantezler (
ve )
gereklidir.
sınıf
üzerinde izin verilen securable sınıfını belirtir. Kapsam niteleyicisi ::
gereklidir.
güvenli hale getirilebilir
İzin verilen güvenli hale getirilebilir öğesini belirtir.
TO sorumlu
Sorumlunun adı. Güvenli hale getirilebilir bir izin verilebilen sorumlular, güvenliği sağlanabilir duruma bağlı olarak değişir. Geçerli birleşimler için aşağıdaki bölümlere bakın.
VER SEÇENEĞI
Verilene, belirtilen izni diğer sorumlulara verme yetkisinin de verileceğini gösterir.
AS sorumlusu
AS <principal>
yan tümcesini kullanarak, iznin vereni olarak kaydedilen sorumlunun deyimini yürüten kişiden başka bir sorumlu olması gerektiğini belirtin. Örneğin, kullanıcı Mary
principal_id
12
olduğunu ve kullanıcı Raul
15
sorumlu olduğunu varsayın. Mary GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;
yürütür Şimdi sys.database_permissions
tablosu, deyim kullanıcı 12
(Mary
) tarafından yürütülse bile grantor_principal_id
15
(Raul
) olduğunu gösterir.
İzin zincirini açıkça tanımlamanız gerekmediği sürece AS
yan tümcesinin kullanılması genellikle önerilmez. Daha fazla bilgi için bkz. İzin Denetimi Algoritması özeti.
Bu deyimde AS
kullanılması, başka bir kullanıcının kimliğine bürünme yeteneği anlamına gelmez.
Açıklamalar
GRANT
deyiminin tam söz dizimi karmaşıktır. Önceki söz dizimi diyagramı, dikkati yapısına çekmek için basitleştirilmiştir. Belirli güvenli hale getirilebilir öğeler üzerinde izin vermek için tam söz dizimi, bu makalenin devamında listelenen makalelerde açıklanmıştır.
REVOKE
deyimi verilen izinleri kaldırmak için kullanılabilir ve DENY
deyimi bir sorumlunun GRANT
aracılığıyla belirli bir izin almasını önlemek için kullanılabilir.
İzin verilmesi, belirtilen güvenli hale getirilebilir iznin DENY
veya REVOKE
kaldırır. Aynı izin güvenliği sağlanabilir öğesini içeren daha yüksek bir kapsamda reddedilirse, DENY
öncelikli olur. Ancak daha yüksek bir kapsamda verilen izni iptal etme öncelikli değildir.
Veritabanı düzeyinde izinler, belirtilen veritabanı kapsamında verilir. Kullanıcının başka bir veritabanındaki nesneler için izinlere ihtiyacı varsa, kullanıcı hesabını diğer veritabanında oluşturun veya kullanıcı hesabına diğer veritabanına ve geçerli veritabanına erişim verin.
Dikkat
Tablo düzeyinde DENY
sütun düzeyi GRANT
öncelikli değildir. İzinler hiyerarşisindeki bu tutarsızlık geriye dönük uyumluluk açısından korunmuştur. Gelecek bir sürümde kaldırılacaktır.
sp_helprotect
sistem saklı yordamı, veritabanı düzeyinde güvenli hale getirilebilir izinler bildirir.
Microsoft Fabric'te CREATE USER
şu anda açıkça yürütülemez.
GRANT
veya DENY
yürütürken kullanıcı otomatik olarak oluşturulur.
GRANT SEÇENEĞI ILE
GRANT ... WITH GRANT OPTION
, izni alan güvenlik sorumlusuna belirtilen izni diğer güvenlik hesaplarına verme yetkisi verildiğini belirtir. İzin alan sorumlu bir rol veya Windows grubu olduğunda, nesne izninin grubun veya rolün üyesi olmayan kullanıcılara daha fazla verilmesi gerektiğinde AS
yan tümcesi kullanılmalıdır. Bir grup veya rol yerine yalnızca bir kullanıcı GRANT
deyimi yürütebildiğinden, grup veya rolün belirli bir üyesi, izin verildiğinde rolü veya grup üyeliğini açıkça çağırmak için AS
yan tümcesini kullanmalıdır. Aşağıdaki örnekte, WITH GRANT OPTION
bir role veya Windows grubuna verildiğinde nasıl kullanıldığı gösterilmektedir.
-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;
SQL Server izinlerinin grafiği
PDF biçimindeki tüm Veritabanı Altyapısı izinlerinin poster boyutlu grafiği için bkz. https://aka.ms/sql-permissions-poster.
İzinler
Verenin (veya AS
seçeneğiyle belirtilen sorumlunun) GRANT OPTION
izninin kendisine veya verilen izni ima eden daha yüksek bir izne sahip olması gerekir.
AS
seçeneğini kullanıyorsanız ek gereksinimler geçerlidir. Ayrıntılar için güvenli hale getirilebilir makaleye bakın.
Nesne sahipleri sahip oldukları nesneler üzerinde izin verebilir. Bir güvenli hale getirilebilir üzerinde CONTROL
izni olan sorumlular bu güvenli hale getirilebilir üzerinde izin verebilir.
sysadmin sabit sunucu rolünün üyeleri gibi CONTROL SERVER
izni verenler, sunucudaki güvenliği sağlanabilir herhangi bir rol üzerinde herhangi bir izin verebilir.
db_owner sabit veritabanı rolünün üyeleri gibi bir veritabanında CONTROL
izni verilmesi, veritabanındaki güvenli hale getirilebilir herhangi bir izin verebilir. Şema üzerinde CONTROL
izni verenler, şema içindeki herhangi bir nesne üzerinde herhangi bir izin verebilir.
Örnekler
Aşağıdaki tabloda güvenli hale getirilebilir öğeler ve güvenli hale getirilebilir söz dizimini açıklayan makaleler listelanmaktadır.