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.
A következőkre vonatkozik:SQL Server
Az SQL Server minden natív lefordított táblához és tárolt eljáráshoz lefordít és összekapcsol egy dinamikus csatolási kódtárat (DLL), amelynek natív implementációja ezeknek az objektumoknak a C-kódban van. Bár az In-Memory OLTP-DLL-ek dinamikusan jönnek létre, maguk a fájlok is kihívást jelenthetnek, ha olyan megfelelőségi követelmények vannak, amelyek a kódintegritási kényszerítést feltételként tartják fenn.
Mi az a HKDLLGEN?
Az SQL Server 2022 (16.x) 17-es és újabb kumulatív frissítésében egy Hekaton DLL-generátor néven ismert összetevő lett hozzáadva az In-Memory OLTP szolgáltatáshoz. Az új Hekaton DLL-létrehozási (hkdllgen) folyamat nélkül a fő SQL Server-folyamat C-kódmá alakítja a T-SQL-t, majd elindítja a fordító- és összekapcsolási folyamatokat, hogy aláíratlan In-Memory OLTP DLL-eket hozzon létre.
Hkdllgenköztes alkalmazásként ellenőrzi és elfogadja az SQL Server kimenetét, majd létrehozza aláírt DLL-eket. Ahhoz, hogy kódintegritási szabályzatokat kényszeríthessen ezekhez a DLL-ekhez, a Hkdllgen folyamatot Windows Defender alkalmazásvezérlő (WDAC) felügyelt telepítőként kell kijelölni.
A Hekaton DLL-generátor az első lépés annak biztosítása felé, hogy a szabályozási megfelelőségi követelmények, például a kódintegritási In-Memory OLTP által létrehozott DLL-ekkel teljesíthetők legyenek. A kódintegritás ebben a kontextusban biztosítja, hogy az OLTP-In-Memory létrehozott DLL-eket az operációs rendszer a létrehozásuk időpontjától kezdve a betöltésükig és a végrehajtásukig megbízhatónak minősítse. A Hekaton DLL-generátor összetevő felügyelt telepítőként való kijelölése lehetővé teszi, hogy a WDAC kódintegritási rendszere megbízzon a létrehozott DLL-ekben, és lehetővé teszi azok használatát.
Hogyan működik egy felügyelt telepítő?
A felügyelt telepítő egy speciális szabálygyűjteményt használ AppLocker a szervezet által megbízhatónak minősített bináris fájlok kijelöléséhez az alkalmazástelepítéshez. A megbízható bináris fájlok egyikének futtatásakor a Windows figyeli a bináris folyamatot (és az általa indított gyermekfolyamatokat), és figyeli a lemezre írt fájlokat. A fájlok írása során a rendszer egy jogcímet vagy címkét ad hozzá a fájlhoz egy felügyelt telepítőtől származóként.
Az AppLockerrel a WDAC alkalmazásvezérlő konfigurálható úgy, hogy megbízhatónak minősítse a felügyelt telepítő által telepített fájlokat, ha hozzáadja a Engedélyezve:Felügyelt telepítő beállítást egy alkalmazásvezérlési szabályzathoz. Ha ez a beállítás be van állítva, az App Control ellenőrzi a felügyelt telepítő forrásadatait annak meghatározásakor, hogy engedélyezi-e egy bináris futtatását. Mindaddig, amíg nincsenek megtagadási szabályok a binárisra, az App Control lehetővé teszi futását kizárólag a felügyelt telepítő eredete alapján. Az AppLocker a felügyelt telepítőként kijelölt végrehajtható fájlok végrehajtását is szabályozza, de nem biztosít megbízhatósági láncot a végrehajtható fájlokhoz és A WDAC-hoz hasonló DLL-ek esetében. Ebben a cikkben bemutatjuk, hogyan jelölheti ki és konfigurálhatja a hkdllgen folyamatot felügyelt telepítőként, amelyet az AppLocker és a WDAC is használhat.
A Hekaton DLL-generátor engedélyezése
Példa
Ebben a példában a sp_configure a Hekaton DLL-generátor beállítás engedélyezésére szolgál, amelyet external xtp dll gen util enablednéven nevezünk. Létrejön egy tesztadatbázis, valamint egy tesztmemória-optimalizált táblázat.
Tesztadatbázis létrehozása.
USE master; GO EXECUTE sp_configure 'external xtp dll gen util enabled', 1; RECONFIGURE; GO CREATE DATABASE HekatonDbForTesting ON PRIMARY ( NAME = N'HekatonDbForTesting_Data', FILENAME = N'<path-to-data-directory>\HekatonDbForTesting_Data.mdf' ), FILEGROUP [HekatonDbForTestin_XTP_FG] CONTAINS MEMORY_OPTIMIZED_DATA ( NAME = HekatonDbForTesting_XTP_CHKPOINT, FILENAME = N'<path-to-data-directory>\HekatonDbForTesting_XTP_CHKPOINT' ) LOG ON ( NAME = N'HekatonDbForTesting_log', FILENAME = N'<Path_To_Log_Directory>\HekatonDbForTesting_Log.ldf' ); GOHozzon létre egy teszttáblát a tesztadatbázisban.
USE HekatonDbForTesting; GO CREATE TABLE dbo.TestCustomerTable ( CustomerId INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000000), FirstName NVARCHAR (50) NOT NULL, LastName NVARCHAR (50) NOT NULL ) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA); GOEgy új,
.genkiterjesztésű, nulla hosszúságú fájl van generálva minden egyes.dllesetében a<path-to-data-directory>\xtp\<database_id>alkönyvtárban. A dll-ek aláírása megtörtént.
Az In-Memory OLTP AppLocker- és felügyelt telepítőszabályzatok létrehozásának lépései
Az AppLocker házirendlétrehozási felhasználói felülete a csoportházirend-szerkesztőben (gpedit.msc) és az AppLocker PowerShell-parancsmagok nem használhatók közvetlenül a Felügyelt telepítő szabálygyűjtemény szabályainak létrehozásához. Xml- vagy szövegszerkesztővel azonban konvertálhat EXE-szabálygyűjteményi szabályzatokat ManagedInstaller-szabálygyűjteményekké.
Fontos
Léteznie kell egy AppLocker-szabályzatnak, mielőtt a Hekaton DLL-generáló végrehajtható fájlt hozzáadja egy kiszolgálóhoz tartozó AppLocker szabályzatkonfigurációhoz, ellenkező esetben fennáll annak a kockázata, hogy a Windows Defender letiltja az alapvető operációs rendszer funkciókat. Az alkalmazásvezérlési szabályzatok létrehozásával, tesztelésével és karbantartásával kapcsolatos további információkért tekintse meg AppLocker üzembe helyezési útmutatóját.
A többi példa a Windows Server 2022 és Windows 11 és újabb verziókra vonatkozik.
Annak ellenőrzéséhez, hogy legalább egy exe szabálygyűjtemény létezik-e az AppLocker Control szabályzatkonfigurációjában, hajtsa végre a következő PowerShell-parancsot:
Get-AppLockerPolicy -Effective
Vagy a hatályos szabályzatok kimenetének mentése XML-fájlba megtekintésre:
Get-AppLockerPolicy -Effective -Xml > effective_app_policy.xml
Az alábbi lépések végigvezetik a helyi kiszolgálóra alkalmazható szabályzatok létrehozásának és alkalmazásának folyamatán. Az ezekkel a lépésekkel létrehozott felügyelt telepítő házirendek egyesíthetők egy csoportházirend-objektumra vonatkozó teljes körű szabályzattal, és terjeszthetők a környezet összes SQL-kiszolgálójára, vagy alkalmazhatók egyetlen kiszolgáló helyi szabályzatára. Azt javasoljuk, hogy egy tartományi rendszergazdával együttműködve alkalmazza a kódintegritási szabályzatot a tartományszintről.
A New-AppLockerPolicy használatával hozzon létre egy EXE-szabályt a felügyelt telepítőként kijelölő fájlhoz. Ez a példa létrehoz egy szabályt a Hekaton DLL-generátorhoz a Publisher-szabálytípus használatával, de bármely AppLocker-szabálytípus használható. Előfordulhat, hogy újra kell formáznia a kimenetet az olvashatóság érdekében.
#Change the current working path of the PowerShell command line or ISE to something other than the default (that is, C:\Temp). Retrieve SQL Server Path $SQLPath = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\MSSQLServer\Setup' -Name 'SQLPath' $FullPath = Join-Path -Path $SQLPath.SQLPath -ChildPath 'Binn\xtp' # Set an environment variable for the In-memory OLTP Path [System.Environment]::SetEnvironmentVariable('SQLPathWithXtp', $FullPath, 'Process') # Generate an AppLocker Policy for the HKDLLGEN.EXE in the current working directory. The Get-AppLockerFileInformation cmdlet will extract the executables publisher information as well as generate a hash for the binary. Get-ChildItem -Path ${env:SQLPathWithXtp}'.\hkdllgen.exe' | Get-AppLockerFileInformation | New-AppLockerPolicy -RuleType Publisher -User Everyone -Xml > AppLocker_HKDLLGEN_Policy.xmlManuálisan szerkessze a
AppLocker_HKDLLGEN_Policy.xml, és módosítsa a következő attribútumértékeket:-
RuleCollection TypeésManagedInstaller -
EnforcementModeésAuditOnly -
BinaryVersionRange LowSection-tól"*"-ig ésHighSection-től"*"-ig
Változás:
<RuleCollection Type="Exe" EnforcementMode="NotConfigured">Címzett:
<RuleCollection Type="ManagedInstaller" EnforcementMode="AuditOnly">Változás:
<BinaryVersionRange LowSection="2022.160.4175.1" HighSection="2022.160.4175.1"/>Címzett:
<BinaryVersionRange LowSection="*" HighSection="*"/>-
Telepítse az AppLocker által felügyelt telepítő konfigurációs szabályzatát. Importálhatja az AppLocker-szabályzatot, és csoportházirenddel telepítheti azokat, vagy szkripttel helyezheti üzembe a szabályzatot a Set-AppLockerPolicy parancsmaggal, ahogyan az az alábbi PowerShell-parancsban látható.
#Enable the AppLocker Policy and merge with the existing policy that exists on the system. Set-AppLockerPolicy -XmlPolicy .\AppLocker_HKDLLGEN_Policy.xml -Merge -ErrorAction SilentlyContinueHa az AppLocker-szabályzatot PowerShell-szkripttel telepíti, a felügyeleti parancssorból származó appidtel.exe segédprogrammal konfigurálhatja az AppLocker Application Identity szolgáltatást és az AppLocker szűrőillesztőt.
appidtel.exe start [-mionly]
A felügyelt telepítő opció engedélyezése a Windows Defender Vállalati Alkalmazásvezérlő Varázslóban
Ahhoz, hogy a Windows Defender alkalmazásvezérlő (WDAC) megbízhatónak tekintse a hkdllgen.exe folyamat által létrehozott DLL-eket, meg kell adnia az alkalmazásvezérlési szabályzatában a Engedélyezve: Felügyelt telepítő opciót. Ez a beállítás a 13. lehetőséggel Set-RuleOption parancsmaggal határozható meg.
Hozzon létre egy kódintegritási szabályzatfájlt a WDAC alapszabályzat varázslójának sablon alapszabályzatai közül.
Az Alapértelmezett Windows házirendtől kezdve kevesebb lehetőséget biztosít, amelyeket az útmutató eltávolít. Az alapértelmezett Windows módról és a Microsoft mód engedélyezéséről a Vállalati verzióhoz készült példaalkalmazás-vezérlési alapszabályzatokcímű cikkben talál további információt.
Alapsablon-szabályzat
A Windows-szabályzat alapsablonjának kiválasztása után adjon nevet a szabályzatnak, és adja meg, hogy hová szeretné menteni az Alkalmazásvezérlési szabályzatot a lemezen.
Szabályzattípus kiválasztása
Válassza a Többszörös szabályzatformátum és a Alapszabályzatot szabályzattípusként
Szabályzatsablon konfigurálása
Csak a felügyelt telepítőt, a frissítési szabályzatot újraindítás nélkül, az aláíratlan rendszerintegritási szabályzatot és a felhasználói módú kódintegritási szabályzatszabály-beállításokat engedélyezze. Tiltsa le a többi házirendszabály-beállítást. Ez a szabályzatszabály-címek melletti csúszkagomb lenyomásával végezhető el.
Az alábbi táblázat az egyes szabályzatszabályok leírását tartalmazza, a bal oldali oszloptól kezdve. Az házirendszabályokról szóló cikk az egyes szabályzatszabályok teljesebb leírását tartalmazza.
| Szabálybeállítás | Leírás |
|---|---|
| Felügyelt telepítő | Ezzel a beállítással automatikusan engedélyezheti a felügyelt telepítőként definiált szoftverterjesztési megoldás, például a Hekaton DLL-generátor által telepített alkalmazásokat. |
| Frissítési Szabályzat Újraindítás Nélkül | Ezzel a beállítással a rendszer újraindítása nélkül engedélyezheti a jövőbeli alkalmazásvezérlési vállalati szabályzatfrissítések alkalmazását. |
| aláíratlan rendszerintegritási szabályzat | Lehetővé teszi, hogy a szabályzat aláíratlan maradjon. Ha ez a beállítás el lett távolítva, a szabályzatot alá kell írni, és hozzá kell adni az UpdatePolicySignerst a szabályzathoz a szabályzat későbbi módosításának engedélyezéséhez. |
| felhasználói módú kódintegritás | Az üzleti alkalmazásvezérlési szabályzatok a kernel módú és a felhasználói módú bináris fájlokat is korlátozzák. Alapértelmezés szerint csak a kernel módú bináris fájlok vannak korlátozva. A szabály beállításának engedélyezése ellenőrzi a felhasználói módú végrehajtható fájlokat és szkripteket. |
Először engedélyeznie kell naplózási módot, mert ez lehetővé teszi az új alkalmazásvezérlési vállalati szabályzatok tesztelését, mielőtt kényszerítené őket. Ellenőrzési mód esetén nincs letiltva alkalmazás; ehelyett a szabályzat eseményt naplóz, amikor egy, a szabályzaton kívüli alkalmazás elindul. Ezért minden sablonban alapértelmezés szerint engedélyezve van a naplózási mód.
Fájlszabályok
Távolítsa el az összes szabályzat-aláírási szabályt a listáról.
(nem kötelező) Adjon hozzá egy egyéni közzétevői házirendszabályt, amely biztosítaná, hogy az olyan fájlok, mint a hkdllgen.exe közzétevőként legyenek aláírva.
A Publisher-fájlszabály típusa a kódaláíró tanúsítványlánc tulajdonságaival alapozza meg a fájlszabályokat.
A Szabály létrehozása gomb kiválasztása után egyetlen házirend-aláírási szabálynak kell léteznie.
Az Alkalmazásvezérlési szabályzat üzembe helyezése. Lásd a Az alkalmazásvezérlés vállalati szabályzatainak üzembe helyezése.
A szabályzat létrehozása után a rendszer az új szabályzatot a házirendfájl helyeként kiválasztott elérési útra írja. A szabályzatfájl nevének új bináris verziója a fájlnév végéhez fűzött szabályzatverzióval rendelkezik. A házirend.cip fájl az SQL Server-példány C:\Windows\System32\CodeIntegrity\CiPolicies\Active alkönyvtárába másolható.
Kódintegritási szabályzat manuális üzembe helyezése
A kódintegritási szabályzat egyszerűbb létrehozása érdekében egy általánosabb szabályzat.xml fájl szerkeszthető, amely a WDAC alkalmazásvezérlő házirend varázslójának befejezése után jött létre. Ez a forgatókönyv akkor fordulhat elő, ha a WDAC alkalmazásvezérlési házirend varázslója nem SQL Serveren, hanem egy munkaállomáson fut. Egy kevésbé testreszabott kódintegritási szabályzatfájl például a következőképpen nézhet ki:
<?xml version="1.0" encoding="utf-8"?>
<SiPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:sipolicy" PolicyType="Base Policy">
<VersionEx>10.0.5.0</VersionEx>
<PlatformID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</PlatformID>
<PolicyID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</PolicyID>
<BasePolicyID>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</BasePolicyID>
<Rules>
<Rule>
<Option>Enabled:Unsigned System Integrity Policy</Option>
</Rule>
<Rule>
<Option>Enabled:UMCI</Option>
</Rule>
<Rule>
<Option>Enabled:Audit Mode</Option>
</Rule>
<Rule>
<Option>Enabled:Managed Installer</Option>
</Rule>
<Rule>
<Option>Enabled:Update Policy No Reboot</Option>
</Rule>
</Rules>
<EKUs>
<!--EKU ID-->
</EKUs>
<FileRules>
<!--FileAttrib ID -->
</FileRules>
<Signers />
<SigningScenarios>
<SigningScenario ID="ID_SIGNINGSCENARIO_KMCI" FriendlyName="Kernel Mode Signing Scenario" Value="131">
<ProductSigners />
</SigningScenario>
<SigningScenario ID="ID_SIGNINGSCENARIO_UMCI" FriendlyName="User Mode Signing Scenario" Value="12">
<ProductSigners />
</SigningScenario>
</SigningScenarios>
<UpdatePolicySigners />
<HvciOptions>0</HvciOptions>
</SiPolicy>
Ez a példa nem rendelkezik aláírt közzétevői szabvánnyal, és feltételezi, hogy a szabályzatfájl egy helyi munkakönyvtárat (például C:\Temp) használ Hekaton_Custom_CIPolicy.xmlfájlnévvel.
#Create Windows Defender Application Control (WDAC) policy and set Option 13 (Enabled:Managed Installer) and Option 16 (Enabled:Update Policy No Reboot)
Set-CIPolicyIdInfo -FilePath C:\Temp\Hekaton_Custom_CIPolicy.xml -PolicyName "Hekaton Managed Installer Policy" -ResetPolicyID
Set-RuleOption -FilePath C:\Temp\Hekaton_Custom_CIPolicy.xml -Option 13
Set-RuleOption -FilePath C:\Temp\Hekaton_Custom_CIPolicy.xml -Option 16
# The App Control policy XML file in this example is located in the C:\Temp directory.
$AppControlPolicyXMLFile = 'C:\Temp\test\Hekaton_Custom_CIPolicy.xml'
# Retrieve the Policy ID from the App Control policy XML. This will be used as the binary file name that Code Integrity will use.
[xml]$AppControlPolicy = Get-Content -Path $AppControlPolicyXMLFile
$PolicyID = $AppControlPolicy.SiPolicy.PolicyID
$PolicyBinary = $PolicyID + ".cip"
# Convert the App Control policy XML to binary format and save it into the Active Code Integrity path.
ConvertFrom-CIPolicy -XmlFilePath $AppControlPolicyXMLFile -BinaryFilePath "C:\Windows\System32\CodeIntegrity\CiPolicies\Active\$PolicyBinary"
Ha a házirendet a kiszolgáló újraindítása és a Kódintegritás állapotának ellenőrzése nélkül szeretné alkalmazni, futtassa ezt a PowerShell-szkriptet:
# Refresh the Code Integrity policy without a reboot of the system
Invoke-CimMethod -Namespace root\Microsoft\Windows\CI -ClassName PS_UpdateAndCompareCIPolicy -MethodName Update -Arguments @{FilePath = "C:\Windows\System32\CodeIntegrity\CiPolicies\Active\$PolicyBinary" }
# View the current status of WDAC Code Integrity.
# If WDAC is in Audit mode the "UserModeCodeIntegrityPolicyEnforcementStatus" will have a value of "1" for Audit mode. A value of "0" signifies that Code Integrity is not active.
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Format-List *codeintegrity*
Ellenőrizze, hogy a létrehozott Hekaton DLL-ek megbízhatóak-e a kódintegritással
Ha a kódintegritás naplózási módban vagy aktív módban működik, a Hekaton DLL-generátor által létrehozott DLL-eket a Windows megbízhatónak minősíti, és kiterjesztett attribútummal bővíti a fájlokat.
A Smartlocker jogcím a metaadatok részeként lesz hozzáadva. Ez az fsutil paranccsal tekinthető meg egy rendszergazdai parancssorból. Például válassza ki a memóriában lévő OLTP dinamikusan létrehozott fájlokat a \Data\xtp\<database_id> mappából, és hajtsa végre a következő parancsot:
fsutil file queryea "D:\SQL\MSSQL17.MSSQLSERVER\MSSQL\DATA\xtp\5\xtp_t_5_64719283_196202718557591_1.dll"
Felügyelt telepítő eltávolítása funkció
A Felügyelt telepítő jellemző eszközről való eltávolításához el kell távolítania a Managed Installer AppLocker-szabályzatot az eszközről a következő utasítások követésével: AppLocker-szabály törlése: AppLocker-szabályzatok törlése egyetlen rendszeren vagy távoli rendszeren.
Kapcsolódó tartalom
- Felügyelt telepítő által üzembe helyezett alkalmazások automatikus engedélyezése az App Control for Business
- In-Memory OLTP áttekintése és használati forgatókönyvei
- Memory-Optimized táblák lekérdezésfeldolgozásának útmutatója
- Mintaadatbázis In-Memory OLTP
- AppLocker üzembe helyezési útmutatója
- Vállalati szabályzatokhoz tartozó alkalmazásvezérlés bevezetése