Author Archives: Ortaç Demirel

Powershell ile Dosyaların HASH Bilgisini Alma

Powershell aracı ile dosyaların hash bilgisini aşağıdaki komutlar ile görebilirsiniz.

SHA1
Get-Filehash -path c:\Programlar\7zip.exe -algorithm SHA1 | fl

SHA256
Get-Filehash -path c:\Programlar\7zip.exe -algorithm SHA256 | fl

SHA512
Get-Filehash -path c:\Programlar\7zip.exe -algorithm SHA512 | fl

SQL Server 2022 Auto-Drop Özelliği

SQL veri tabanında kullanılan istatistikler oldukça önemli bir yere sahiptir.

Tablolarda verilerin yüzde kaç oranında yer aldığını belirten istatistikler index ler ile birlikte otomatik oluşurlar.

SQL Server 2022 öncesinde elle oluşturulan istatistikler bazen sorunlara sebep oluyordu. Şema değişikleri de bunlardan biri.

Tablo ya da kolonların silinmesi durumunda şema değişeceğinden elle oluşturduğunuz istatistik silinmeyecektir ve dolayısıyla hatalara sebep olur ve silmek için ekstra işlem yapmak gerekir.

SQL Server 2022 de gelen Auto-Drop özelliği istatistiğin bağlı olduğu nesne silinirse istatistiğinde otomatik olarak silinmesini sağlar.

Tablomda auto-drop özelliği ile bir istatistik oluşturuyorum.

Sorgu ile kontrol ettiğimde elle oluşturduğum istatistik için auto-drop özelliğinin açık olduğunu görmekteyim. Index den gelen istatistikte ise kapalıdır.

Oluşturduğum istatistiğe bağlı olan bir kolonu siliyorum.

İstatistik de silinmiş oldu.

Auto-drop özelliğini açmadan kolonu silseydim hata ile karışılacaktım.

Auto-Drop özelliği sonradan açılıp kapatılabilir.

UPDATE STATISTICS  [dbo].[Kullanici]  [Peronel] WITH AUTO_DROP = ON;

Ya da

UPDATE STATISTICS  [dbo].[Kullanici]  [Peronel] WITH AUTO_DROP = OFF;

SQL Server Dynamic Data Masking – Veri Maskeleme

SQL veri tabanımızda hassas veriler içeren tablolarda veri maskelemesi uygulayabiliriz.

DDM, bize tablodaki verilerin tamamının ya da bir kısmının yetkisiz kullanıcılara gözükmemesini sağlar.

Örneğin kredi kartı bilgilerinin sadece son hanesinin gözükmesi ya da TC kimlik numarası gibi hassas bilgilerin sadece baştaki ve sondaki belirli karakterlerin gözükmesi gibi.  

Veri maskelemede yapıla bilen bazı maskeleme çeşitleri:

  • Verinin tamamının gizlenmesi
  • Satırda yer alan verinin belirli bir kısmının gizlenmesi. (İlk karakterler, son karakterler ya da ortadaki belirli karakterler).
  • Email asresin gizlenmesi
  • Verilerin random sayılar ile yer değiştirmesi.

Öncelikle veri maskelemesi yapacağımız bir tablo oluşturmamız gerekiyor. Tablomuz oluşturulurken kolonları da veri maskelemeye uygun halde oluşturmamız gerekiyor.

Bu örnekte ad kolonunda veriler açıktır, soyadı kolonu tamamen gizlidir (default), email adresi SQL in “email” parametresi ile maskelenir ve ayarlar varsayılan olarak gelir, sicil numarası 3000 ile 5000 arasındaki rastgele sayılan ile değiştirilir, TC kimlik numarasının ilk 3 hanesi ve son 1 hanesi gözükürken ortadaki sayılan gizlenir ve son olarak kredi kartının sadece son 4 rakamı gözükür.

Veri girişi yapıyorum.

Veriler yetkili kullanıcılara açık şekilde gözükmektedir.

Sadece veri çekmesi için izine sahip bir kullanıcı oluşturup tabloma atıyorum.

Bu kullanıcı ile verileri çektiğimizde verilerin maskelenmiş olduğunu görürüz.

SQL Server Row-Level Security (RLS)

SQL Server 2016 ile duyurulmuş olan satır seviyesinde güvenlik uygulaması kullanıcıların sadece yetkileri oldukları satırlara erişmesini sağlar.

Birçok kullanıcının aynı veri tabanını kullandığı ortamlarda kullanıcılar tablolarda sadece kendilerine ait bilgileri filtreleyerek eriştirmemizi sağlar.

Önemli bir uygulama olan RLS veri tabanı katmanında çalışır. Herhangi bir uygulamadan veriye erişim sağlanmak istendiğinde erişim kısıtlamaları uygulanır. Böylelikle daha iyi bir güvenlik katmanı sağlanır.

RLS Uygulaması:

Veri tabanıma ürün satışları ile ilgili bir tablo oluşturuyorum.

Satış tabloma satışlardan sorumlu personelin adı, satışın yapıldığı ülke ve miktarı giriyorum.

