• 0

.NET Güvenlik Güncellemelerini Otomatikleştirme

1 ay önce , Okuma süresi 2 dakika.

Microsoft, birkaç haftada bir güvenlik açıklarını düzeltmek için bir .NET SDK güncellemesi yayınlar. İşte bu yazımızda onları otomatik yapmayı anlatacağız.
.NET Güvenlik Güncellemelerini Otomatikleştirme

Yazılımınızın korunduğundan emin olmak için bunlarla güncel kalmak önemlidir. Sorun şu ki, güncel kalmak manuel ve sıkıcı bir süreçtir, ancak ya bunu otomatikleştirebilseydiniz?

Bu yazıda, biraz yardımınızı gerektiren son engelle birlikte tam otomatik bir çözüme giden yolun çoğunu nasıl elde edebileceğinizden bahsedeceğim.

Single Source of Truth

Çözmemiz gereken ilk sorun, kodumuzu oluşturmak için kullanılacak .NET SDK'nın belirli bir sürümünü zorunlu kılmaktır. Bunu global.json depomuzun kök dizinine bir dosya ekleyerek yapabiliriz . İçinde .NET SDK sürümünü şu şekilde ayarlayabiliriz:

{
  "sdk": {
    "version": "3.1.402"
  }
}

Hatırlatma : Bir geliştirici, global.json dosyanızda belirttiğinizde  .NET SDK sürümüne sahip değilse, Visual Studio projeleri yükleyemez ve çıktı penceresinde SDK'yı güncellemenizi söyleyen oldukça iyi bir hata gösterir.

Continuous Integration

GitHub Actions, Azure Pipelines veya AppVeyor gibi sürekli tümleştirme sunucularının tümü, rahatınız için önceden yüklenmiş bir .NET SDK sürümüne sahiptir. Ancak, yeni bir sürüm yayınlandığında en son sürüme güncelleme yapmak günler alır.

Bence .NET SDK'yı kendiniz yüklemek daha iyidir, ki bu oldukça kolaydır. İşin püf noktası, global.json dosyadan .NET SDK sürüm numarasını okumaktır , böylece sürüm numarası için tek bir doğruluk kaynağı olur ve güncellenmesi daha kolaydır.

Bunun yapım sürenize birkaç saniye eklediğini belirtmek gerekir. Ancak, derleme sunucusunda sürüm zaten kurulu ise, bu genellikle doğrudur, bu çok hızlıdır.

GitHub Eylemleri

GitHub Eylemleri actions/setup-dotnet için, .NET SDK'yı yüklemek için birinci taraf GitHub eylemini kullanabiliriz. Buna sabit kodlanmış bir sürüm numarası sağlayabilirsiniz, ancak bunun çıkarılması, global.json bulduğu herhangi bir dosyadan sürüm numarasını aramasına neden olur.

- name: 'Install .NET Core SDK'
  uses: actions/[email protected]

Azure Pipelines

Azure Pipelines, UseDotNet .NET SDK'yı yükleyebilen benzer bir birinci taraf görevine sahiptir. useGlobalJson Bayrağı ayarlamanız gerektiğinden, biraz daha ayrıntılıdır.

- task: [email protected]
  displayName: 'Install .NET Core SDK'
  inputs:
    packageType: 'sdk'
    useGlobalJson: true

PowerShell

.NET, .NET SDK'yı yüklemek için bir PowerShell ve Bash komut dosyasıyla birlikte gelir. Her ikisi de global.json, sürüm numarasını okumak için dosyayı kullanmalarını söylemek için iletebileceğiniz bir bağımsız değişkenle birlikte gönderilir . İşte kullanabileceğiniz kısa bir çapraz platform PowerShell 7 (daha önce PowerShell Core olarak biliniyordu) komut dosyası :

if ($isWindows) {
    Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile "./dotnet-install.ps1"
    ./dotnet-install.ps1 -JSonFile global.json
}
else {
    Invoke-WebRequest "https://dot.net/v1/dotnet-install.sh" -OutFile "./dotnet-install.sh"
    sudo chmod u+x dotnet-install.sh
    sudo ./dotnet-install.sh --jsonfile global.json
}

AppVeyor

AppVeyor, PowerShell ve Bash betiklerini kullanarak .NET SDK'yı yüklemeyle ilgili bazı sorunlar yaşıyor. Çok açık olmadığım nedenlerden dolayı, kurulum dizinini ayarlamanız gerekiyor. İşte bunun için kullandığım güncellenmiş komut dosyası:

if ($isWindows) {
    Invoke-WebRequest "https://dot.net/v1/dotnet-install.ps1" -OutFile "./dotnet-install.ps1"
    ./dotnet-install.ps1 -JSonFile global.json -InstallDir 'C:Program Filesdotnet'
}
else {
    Invoke-WebRequest "https://dot.net/v1/dotnet-install.sh" -OutFile "./dotnet-install.sh"
    sudo chmod u+x dotnet-install.sh
    if ($isMacOS) {
        sudo ./dotnet-install.sh --jsonfile global.json --install-dir '/Users/appveyor/.dotnet'
    } else {
        sudo ./dotnet-install.sh --jsonfile global.json --install-dir '/usr/share/dotnet'
    }
}

Umarım faydalı olmuştur. Sağlıkla kalın...

#.NET