Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
SQL Server Management Studio'de (SSMS) GitHub Copilot, oturum açmanızın bağlamı altında sorgular ve komutlar yürütür. Bu makalede, varsayılan yürütme modeli ve veritabanı için yürütme bağlamını ayarlamak üzere belirli bir veritabanı CONSTITUTION.md kullanıcısını veya SQL oturum açma bilgilerini belirtmek üzere veritabanının nasıl kullanılacağı açıklanmaktadır.
Varsayılan yürütme bağlamı
SSMS'de GitHub Copilot tüm sorgular hem Ask modunda hem de Aracı modunda oluşturur ve yürütür, veritabanına bağlanmak için kullandığınız kullanıcı veya oturum açma bilgileri altında çalışır.
Uyarı
SQL Server Management Studio'de (SSMS) GitHub Copilot Aracı modu şu anda önizleme aşamasındadır.
Copilot’ın ayrı izinleri yoktur ve yükseltilmiş erişim hakkı bulunmaz. Kullanıcınız veya oturumunuz tabloyu okuyamıyorsa Copilot de okuyamaz.
Important
Aracı modundaki onay sistemi bir güvenlik sınırı değildir. Her eylemden önce amacınızı onaylar, ancak Copilot yapabileceklerini oturum açma bilgilerinize verilen izinler dışında kısıtlamaz. Asıl güvenlik sınırı, SQL Server’ın izin uygulamasıdır. En az ayrıcalık ilkesini uygulayın: kullanıcılara yalnızca erişmeleri gereken belirli nesneler için ihtiyaç duydukları SELECT, EXECUTE ve diğer izinleri verin.
CONSTITUTION.md ile GitHub Copilot yürütme bağlamı belirtme
Veritabanı CONSTITUTION.md, veritabanı sahiplerinin hem Sor hem de Aracı modu için bu veritabanına yönelik tüm GitHub Copilot etkileşimlerinde kullanılacak bir veritabanı kullanıcısı veya SQL oturum açma hesabı belirtmesine olanak tanır. Veritabanı düzeyinde genişletilmiş bir özellik olarak depolanır. Bu veritabanı için tüm yönergelerden en yüksek önceliğe sahiptir: tüm AGENTS.md nesne düzeyindeki yönergeleri geçersiz kılar. Yapılandırıldığında, SSMS belirtilen hesap altında oluşturulan Copilot sorguları çalıştırmak için EXECUTE AS kullanır.
Oturum açan SSMS kullanıcısının, belirtilen Copilot kullanıcısı için IMPERSONATE iznine sahip olması gerekir. Bu izin olmadan Copilot sorgu yürütemez ve özellik bu kullanıcı için çalışmaz. Bu davranış tasarım gereğidir: kullanıcının kendi izinlerine sessizce geri dönmek yerine (fazla geniş olabilir), sistem en az ayrıcalık ilkesini uygular. Yöneticiler, Copilot yürütme hesabındaki IMPERSONATE Copilot erişimine ihtiyacı olan tüm kullanıcılara vermelidir. Belirli kullanıcılar veya roller için Copilot kullanımını engellemek için bu iznin olmamasını da kullanabilirler.
Sorguları yürütürken kullanılacak GitHub Copilot veritabanı kullanıcısı veya SQL oturum açma bilgilerini belirtmek için, agentExecuteAsUser özelliğini veritabanının CONSTITUTION.md YAML ön konusuna ekleyin. GitHub Copilot tarafından tanınması için agentExecuteAsUser, CONSTITUTION.md öğesinin ön kısmına eklenmelidir.
agentExecuteAsUser ön madde özelliği
---
agentExecuteAsUser: <database user or SQL login>
---
agentExecuteAsUser özelliği, veritabanı kullanıcı adını veya SQL Server oturum açma adını kabul eder. Bu özelliği ayarladığınızda, GitHub Copilot bu veritabanında sorgu yürütürken belirtilen kimliği kullanır.
- Kapsam veritabanı başınadır. Her veritabanının, farklı bir
agentExecuteAsUserdeğerine sahip kendiCONSTITUTION.mdolabilir. - Tek tek
AGENTS.mdnesne düzeyi yönergeleri geçersiz kılamazagentExecuteAsUser. Anayasanın yürütme bağlamı tüm veritabanı için önceliklidir.
CONSTITUTION.md dosyasına agentExecuteAsUser ekleyin
komutunu kullanarak CONSTITUTION.mdyönergeyi sp_addextendedproperty veritabanında genişletilmiş bir özellik olarak depolayın.
@name olmalıdır CONSTITUTION.md ve@value, YAML ön konusu da dahil olmak üzere tüm anayasa içeriğini içerir.
Aşağıdaki örnek, agentExecuteAsUser öğesini düşük ayrıcalıklı bir raporlama kullanıcısı (ReportingUser) olarak ayarlar ve bir kodlama standardı ekler:
USE SalesDB;
EXECUTE sp_addextendedproperty
@name = N'CONSTITUTION.md',
@value = N'---
agentExecuteAsUser: ReportingUser
---
Any T-SQL generated for this database must comply with organizational standards.
Queries must not use SELECT *. Always use explicit column lists.
Avoid queries that modify data unless explicitly requested by the user.';
GitHub Copilot kullanıcı bu veritabanı için GitHub Copilot oturumu açtığında veritabanının anayasasını okur. Bu örnekte GitHub Copilot, bu veritabanına yönelik sorgular için yürütme bağlamı olarak ReportingUser kullanır.
Ön bölüm ve anayasa ana metni
YAML ön madde ve Markdown gövdesi aynı CONSTITUTION.md değerde bir arada bulunur. Ön madde, içeriğin başındaki işaretçilerle sınırlandırılır --- . Kapanış --- etiketinden sonraki her şey, yönerge gövdesi olarak değerlendirilir ve tüm Copilot etkileşimlerinde yol gösterici olarak kullanılır.
USE SalesDB;
EXECUTE sp_addextendedproperty
@name = N'CONSTITUTION.md',
@value = N'---
agentExecuteAsUser: GHCP_DB_User
---
## Database Constitution: SalesDB
This database stores customer orders, product catalog, and revenue data.
### Coding standards
- Always use explicit column lists. Do not use SELECT *.
- Use schema-qualified object names (e.g., Sales.Orders, not Orders).
- Wrap multi-statement scripts in a transaction with TRY/CATCH error handling.
### Restricted operations
- Do not generate TRUNCATE TABLE statements.
- Do not generate DROP statements without an existence check.
- Revenue calculations must use SUM(NetAmount) from Sales.Transactions, excluding rows where RefundFlag = 1.';
Veritabanı kullanıcısı ile SQL oturum açma karşılaştırması
agentExecuteAsUser özelliği bir veritabanı kullanıcısını veya SQL Server oturum açmayı kabul eder. Ortamınıza en uygun olanı seçmek için aşağıdaki kılavuzu kullanın:
| Veritabanı kullanıcısı | SQL oturum açma | |
|---|---|---|
| Scope | Bir veritabanına özgü | Sunucu çapında kimlik |
| Kullanılması gereken durumlar | İzinleri veritabanı düzeyinde ayarlamak istediğinizde | Sunucu düzeyinde bir kimlik için izinleri ayarlamak istediğinizde |
| Recommendation | Daha ayrıntılı denetim sunar | Sunucu düzeyinde kimlik gerektiğinde kullanın |
Çoğu dağıtımda veritabanı kullanıcısının belirtilmesi en ayrıntılı denetimi sağlar. GitHub Copilot için ayrılmış bir düşük ayrıcalıklı veritabanı kullanıcısı oluşturun ve yalnızca bu veritabanındaki beklenen Copilot etkileşimleri için gereken izinleri verin.
Örnek: Sınırlı izinlere sahip ayrılmış veritabanı kullanıcısı oluşturma
/* Create a database user that is not mapped to a SQL login */
USE SalesDB;
CREATE USER GHCP_DB_User WITHOUT LOGIN;
/* Grant only the permissions Copilot needs */
GRANT SELECT ON SCHEMA::Sales TO GHCP_DB_User;
GRANT SELECT ON SCHEMA::Reporting TO GHCP_DB_User;
GRANT EXECUTE ON SCHEMA::Sales TO GHCP_DB_User;
/* Do not grant DDL permissions unless schema modification is expected */
Ardından SalesDB veritabanı için CONSTITUTION.md içinde agentExecuteAsUser: GHCP_DB_User ayarlayın.
En iyi uygulamalar
Ayrılmış, düşük ayrıcalıklı bir hesap kullanın: Var olan bir kullanıcıyı yeniden kullanma yerine belirli bir veritabanı kullanıcısı oluşturun veya GitHub Copilot için oturum açın. Bu yaklaşım, kullanıcı veya oturum açma başka bir amaç için kullanılıyorsa GitHub Copilot kullanıcılara izinlerin yanlış atanma riskini en aza indirir.
Yalnızca gerekenleri kullanın: Veritabanınız için tipik Copilot kullanım örneklerini gözden geçirin ve yalnızca gerekli izinleri verin. Salt okunur (
SELECT) erişimle başlayın ve bilerek değişiklik izinleri ekleyin.Yüksek ayrıcalıklı hesaplardan kaçının: Kullanım senaryosu açıkça gerektirmediği sürece
agentExecuteAsUseröğesinisa,dboveya yüksek izinlere sahip herhangi bir hesap olarak ayarlamayın.Düzenli olarak denetleme: Veritabanınız ve ekip gereksinimleriniz değiştikçe hesabın
agentExecuteAsUserizinlerini düzenli aralıklarla gözden geçirin.Yürütme sınırını unutmayın:
agentExecuteAsUserayarı, Copilot’un hangi kimliği kullandığını denetler, ancak gerçek güvenlik sınırı SQL Server’ın izin uygulamasıdır. Belirtilen hesabın yalnızca gereken en düşük izinlere sahip olduğundan emin olun.
agentExecuteAsUser'ı güncelleştirme veya kaldırma
Değeri değiştirmek veya anayasanın agentExecuteAsUser diğer bölümlerini güncelleştirmek için kullanın sp_updateextendedproperty:
USE SalesDB;
EXECUTE sp_updateextendedproperty
@name = N'CONSTITUTION.md',
@value = N'---
agentExecuteAsUser: New_GHCP_User
---
Updated constitution content here.';
Yönergeyi CONSTITUTION.md tamamen kaldırmak için kullanın sp_dropextendedproperty:
USE SalesDB;
EXECUTE sp_dropextendedproperty @name = N'CONSTITUTION.md';
Kaldırıldıktan sonra GitHub Copilot, bağlı kullanıcının kimliğiyle sorgular yürütür ve veritabanı düzeyinde herhangi bir kısıtlama uygulanmaz.
Geçerli anayasayı doğrulama
Bir veritabanı için CONSTITUTION.md komutunun ayarlanıp ayarlanmadığını kontrol etmek için Copilot’a sorun:
Does this database have a constitution set?
Ya da genişletilmiş özellikleri doğrudan sorgula:
USE SalesDB;
SELECT name,
CAST (value AS NVARCHAR (MAX)) AS ConstitutionContent
FROM sys.extended_properties
WHERE class = 0
AND name = N'CONSTITUTION.md';