Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
SQL Server mengkompilasi dan menautkan pustaka tautan dinamis (DLL) untuk setiap tabel terkompilasi asli dan prosedur tersimpan yang memiliki implementasi asli objek tersebut dalam kode C. Meskipun DLL OLTP In-Memory dihasilkan secara dinamis, file-file itu sendiri mungkin memberikan tantangan tertentu ketika ada persyaratan kepatuhan yang mengutamakan penegakan integritas kode sebagai kriteria.
Apa itu HKDLLGEN?
Di SQL Server 2022 (16.x) Pembaruan Kumulatif 17 dan versi yang lebih baru, komponen yang dikenal sebagai generator Hekaton DLL ditambahkan ke fitur OLTP In-Memory. Tanpa proses Pembuatan DLL Hekaton (hkdllgen) baru, proses SQL Server utama mengonversi kode T-SQL ke C dan kemudian meluncurkan proses pengkompilasi dan linker untuk menghasilkan DLL OLTP In-Memory yang tidak ditandatangani.
Hkdllgen, sebagai aplikasi perantara, memvalidasi dan menerima output dari SQL Server dan kemudian membuat .DLL yang ditandatangani oleh . Untuk menerapkan kebijakan Integritas Kode untuk DLL ini, proses Hkdllgen perlu ditetapkan sebagai Windows Defender Application Control (WDAC) Managed Installer.
Generator Dll Hekaton adalah langkah pertama untuk memastikan bahwa persyaratan kepatuhan terhadap peraturan seperti integritas kode dapat dipenuhi dengan DLL yang dihasilkan OLTP In-Memory. Integritas kode dalam konteks ini memastikan bahwa DLL yang In-Memory dihasilkan OLTP dipercaya oleh sistem operasi sejak dibuat hingga dimuat dan dijalankan. Kemampuan untuk menunjuk komponen generator Hekaton DLL sebagai Penginstal Terkelola memungkinkan sistem integritas kode WDAC untuk mempercayai DLL yang dihasilkan dan memungkinkannya digunakan.
Bagaimana cara kerja pengelola penginstal?
Penginstal terkelola menggunakan kumpulan aturan khusus di AppLocker untuk menunjuk biner yang dipercaya oleh organisasi Anda sebagai sumber resmi untuk penginstalan aplikasi. Ketika salah satu biner tepercaya ini berjalan, Windows memantau proses biner (dan setiap proses turunan yang diluncurkannya) dan mengawasi file yang ditulis ke dalam disk. Saat file ditulis, klaim atau tag ditambahkan ke file sebagai berasal dari alat penginstal terkelola.
Dengan AppLocker, WDAC App Control dapat dikonfigurasi untuk mempercayai file yang diinstal oleh penginstal terkelola dengan menambahkan opsi Enabled:Managed Installer ke kebijakan App Control. Saat opsi tersebut diatur, App Control memeriksa informasi asal penginstal terkelola saat menentukan apakah biner dapat dijalankan atau tidak. Selama tidak ada aturan penolakan untuk file biner tersebut, App Control memperbolehkannya berjalan berdasarkan asal penginstal yang terkelola. AppLocker juga mengontrol eksekusi file yang dapat dieksekusi yang ditetapkan sebagai Penginstal Terkelola, tetapi tidak menawarkan rantai kepercayaan untuk executable dan DLL seperti WDAC. Dalam artikel ini, kita membahas cara menunjuk dan mengonfigurasi proses hkdllgen sebagai alat penginstal terkelola yang dapat digunakan oleh AppLocker dan WDAC.
Aktifkan generator DLL Hekaton
Contoh
Dalam contoh ini, sp_configure digunakan untuk mengaktifkan opsi generator Hekaton DLL, yang disebut external xtp dll gen util enabled. Database pengujian dibuat, bersama dengan tabel memori pengujian yang dioptimalkan.
Membuat database pengujian.
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' ); GOBuat tabel pengujian dalam database pengujian.
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); GOFile panjang nol baru dengan ekstensi
.gendihasilkan untuk setiap.dlldalam subdirektori<path-to-data-directory>\xtp\<database_id>. Dll sekarang sudah ditandatangani.
Langkah-langkah untuk membuat kebijakan AppLocker dan Penginstal Terkelola OLTP In-Memory
UI pembuatan kebijakan AppLocker di GPO Editor (gpedit.msc) dan cmdlet PowerShell AppLocker tidak dapat langsung digunakan untuk membuat aturan untuk kumpulan aturan Penginstal Terkelola. Namun, Anda dapat menggunakan XML atau editor teks untuk mengonversi kebijakan kumpulan aturan EXE menjadi kumpulan aturan ManagedInstaller.
Penting
Kebijakan AppLocker harus ada sebelum menambahkan file eksekusi Hekaton DLL Generation ke dalam konfigurasi kebijakan kontrol AppLocker pada server, jika tidak, ada risiko bahwa fungsi dasar sistem operasi mungkin diblokir oleh Windows Defender. Untuk informasi selengkapnya tentang pembuatan, pengujian, dan pemeliharaan kebijakan kontrol aplikasi, lihat panduan penyebaran AppLocker.
Contoh yang tersisa berlaku untuk Windows Server 2022 dan Windows 11 dan versi yang lebih baru.
Untuk memverifikasi bahwa setidaknya kumpulan aturan exe ada dalam konfigurasi kebijakan Kontrol AppLocker server, jalankan perintah PowerShell berikut:
Get-AppLockerPolicy -Effective
Atau untuk menyimpan output kebijakan efektif ke file XML untuk dilihat:
Get-AppLockerPolicy -Effective -Xml > effective_app_policy.xml
Langkah-langkah berikut menelusuri proses pembuatan dan penerapan kebijakan yang dapat diterapkan ke server lokal. Kebijakan Penginstal Terkelola yang dihasilkan menggunakan langkah-langkah ini dapat digabungkan ke dalam kebijakan luas GPO dan didistribusikan ke semua SQL Server dalam lingkungan, atau diterapkan ke kebijakan lokal satu server. Kami menyarankan agar Anda bekerja dengan Administrator Domain agar kebijakan Integritas Kode diterapkan dari tingkat domain.
Gunakan New-AppLockerPolicy untuk membuat aturan EXE untuk file yang Anda tunjuk sebagai penginstal yang dikelola. Contoh ini membuat aturan untuk generator Hekaton DLL menggunakan jenis aturan Publisher, tetapi jenis aturan AppLocker apa pun dapat digunakan. Anda mungkin perlu memformat ulang output untuk keterbacaan.
#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.xmlEdit
AppLocker_HKDLLGEN_Policy.xmlsecara manual dan ubah nilai atribut berikut:-
RuleCollection TypekeManagedInstaller -
EnforcementModekeAuditOnly -
BinaryVersionRange LowSectionke"*"danHighSectionke"*"
Ubah:
<RuleCollection Type="Exe" EnforcementMode="NotConfigured">ke:
<RuleCollection Type="ManagedInstaller" EnforcementMode="AuditOnly">Ubah:
<BinaryVersionRange LowSection="2022.160.4175.1" HighSection="2022.160.4175.1"/>ke:
<BinaryVersionRange LowSection="*" HighSection="*"/>-
Sebarkan kebijakan konfigurasi penginstal terkelola AppLocker. Anda dapat mengimpor kebijakan AppLocker dan menyebarkan dengan Kebijakan Grup atau menggunakan skrip untuk menyebarkan kebijakan dengan cmdlet Set-AppLockerPolicy seperti yang ditunjukkan pada perintah PowerShell berikut.
#Enable the AppLocker Policy and merge with the existing policy that exists on the system. Set-AppLockerPolicy -XmlPolicy .\AppLocker_HKDLLGEN_Policy.xml -Merge -ErrorAction SilentlyContinueJika menyebarkan kebijakan AppLocker melalui skrip PowerShell, gunakan utilitas appidtel.exe dari perintah Administratif untuk mengonfigurasi layanan Identitas Aplikasi AppLocker dan driver filter AppLocker.
appidtel.exe start [-mionly]
Aktifkan opsi penginstal terkelola di Windows Defender Application Control for Business Wizard
Untuk Windows Defender Application Control (WDAC) untuk mempercayai DLL yang dihasilkan oleh proses hkdllgen.exe, opsi Diaktifkan: Penginstal Terkelola harus ditentukan dalam kebijakan Kontrol Aplikasi Anda. Pengaturan ini dapat ditentukan dengan menggunakan cmdlet Set-RuleOption dengan Opsi 13.
Buat file kebijakan integritas kode dari salah satu Panduan Kebijakan Dasar WDAC kebijakan dasar templat.
Dimulai dengan kebijakan Windows Default menyediakan lebih sedikit opsi, yang dihapus dalam panduan ini. Informasi selengkapnya tentang kebijakan Mode Default Windows dan Kebijakan Izinkan Mode Microsoft dapat diakses melalui artikel Contoh Kontrol Aplikasi untuk kebijakan dasar Bisnis .
Kebijakan templat dasar
Setelah templat dasar kebijakan Windows dipilih, beri nama kebijakan dan pilih tempat menyimpan kebijakan Kontrol Aplikasi pada disk.
Pilih jenis kebijakan
Pilih Format Beberapa Kebijakan dan Kebijakan Dasar sebagai Jenis Kebijakan
Mengonfigurasi templat kebijakan
Aktifkan hanya Penginstal Terkelola, Kebijakan Pembaruan Tanpa Memulai Ulang, Kebijakan Integritas Sistem Tidak Ditandatangani, dan opsi aturan kebijakan Integritas Kode dalam Mode Pengguna. Nonaktifkan opsi aturan kebijakan lainnya. Ini dapat dilakukan dengan menekan tombol penggeser di samping judul aturan kebijakan.
Tabel berikut ini memiliki deskripsi setiap aturan kebijakan, dimulai dengan kolom paling kiri. Artikel aturan kebijakan memberikan deskripsi yang lebih lengkap tentang setiap aturan kebijakan.
| Opsi aturan | Deskripsi |
|---|---|
| Penginstal Terkelola | Gunakan opsi ini untuk secara otomatis mengizinkan aplikasi yang diinstal oleh solusi distribusi perangkat lunak, seperti generator DLL Hekaton, yang telah didefinisikan sebagai alat penginstal terkelola. |
| Memperbarui Kebijakan tanpa me-reboot | Gunakan opsi ini untuk memungkinkan pembaruan kebijakan App Control for Business di masa mendatang diterapkan tanpa memerlukan boot ulang sistem. |
| Kebijakan Integritas Sistem yang Tidak Ditandatangani | Memungkinkan agar kebijakan tidak ditandatangani. Ketika opsi ini dihapus, kebijakan harus ditandatangani dan UpdatePolicySigners harus ditambahkan ke dalam kebijakan untuk memungkinkan modifikasi kebijakan di masa mendatang. |
| Integritas Kode Mode Pengguna | Kebijakan App Control for Business membatasi biner mode kernel dan mode pengguna. Secara default, hanya biner mode kernel yang dibatasi. Mengaktifkan opsi aturan ini memvalidasi eksekusi mode pengguna dan skrip. |
Anda harus mengaktifkan Mode Audit awalnya, karena memungkinkan Anda menguji kebijakan Kontrol Aplikasi untuk Bisnis baru sebelum menerapkannya. Dengan mode audit, tidak ada aplikasi yang diblokir-sebagai gantinya kebijakan mencatat peristiwa setiap kali aplikasi di luar kebijakan dimulai. Untuk alasan ini, semua templat mengaktifkan Mode Audit secara default.
Aturan file
Hapus semua Aturan Penandatanganan Kebijakan dari daftar.
(Opsional) Menambahkan aturan kebijakan Penerbit Kustom yang akan memastikan bahwa file seperti hkdllgen.exe akan ditandatangani sebagai penerbit.
Jenis aturan file Publisher menggunakan properti dalam rantai sertifikat penandatanganan kode untuk mendasari aturan file.
Setelah memilih tombol Buat Aturan, satu aturan Penandatanganan Kebijakan akan ada.
Sebarkan kebijakan Kontrol Aplikasi Anda. Lihat Menyebarkan Kontrol Aplikasi untuk kebijakan Bisnis.
Setelah kebijakan dibuat, kebijakan baru ditulis ke jalur yang dipilih sebagai Lokasi File Kebijakan. Versi biner baru dari nama file kebijakan memiliki versi kebijakan yang ditambahkan ke akhir nama file. Kebijakan file .cip dapat disalin ke subdirektori C:\Windows\System32\CodeIntegrity\CiPolicies\Active pada instans SQL Server.
Menyebarkan kebijakan Integritas Kode secara manual
Untuk membuat kebijakan Integritas Kode yang lebih efisien, kebijakan yang lebih umum.xml file yang dihasilkan setelah menyelesaikan Wizard Kebijakan Kontrol Aplikasi WDAC dapat diedit. Skenario ini dapat muncul jika Wizard Kebijakan Kontrol Aplikasi WDAC tidak dijalankan di SQL Server, tetapi dari stasiun kerja. Misalnya, file kebijakan Integritas Kode yang kurang disesuaikan mungkin terlihat seperti:
<?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>
Contoh ini tidak memiliki aturan penerbit yang ditandatangani dan mengasumsikan bahwa file kebijakan menggunakan direktori kerja lokal (misalnya, C:\Temp) dengan nama file Hekaton_Custom_CIPolicy.xml.
#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"
Untuk menerapkan kebijakan tanpa me-reboot server dan memeriksa status Integritas Kode, jalankan skrip PowerShell ini:
# 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*
Verifikasi bahwa DLL Hekaton yang dihasilkan dapat dipercaya oleh Integritas Kode
Setelah Code Integrity beroperasi dalam mode Audit atau mode Aktif, DLL yang dihasilkan oleh generator Hekaton DLL dipercaya oleh Windows, dan memiliki atribut yang diperluas yang ditambahkan ke file.
Klaim Smartlocker ditambahkan sebagai bagian dari metadata. Ini dapat dilihat dengan menggunakan perintah fsutil dari prompt perintah Administratif. Misalnya, memilih salah satu file yang dihasilkan secara dinamis dalam memori OLTP dari folder \Data\xtp\<database_id>, dan menjalankan perintah berikut:
fsutil file queryea "D:\SQL\MSSQL17.MSSQLSERVER\MSSQL\DATA\xtp\5\xtp_t_5_64719283_196202718557591_1.dll"
Hapus fitur Alat Penginstal Terkelola
Untuk menghapus fitur Penginstal Terkelola dari perangkat, Anda perlu menghapus kebijakan AppLocker Penginstal Terkelola dari perangkat dengan mengikuti instruksi di Menghapus aturan AppLocker: Menghapus kebijakan AppLocker pada sistem tunggal atau sistem jarak jauh.
Konten terkait
- Secara otomatis mengizinkan aplikasi yang disebarkan oleh penginstal terkelola dengan App Control for Business
- In-Memory gambaran umum OLTP dan skenario penggunaan
- Panduan Pemrosesan Kueri untuk Memory-Optimized Tabel
- Database Sampel untuk In-Memory OLTP
- panduan penyebaran AppLocker
- Mengimplementasikan kebijakan App Control untuk Bisnis