Powershell ile Pil Bilgisini Çekme

Aşağıdaki powershell betiği ile taşınabilir bilgisayarınızın pil kapasitesi hakkında bilgi alabilirsiniz. Pilin aşınma bilgisini ve pil değiştirme zamanı gibi bilgiler edinilebilir.

$designCap = Get-WmiObject -Class “BatteryStaticData” -Namespace “ROOT\WMI” |
Group-Object -Property InstanceName -AsHashTable -AsString
Get-CimInstance -Class “BatteryFullChargedCapacity” -Namespace “ROOT\WMI” |
Select-Object -Property InstanceName, FullChargedCapacity, DesignedCapacity, Percent |
ForEach-Object {
$_.DesignedCapacity = $designCap[$_.InstanceName].DesignedCapacity
$_.Percent = [Math]::Round( ( $_.FullChargedCapacity*100/$_.DesignedCapacity),2)
$_ }

Windows 10’dan Windows 11’e Yükseltme. UEFI, Secure boot ve GPT

Windows 10 işletim sistemi kullanıyorsanız eğer Microsoft en yeni işletim sistemi olan Windows 11’e geçiş için yerinde yükseltme desteği vermektedir. Yani Windows 10 işletim sistemine Windows 11 medyasını takıp direkt olarak geçiş yapmanıza olanak sağlanmaktadır. Dosyalarınız, ayarlarınız ve desteklenen uygulamalarda aynen kalacaktır.

Fakat bu yükseltme işlemi bir takım ön gereksinimlere bağlı. Bu ön gereksinimler temiz bir Windows 11 kurulumu için de gereklidir.

Ön gereksinimlerin en önemlileri bios üzerinden aktif ettiğimiz UEFI ve secure boot ile donanım bazlı güvenlik sağlayan TPM 2.0.

Ön gereksinimler için aşağıdaki bağlantıdan faydalanabilirsiniz.

https://www.microsoft.com/en-us/windows/windows-11-specifications

TPM 2.0’ı aktif etmek için:

https://support.microsoft.com/en-us/windows/enable-tpm-2-0-on-your-pc-1fd5a332-360d-4f46-a1e7-ae6b0c90645c

UEFI, secure boot ya da TPM 2.0 destekli olmayan bir bilgisayarınız var ise şimdilik Windows 11 kuramıyorsunuz. Bazı yollar ile bu tür gereksinimleri aşabilirsiniz fakat hem önerilmiyor hem de işletim sisteminin kararlı çalışması garanti edilmiyor.

UEFI ve Secure boot ayarlarınızı bios ayarlarından kontrol edebilirsiniz.

Bilgisayarınızın bios ayarlarından UEFI özelliğini aktif edip Windows 10 kurmuş iseniz eğer işletim sistemi diski GPT olarak hazırlanmıştır.

Disk ayalarına gelip işletim sistemi yüklü olan diskin özelliklerine geldiğinizde bu ayarı görebilirsiniz.

Bu durumda sadece secure boot özelliğini de aktif edip Windows 11 işletim sistemine geçiş yapabilirsiniz.

XML Biçimindeki Dosyaların Powershell ile Okunması

Powershell gibi güçlü bir araç ile XML dosyalarında yer alan verileri rahatlıkla okuyabilir ve ayrıştırabilirsiniz.

 XML biçimindeki dosyalardan powershell ile veri çekmek oldukça kolay fakat birkaç önemli püf noktasını bilmek gerekmektedir.

İlk olarak XML dosyamızı aşağıdaki komut ile bir değişkene atıyoruz.

  [xml]$Xmlsunucu= Get-Content -Path ‘C:\sunucular\dc.xml’

Dosyamızın mutlaka XML uzantısı olmasına gerek yoktur. XML uyumlu farklı uzantılı bir dosya hatta yapılandırma dosyaları (config) da olabilmektedir.

Sıra işin püf noktasına geliyor.

XML dosyasında yer alan satırlardaki başlık kısımlarını kullanarak verileri çekmeniz gerekmektedir.

<config>

  TEST

</config>

Yukardaki örnekte yer alan bir satırdan veri çekmek için şu komut verilmelidir:

$xml.config

Benim kullandığım XML dosyası;

<Sunucular>

            <DC>

                        <Name>DC1</Name>

                        <Ip>10.0.0.1</Ip>

            </DC>

            <DC>

                        <Name>DC2</Name>

                        <Ip>10.0.0.2</Ip>

            </DC>

            <DC>

                        <Name>DC3</Name>

                        <Ip>10.0.0.3</Ip>

            </DC>

</Sunucular>

Sunucular ve DC olarak iki başlık olduğundan aşağıdaki komutu veriyorum:

$xmlsunucu.sunucular.dc

XML dosyasında yer alan ve verileri çekmek istediğiniz başlıkları komutta sıra ile belirtmeniz gerekmektedir.

En son komutu geliştirip özelleştirme de yapabilirsiniz.

   $xmlsunucu.sunucular.dc | where-object {$_.name -eq  ‘DC1’}