CyberFlow Logo CyberFlow 📚 Blog

yq - YAML veri işleme

✍️ Ahmet BİRKAN 📂 kali_tools_otomasyon_ve_scripting_araclari
yq - YAML veri işleme Giriş Giriş YAML (YAML Ain't Markup Language), temel olarak veri serileştirme ve yapılandırma dosyaları için kullanılan, insan tarafı…
yq - YAML veri işleme

yq - YAML veri işleme

Giriş

Giriş

YAML (YAML Ain't Markup Language), temel olarak veri serileştirme ve yapılandırma dosyaları için kullanılan, insan tarafından okunabilir bir format sunmaktadır. Günümüzde yazılım geliştiricilerinin ve sistem yöneticilerinin sıkça kullandığı bu format, özellikle konfigürasyon dosyalarının yönetimi için tercih edilmektedir. Ancak, YAML dosyalarını işlemek ve düzenlemek için etkili araçların bulunması oldukça önemlidir. İşte burada devreye yq girmektedir.

yq Nedir?

yq, YAML dosyalarını incelemek, düzenlemek ve dönüşüm yapmak için kullanılan bir komut satırı aracıdır. JSON veri formatıyla benzerlik gösteren yq, kullanıcıların YAML dosyalarıyla etkileşimini kolaylaştırarak, veri manipülasyonu, sorgulama ve çıktıları yönetmeyi mümkün kılar. Python ile yazılmış olan bu araç, çalışan dizin veya belirtilen bir dosya yerine, doğrudan konfigürasyon üzerinde işlem yaparak verimliliği artırır.

Neden yq Kullanmalıyız?

YAML, yapılandırmalar ve veri temsilinde yaygın bir format olduğu için, yq kullanmanın birçok avantajı vardır:

  1. Okunabilirlik: yq, karmaşık YAML dosyalarını kolayca işlemenize olanak tanır, bu sayede veri yapınızı daha iyi anlayabilirsiniz.
  2. Veri Manipülasyonu: Büyük yapılandırma dosyaları üzerinde bassitleştirilmiş manipülasyonlar yaparak, yalnızca ihtiyacınız olan bilgileri hızlı bir şekilde almanıza yardımcı olur.
  3. Otomasyon: DevOps ve CI/CD süreçlerinde, konfigürasyon ayarlarını otomatikleştirerek hata olasılığını azaltır.
  4. Uyumluluk: yq formatı, sadece YAML dosyalarıyla sınırlı olmayıp, JSON biçimindeki dosyalarla da uyum sağlar.

Kullanım Alanları

yq, çeşitli alanlarda fayda sağlayabilir:

Siber Güvenlik Açısından yq'nin Önemi

Siber güvenlik alanında, konfigürasyon hataları bilgilerin açığa çıkmasına veya sistemlerin saldırılara karşı savunmasız hale gelmesine neden olabilir. yq sayesinde, güvenlik uzmanları YAML dosyalarını kontrol edebilir ve düzgün yapılandırmamış alanları tespit edebilirler. Bu, siber güvenlik sağlamak için kritik bir öneme sahiptir.

Örnek Kullanım

yq ile bir YAML dosyasındaki belirli bir alanı sorgulamak oldukça basittir. Aşağıda, bir yapılandırma dosyasından belirli bir alanı almak için kullanılan bir yq komutu örneği yer almaktadır:

yq eval '.database.username' config.yaml

Bu örneği ele alırsak, config.yaml dosyasında database.username anahtarının değerini seçmekteyiz. Bunun yanı sıra, yq aracı ile bir anahtarın değerini değiştirmek de mümkündür:

yq eval '.database.password = "newpassword123"' -i config.yaml

Bu komut, config.yaml dosyasındaki database.password anahtarının değerini değiştirecektir.

Sonuç olarak, yq, YAML verileri ile etkileşimde bulunmak, konfigürasyonları yönetmek ve düzenlemek için etkin bir araçtır. Siber güvenlik alanında, yapılandırma dosyalarının dikkatli bir şekilde gözden geçirilmesi ve yönetilmesi, sistemlerin güvenliğini artırmak adına büyük öneme sahiptir.

Teknik Detay

yq ile YAML Veri İşleme

YAML (YAML Ain't Markup Language), insan tarafından okunabilir veri serileştirme formatıdır ve genellikle yapılandırma dosyalarında veri saklamak için kullanılır. yq, YAML verilerini işlemek için güçlü bir komut satırı aracıdır. Bu araç, JSON formatına benzer bir işleve sahip olmakla birlikte, YAML’ın doğasına uygun olarak daha basit ve kullanıcı dostu bir yapı sunar.

yq Nedir?

yq, YAML dosyalarını okuma, düzenleme ve yazma işlemlerini kolaylaştıran bir araçtır. jq adlı JSON işleme aracı ile benzerlik göstermektedir; fakat, yq özellikle YAML formatında veri manipülasyonu için optimize edilmiştir. İşlemci tarafı olarak Go dilinde yazılmıştır ve hem Linux hem de Windows sistemlerinde çalıştırılabilir.

Kavramsal Yapı ve İşleyiş Mantığı

yq komutu, YAML dosyalarındaki verileri alır ve bu veriler üzerinde sorgulama veya güncelleme işlemleri gerçekleştirilmesini sağlar. Komut satırından çalıştırılan yq, dosyayı okur, belirtilen path query ifadelerine göre verileri filtreler ve sonuçları çıktılar. Aşağıdaki yapı, yq aracının temel kullanım amacını belirtmektedir:

  1. YAML dosyasını okuma.
  2. Belirtilen path query ile verileri seçme.
  3. Verileri güncelleme veya formatını değiştirme.
  4. Sonucu yazdırma veya başka bir dosyaya kayıt etme.

Kullanılan Yöntemler

yq, YAML dosyalarını işlemek için birkaç temel komut içerir:

Aşağıda basit bir YAML dosyası ve yq ile bu dosyadan nasıl veri çekileceğine dair bir örnek verilmiştir.

Örnek YAML Dosyası

personeller:
  - ad: Ahmet
    soyad: Yılmaz
    yas: 30
  - ad: Ayşe
    soyad: Demir
    yas: 25

yq Kullanarak Okuma

YAML dosyasından belirli verileri çekmek için kullanılan bir komut:

yq eval '.personeller[].ad' personel.yaml

Bu komut, personel.yaml dosyasındaki tüm personel isimlerini çıkartacaktır.

Dikkat Edilmesi Gereken Noktalar

Teknik Bileşenler

yq aracının sunduğu birkaç önemli özellik şunlardır:

Bu özellikler sayesinde, yq sadece basit bir veri işleme aracı değil, aynı zamanda karmaşık veri yapıları üzerinde derinlemesine analizler yapmanıza olanak tanıyan bir platformdur.

Sonuç

YAML dosyalarının işlenmesi, özellikle yapılandırma yönetimi açısından önemli bir konudur. yq aracı, bu süreci kolaylaştırarak veri manipülasyonu ve analizi konusunda kullanıcılara esneklik sağlar. Komut satırında etkili bir şekilde YAML verilerini işlemek için yq, güvenilir ve güçlü bir araç olma niteliği taşımaktadır.

İleri Seviye

İleri Seviye yq - YAML Veri İşleme

YAML, göreli olarak insan tarafından okunabilir bir veri serileştirme biçimi olarak siber güvenlik araçları ve konfigürasyon yönetiminde sıkça kullanılmaktadır. yq, YAML verilerini işlemek için güçlü bir komut satırı aracıdır. Bu bölümde, yq'nin ileri seviye kullanımını sızma testleri bağlamında ele alacağız ve birkaç gerçekçi teknik örnek vereceğiz.

yq Kurulumu

Yq'nin en güncel sürümünü kurmak için kullanabileceğiniz basit bir komut:

# MacOS için
brew install yq

# Linux için
sudo snap install yq

Payload Analizi

YAML dosyalarında sıkça bulunan güvenlik bilgilerini incelemek veya manipüle etmek için yq kullanımı oldukça etkilidir. Örneğin, bir uygulamanın yapılandırma dosyasındaki API anahtarlarını veya hassas bilgileri sızdırma testi gerçekleştirebilmek için aşağıdaki komutlar kullanılabilir:

# Belirli bir anahtarı ayıklamak
yq eval '.api_key' config.yaml

Bu komut, config.yaml dosyasından api_key anahtarının değerini çıkaracaktır.

Karmaşık Yapılarda Veri Çekme

YAML'daki iç içe yapılar, analizde karmaşıklık oluşturabilir. Örneğin, bir mikro hizmet mimarisinde çok katmanlı yapılandırmalara rastlayabilirsiniz.

Aşağıdaki config.yaml örneği üzerinden "database" bölümündeki "host" değerini çekelim:

services:
  web:
    image: web-app
    database:
      host: db.example.com
      port: 5432

Bu veriyi almak için şu şekilde bir komut kullanabilirsiniz:

# Database host bilgisini alma
yq eval '.services.web.database.host' config.yaml

Filtreleme ve Değiştirme

YAML dosyasındaki belirli değerleri filtrelemek veya güncellemek için yq'nin tekrar kullanılabilirliği önemli bir avantajdır.

Örneğin, bir version değerini güncellemek için:

# Version bilgisini güncelleme
yq eval '.version = "2.0.0"' -i config.yaml

Burada -i bayrağı dosyayı yerinde güncelleme yapmanızı sağlar.

Verilerin Süzülmesi

Sızma testi senaryolarında, yalnızca belirli verilere ihtiyaç duyabilirsiniz. Eğer yapılandırma dosyanızda çok sayıda veri varsa, belirli anahtarlar ile filtreleme yapmak işinizi kolaylaştırır.

# Tüm servisleri ve ilgili portlarını listeleme
yq eval '.services | to_entries | .[] | {(.key): .value.port}' config.yaml

Bu komut, her servisin ismini ve ona ait port bilgilerini listeleyecektir.

Uzman İpuçları

  1. Yedekleme: Özellikle canlı sistemlerde çalışıyorsanız, YAML dosyalarının yedeğini almayı ihmal etmeyin.

    cp config.yaml config.yaml.bak
    
  2. Otomasyon: yq komutlarını bir bash script içinde otomatikleştirerek düzenli kontroller yapabilirsiniz.

#!/bin/bash

# YAML yapılandırmalarını kontrol eden basit bir script
if yq eval '.services.web.database.host' config.yaml > /dev/null; then
    echo "Database host bilgisi mevcut."
else
    echo "Database host bilgisi bulunamadı!"
fi
  1. Hataları Yakalayın: Eğer yq komutunuzda bir hata alırsanız, hata ayıklama yapabilmek için -e bayrağını kullanarak detaylı geri dönüş alabilirsiniz:
yq eval -e '.api_key' config.yaml

Sonuç

yq, YAML dosyalarını işlemede sunmuş olduğu fonksiyonlar ile sızma testi senaryolarında büyük kolaylıklar sağlamaktadır. Veri çekme, güncelleme ve filtreleme yetenekleri sayesinde, güvenlik uzmanları, yapılandırma dosyaları üzerinde derinlemesine analiz yapabilir ve gerektiğinde kritik bilgileri daha hızlı bir şekilde elde edebilirler. Markdown formatında sağlamış olduğumuz içerik ile yq'nin nasıl etkili bir şekilde kullanılabileceğine dair ileri seviye bilgiler sunmayı amaçladık.