Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
GitHub Copilot SQL Server Management Studio (SSMS) lekérdezéseket és parancsokat hajt végre a bejelentkezés kontextusában. Ez a cikk bemutatja az alapértelmezett végrehajtási modellt, valamint azt, hogy egy adatbázis CONSTITUTION.md használatával hogyan adhat meg egy adott adatbázis-felhasználót vagy SQL-bejelentkezést az adatbázis végrehajtási környezetének beállításához.
Alapértelmezett végrehajtási környezet
Az SSMS-ben a GitHub Copilot által létrehozott és végrehajtott összes lekérdezés — mind Ask módban, mind Agent módban — annak a felhasználónak vagy bejelentkezésnek a nevében fut, amellyel az adatbázishoz csatlakozott.
Note
A GitHub Copilot ügynök módja a SQL Server Management Studio (SSMS) alkalmazásban jelenleg előzetes verzióban van.
Copilot nem rendelkezik külön engedélyekkel és emelt szintű hozzáféréssel. Ha a felhasználód vagy a bejelentkezési fiókod nem tud olvasni egy táblát, a Copilot sem tudja.
Important
Ügynök módban a jóváhagyási rendszer nem biztonsági határ. Minden művelet előtt megerősíti a szándékát, de nem korlátozza, hogy mit tehet Copilot a bejelentkezéshez már megadott engedélyeken túl. A tényleges biztonsági határvonal az SQL Server engedélyeinek kikényszerítése. Alkalmazza a minimális jogosultság elvét: csak a szükséges engedélyeket SELECTadja meg a EXECUTEfelhasználóknak azokhoz az objektumokhoz, amelyekhez hozzá kell férniük.
A GitHub Copilot végrehajtási környezetének megadása a CONSTITUTION.md használatával
Az adatbázis-CONSTITUTION.md lehetővé teszi, hogy az adatbázis-tulajdonosok olyan adatbázis-felhasználót vagy SQL-bejelentkezést adjanak meg, amely az adatbázis összes GitHub Copilot interakciójához érvényes mind a Kérés, mind az Ügynök mód esetében. Az adatbázis szintjén kiterjesztett tulajdonságként van tárolva. Az adatbázishoz tartozó utasítások közül a legmagasabb az elsőbbsége: felülbírálja az összes AGENTS.md objektumszintű utasítást. Ha konfigurálva van, az SSMS a EXECUTE AS használatával futtat Copilot által létrehozott lekérdezéseket a megadott fiók alatt.
A bejelentkezett SSMS-felhasználónak IMPERSONATE engedéllyel kell rendelkeznie a kijelölt Copilot felhasználóhoz. Ezen engedély nélkül Copilot nem hajthat végre lekérdezéseket, és a funkció nem működik az adott felhasználó számára. Ez a viselkedés a tervezésen alapul: a rendszer ahelyett, hogy csendben visszaesne a felhasználó saját engedélyeihez (ami túl széles lehet), a rendszer a minimális jogosultság elvét kényszeríti ki. A rendszergazdáknak IMPERSONATE kell adniuk a Copilot végrehajtási fiókon minden olyan felhasználónak, akinek Copilot hozzáférésre van szüksége. A támogatás hiányát arra is használhatják, hogy blokkolják az adott felhasználók vagy szerepkörök Copilot használatát.
Ha meg szeretne adni egy adatbázis-felhasználót vagy SQL-bejelentkezést a lekérdezések végrehajtásakor használni kívánt GitHub Copilot számára, adja hozzá a agentExecuteAsUser tulajdonságot az adatbázis CONSTITUTION.md YAML-előlapjára. A agentExecuteAsUser hozzá kell adni a CONSTITUTION.md előlapjára ahhoz, hogy a GitHub Copilot felismerje.
agentExecuteAsUser előtag tulajdonság
---
agentExecuteAsUser: <database user or SQL login>
---
A agentExecuteAsUser tulajdonság egy adatbázis-felhasználónevet vagy egy SQL Server bejelentkezési nevet fogad el. A tulajdonság beállításakor GitHub Copilot a megadott identitást használja a lekérdezések adatbázison való végrehajtásakor.
- A hatókör adatbázisonkénti. Minden adatbázis saját, más
CONSTITUTION.mdértékkel rendelkezhetagentExecuteAsUser. - Az egyes
AGENTS.mdobjektumszintű utasítások nem írhatják felülagentExecuteAsUser. Az alkotmány végrehajtási környezete elsőbbséget élvez a teljes adatbázis számára.
AgentExecuteAsUser hozzáadása a CONSTITUTION.md-hez
A(z) CONSTITUTION.md utasítást tárolja kiterjesztett tulajdonságként az adatbázisban a(z) sp_addextendedproperty használatával. A @name elemnek CONSTITUTION.md kell lennie, és a @value a teljes alkotmányszöveget tartalmazza, beleértve a YAML-fejlécmetaadatokat is.
Az alábbi példa a agentExecuteAsUser értékét egy alacsony jogosultságú jelentéskészítő felhasználóra (ReportingUser) állítja be, és hozzáad egy kódolási szabványt:
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 beolvassa az adatbázis alkotmányát, amikor egy felhasználó megnyit egy GitHub Copilot munkamenetet az adatbázishoz. Ebben a példában GitHub Copilot a ReportingUser-t használja végrehajtási környezetként az adatbázissal kapcsolatos lekérdezésekhez.
Előrész és törzsszöveg
A YAML-előrész és a Markdown-törzs ugyanabban a CONSTITUTION.md értékben található meg. Az előtérbeli anyagot a tartalom elején lévő jelölők tagolják --- . A záró --- után minden utasítástörzsként lesz kezelve, és útmutatásként szolgál az összes Copilot interakcióhoz.
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.';
Adatbázis-felhasználó és SQL-bejelentkezés
A agentExecuteAsUser tulajdonság adatbázis-felhasználót vagy SQL Server bejelentkezést fogad el. Az alábbi útmutató segítségével kiválaszthatja a környezetének leginkább megfelelőt:
| Adatbázis-felhasználó | SQL-bejelentkezés | |
|---|---|---|
| Scope | Egy adatbázisra jellemző | Kiszolgálószintű identitás |
| Mikor érdemes használni? | Ha az engedélyeket az adatbázis szintjén szeretné beállítani | Ha kiszolgálószintű identitáshoz szeretne engedélyeket beállítani |
| Ajánlás | Részletesebb vezérlést kínál | Akkor használható, ha kiszolgálószintű identitásra van szükség |
A legtöbb üzemelő példány esetében az adatbázis-felhasználó megadása biztosítja a legrészletesebb vezérlést. Hozzon létre egy dedikált alacsony jogosultságú adatbázis-felhasználót a GitHub Copilot számára, és csak a várt Copilot interakciókhoz szükséges engedélyeket adja meg az adatbázishoz.
Példa: dedikált adatbázis-felhasználó létrehozása korlátozott engedélyekkel
/* 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 */
Ezután állítsa be a(z) SalesDB adatbázishoz tartozó CONSTITUTION.md elemben: agentExecuteAsUser: GHCP_DB_User.
Ajánlott eljárások
Dedikált, alacsony jogosultságú fiók: Meglévő felhasználó újbóli használatának helyett hozzon létre egy adott adatbázis-felhasználót vagy jelentkezzen be GitHub Copilot. Ez a módszer minimalizálja annak kockázatát, hogy helytelenül rendeljen engedélyeket GitHub Copilot felhasználókhoz, ha a felhasználót vagy a bejelentkezést más célra használják.
Grant only what is needed: Tekintse át az adatbázis tipikus Copilot használati eseteit, és csak a szükséges engedélyeket adja meg. Kezdje írásvédett (
SELECT) hozzáféréssel, és csak megfontoltan adjon módosítási jogosultságokat.Kerülje a kiemelt jogosultságú fiókokat: Ne állítsa a(z)
agentExecuteAsUserértékétsa,dbovagy bármely magas jogosultságokkal rendelkező fiókra, kivéve, ha a használati forgatókönyv ezt kifejezetten megköveteli.Rendszeres naplózás: Az adatbázis és a csapat követelményeinek változásakor rendszeresen tekintse át a
agentExecuteAsUserfiók engedélyeit.Tartsa szem előtt a végrehajtási határt: A
agentExecuteAsUserbeállítás szabályozza, hogy a Copilot milyen identitást használ, de a valódi biztonsági határt az SQL Server engedélykezelése jelenti. Győződjön meg arról, hogy a megadott fiók csak a minimálisan szükséges engedélyekkel rendelkezik.
Az agentExecuteAsUser frissítése vagy eltávolítása
Az érték módosításához vagy az agentExecuteAsUser alkotmány más részeinek frissítéséhez használja a következőt sp_updateextendedproperty:
USE SalesDB;
EXECUTE sp_updateextendedproperty
@name = N'CONSTITUTION.md',
@value = N'---
agentExecuteAsUser: New_GHCP_User
---
Updated constitution content here.';
A CONSTITUTION.md utasítás teljes eltávolításához használja a következőt: sp_dropextendedproperty
USE SalesDB;
EXECUTE sp_dropextendedproperty @name = N'CONSTITUTION.md';
Az eltávolítás után a GitHub Copilot a csatlakoztatott felhasználó bejelentkezési adataival futtatja a lekérdezéseket, és nem érvényesül adatbázisszintű szabályzat.
A jelenlegi alkotmány ellenőrzése
Ha ellenőrizni szeretné, hogy egy CONSTITUTION.md utasítás be van-e állítva egy adatbázishoz, kérdezze meg a Copilot:
Does this database have a constitution set?
Vagy közvetlenül lekérdezheti a kiterjesztett tulajdonságokat:
USE SalesDB;
SELECT name,
CAST (value AS NVARCHAR (MAX)) AS ConstitutionContent
FROM sys.extended_properties
WHERE class = 0
AND name = N'CONSTITUTION.md';
Kapcsolódó tartalom
- Adatbázis-utasítások használata a GitHub Copilottal az SQL Server Management Studióban
- A GitHub Copilot ügynökmód (előzetes verzió) használata az SQL Server Management Studio-ban
- A GitHub Copilot használatának első lépései az SQL Server Management Studióban
- A GitHub Copilot hibaelhárítása az SQL Server Management Studióban