Açık Kaynak Lisans Uyumluluğu: Yazılım Şirketleri İçin Pratik Bir Kılavuz

Ticari yazılımlar için lisans kategorizasyonu, SBOM oluşturma, copyleft yükümlülükleri ve otomatik uyumluluk taraması ile açık kaynak lisans uyumluluğuna gidin.

E
ECOSIRE Research and Development Team
|16 Mart 20267 dk okuma1.4k Kelime|

Compliance & Regulation serimizin bir parçası

Tam kılavuzu okuyun

Açık Kaynak Lisans Uyumluluğu: Yazılım Şirketleri İçin Pratik Bir Kılavuz

Ortalama bir ticari uygulama, 500'den fazla bağımlılığa yayılmış %77 oranında açık kaynak kodu içerir. Her bağımlılık, belirli yükümlülüklere sahip kendi lisansını taşır. Bu yükümlülüklerin ihlal edilmesi, şirketinizi davalara, zorunlu kod ifşasına ve itibarınızın zedelenmesine maruz bırakır. Ancak çoğu şirketin açık kaynak lisanslarını takip etme veya bunlara uyma süreci yok.

Bu kılavuz, lisans kategorizasyonundan otomatik tarama ve SBOM oluşturmaya kadar açık kaynak lisans uyumluluğu için pratik bir çerçeve sağlar.

Önemli Çıkarımlar

  • Tüm açık kaynak lisansları aynı değildir: izin veren lisanslar neredeyse her şeye izin verir, copyleft lisansları ise değişiklikleri paylaşmanızı gerektirir
  • Yazılım Malzeme Listesi (SBOM), devlet alımlarında yasal bir gereklilik haline geliyor (ABD Yönetici Emri 14028)
  • CI/CD'de otomatik lisans taraması, uyumlu olmayan bağımlılıkların kod tabanınıza girmesini önler
  • Copyleft "bulaşma" riski gerçektir: bir GPL bağımlılığı sizi tüm uygulamanızı açık kaynak yapmak zorunda bırakabilir

Lisans Kategorileri

İzin Verilen Lisanslar (Düşük Risk)

LisansYükümlülüklerTicari KullanımDeğişiklikDağıtım
MİTTelif hakkı bildirimi + lisansı dahil edinEvetEvetEvet
BSD 2-MaddeTelif hakkı bildirimi + lisansı dahil edinEvetEvetEvet
BSD 3-MaddeAynı + onay iddiası yokEvetEvetEvet
Apache 2.0Bildirim + lisans + durum değişiklikleri + patent verilmesini dahil etEvetEvetEvet
ISCTelif hakkı bildirimi + lisansı dahil edinEvetEvetEvet

Ticari kullanım için güvenlidir. Lisans metnini ve telif hakkı bildirimini dağıtımınıza ekleyin. Apache 2.0 ayrıca orijinal koddaki herhangi bir değişikliğin dikkate alınmasını gerektirir ve bir patent lisansı içerir.

Zayıf Copyleft (Orta Risk)

LisansYükümlülüklerAnahtar Kısıtlaması
LGPL v2.1/v3LGPL kodundaki değişiklikleri paylaşın; kodunuz dinamik olarak bağlıysa özel olarak kalırStatik bağlantı copyleft'i tetikleyebilir
MPL2.0MPL dosyalarındaki değişiklikleri paylaşın; yeni dosyalar özel olabilirDosya düzeyinde copyleft
EPL2.0Değişiklikleri paylaşın; ikincil lisans seçeneği mevcutModül düzeyinde copyleft

Dikkatli kullanın. LGPL kitaplıklarını statik olarak bağlı değil, paylaşılan (dinamik) kitaplıklar olarak tutun. MPL lisanslı kodu, özel kodunuzdan ayrı dosyalarda saklayın.

Güçlü Copyleft (Yüksek Risk)

LisansYükümlülüklerAnahtar Kısıtlaması
GPL v2Türev çalışmalar GPL lisanslı olmalıdırBağlama türev çalışma yaratır
GPL v3v2 + anti-tivoizasyon + patent bağışı ile aynıDaha geniş copyleft
AGPL v3GPL v3 + ağ kullanımının copyleft'i tetiklemesiyle aynıSunucu tarafı kullanım sayıları
SSPL"Hizmet" yığınının tamamı açık kaynaklı olmalıdırEn geniş copyleft

Ticari yazılımlar için en yüksek risk. Uygulamanızda GPL kodunu kullanmak, uygulamanızın tamamını GPL kapsamında yayınlamanızı gerektirebilir. AGPL, bunu sunucu tarafı yazılımlara kadar genişletir; ikili dosyaları hiçbir zaman dağıtmasanız bile, yazılımı bir web hizmeti olarak sağlamak, copyleft yükümlülüğünü tetikler.


Uyumluluk İş Akışı

Adım 1: Bir SBOM oluşturun

# For Node.js projects (using CycloneDX)
npx @cyclonedx/cyclonedx-npm --output-file sbom.json --spec-version 1.5

# For Python projects
pip install cyclonedx-bom
cyclonedx-py environment --output sbom.json

# For multi-language projects (using Syft)
syft . -o cyclonedx-json > sbom.json

2. Adım: Lisans Uyumluluğunu Tarayın

# Using license-checker for Node.js
npx license-checker --production --json --out licenses.json

# Using scancode-toolkit (comprehensive, all languages)
scancode --license --copyright --output-json scan-results.json .

3. Adım: Sınıflandırın ve Onaylayın

Onaylanmış bir lisans listesi oluşturun:

{
  "approved": [
    "MIT", "BSD-2-Clause", "BSD-3-Clause", "Apache-2.0",
    "ISC", "0BSD", "Unlicense", "CC0-1.0"
  ],
  "conditional": [
    "LGPL-2.1", "LGPL-3.0", "MPL-2.0", "EPL-2.0"
  ],
  "prohibited": [
    "GPL-2.0", "GPL-3.0", "AGPL-3.0", "SSPL-1.0",
    "EUPL-1.2", "OSL-3.0"
  ]
}

Adım 4: CI/CD Entegrasyonu

# .github/workflows/license-check.yml
name: License Compliance
on: [pull_request]

jobs:
  check-licenses:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - run: pnpm install --frozen-lockfile

      - name: Check licenses
        run: |
          npx license-checker --production --excludePackages "" \
            --failOn "GPL-2.0;GPL-3.0;AGPL-3.0;SSPL-1.0" \
            --summary

SBOM (Yazılım Malzeme Listesi)

SBOM'lar Neden Önemlidir

  • ABD Yönetici Emri 14028, ABD hükümetine satılan yazılımlar için SBOM'ların kullanılmasını gerektirir
  • AB Siber Dayanıklılık Yasası, AB'de satılan yazılımlar için SBOM'ları gerektirecektir
  • Tedarik zinciri güvenliği: SBOM'lar güvenlik açıklarına hızlı yanıt verilmesini sağlar (log4j gerçekleştiğinde etkilenip etkilenmediğinizi bilirsiniz)
  • Müşteri güveni: Kurumsal alıcılar, satın alma sırasında giderek daha fazla SBOM talep ediyor

SBOM Standartları

StandartBiçimBakımı YapanEvlat Edinme
CycloneDXJSON, XMLOWASPBüyüyor (npm için varsayılan)
SPDXJSON, RDF, Etiket DeğeriLinux VakfıKuruldu (ISO/IEC 5962:2021)
SWIDXMLNISTHükümet

Öneri: Çoğu yazılım şirketi için CycloneDX. Daha basittir, daha iyi takım desteğine sahiptir ve endüstrinin varsayılanı haline gelmektedir.


Ortak Uyumluluk Senaryoları

Senaryo 1: Node.js Web Uygulaması

Tipik bir node_modules dizini 500-2.000 paket içerir. Büyük çoğunluk MIT veya ISC lisanslarını kullanıyor. Yaygın sorunlar:

  • GPL kullanan geçişli bağımlılıklar (bunları doğrudan eklemediniz)
  • Manuel inceleme gerektiren UNKNOWN lisans alanları
  • Tek bir pakette birden fazla lisans (ör. "MIT OR Apache-2.0")

Eylem: npx license-checker --production haftalık olarak çalıştırın. İzin verilmeyen lisansları araştırın. GPL bağımlılıklarını izin veren alternatiflerle değiştirin.

Senaryo 2: Odoo Modülü Geliştirme

Odoo Topluluk Sürümü LGPL v3'tür. Odoo Enterprise tescillidir. Özel modülleriniz:

  • Topluluk modülleri: LGPL v3 veya uyumlu olmalıdır (dağıtılmışsa)
  • Özel dahili modüller: Dağıtılmadığından LGPL geçerli değildir
  • Kurumsal eklentiler: Odoo Enterprise lisanslama şartlarına uygun olmalıdır

Senaryo 3: AGPL Bağımlılıklarıyla SaaS

SaaS uygulamanız AGPL lisanslı kod kullanıyorsa (örneğin, SSPL'ye geçmeden önce MongoDB), aşağıdakilerden birini yapmanız gerekir:

  1. Uygulama kaynak kodunuzun tamamını AGPL kapsamında yayınlayın
  2. AGPL bağımlılığını kaldırın ve bir alternatif kullanın
  3. AGPL projesinden ticari bir lisans alın (varsa)

AGPL kodunun sunucu tarafında kullanımı, ikili dosyaları hiçbir zaman "dağıtmasanız" bile copyleft yükümlülüğünü tetikler.


Sıkça Sorulan Sorular

API'mizde GPL kitaplığı kullanmak bizi API'mizi açık kaynak yapmaya zorluyor mu?

Bu onu nasıl kullandığınıza bağlıdır. GPL kitaplığı uygulamanıza (statik veya dinamik olarak) bağlıysa, FSF'nin görüşü, uygulamanızın "türetilmiş bir çalışma" olduğu ve GPL kapsamında lisanslanması gerektiği yönündedir. GPL yazılımıyla bir ağ API'si (örneğin, GPL lisanslı bir veritabanı sunucusu kullanarak) aracılığıyla iletişim kurarsanız, bu genellikle türev bir çalışma olarak kabul edilmez. Özel durumunuz için bir avukata danışın.

Bir bağımlılık lisansını değiştirirse ne olur?

Gelecekteki lisans değişikliklerine değil, kodu aldığınız lisansa tabi olursunuz. Ancak yeni bir lisansla yeni bir sürüme güncelleme yaparsanız yeni lisans o sürüm için geçerli olur. Bu nedenle sürüm sabitlemeli SBOM'lar önemlidir; tam olarak hangi sürümü (ve lisansı) kullandığınızı belgelerler.

"BİLİNMEYEN" lisanslarla bağımlılıkları nasıl ele alırız?

LİSANS dosyası için paketin deposunu kontrol edin. Herhangi bir lisans belirtilmemişse, kod teknik olarak tam telif hakkı koruması altındadır; onu kullanma, değiştirme veya dağıtma hakkınız yoktur. Lisansı bulun (standart dışı bir konumda olabilir), yazardan bir lisans eklemesini isteyin veya bağımlılığı açıkça lisanslanan bir alternatifle değiştirin.

MIT lisanslı paketler için ilişkilendirme yapmamız gerekiyor mu?

Evet. MIT ve çoğu izin veren lisans, yazılımı dağıtırken telif hakkı bildirimini ve lisans metnini eklemenizi gerektirir. Web uygulamaları için bu genellikle bir ÜÇÜNCÜ TARAF BİLDİRİMLERİ dosyasının veya tüm açık kaynak bileşenlerin ve bunların lisanslarının listelendiği bir sayfanın dahil edilmesi anlamına gelir.


Bir Uyumluluk Programı Oluşturmak

Üç Aylık Uyumluluk İncelemesi

  1. Tüm projeler için SBOM'u yeniden oluşturun
  2. Son incelemeden bu yana yeni bağımlılıkları tarayın eklendi
  3. Güncellenen paketlerdeki lisans değişikliklerini kontrol edin
  4. Görünen tüm "BİLİNMEYEN" lisansları inceleyin
  5. Yeni lisanslarla karşılaşılırsa onaylı lisans listesini güncelleyin
  6. Denetim takibi için SBOM anlık görüntülerini arşivleyin

Uyumluluk Rolleri

RolSorumluluk
Mühendislik lideriHalkla İlişkiler'deki bağımlılık eklemelerini gözden geçirin
Yasal/uyumlulukOnaylanmış lisans listesini tutar, uç durumları inceler
GüvenlikLisans taramasının yanı sıra savunmasız bağımlılıkları da tarar
Ürün sahibiÜrün için koşullu lisansların kabul edilebilir olup olmadığına karar verir

Hafif bir uyumluluk programı, küçük bir ekip için üç ayda bir 2-4 saat sürer ve ürün lansmanından sonra veya durum tespiti sırasında bir uyumluluk sorununu keşfetmenin çok daha büyük maliyetini önler.


Sırada Ne Var?

Lisans uyumluluğu yazılım yönetiminin bir yönüdür. Kendi kodunuz için bunu IP koruması, satıcı yazılımı için SaaS anlaşmasının temelleri ve güvenlik uyumluluğu için siber güvenlik düzenleme gereklilikleri ile birleştirin.

Açık kaynak uyumluluk denetimi ve SBOM oluşturma hizmetleri için ECOSIRE ile iletişime geçin.


ECOSIRE tarafından yayınlandı - işletmelerin açık kaynağı sorumlu bir şekilde kullanmasına yardımcı oluyor.

E

Yazan

ECOSIRE Research and Development Team

ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.

Compliance & Regulation serisinden daha fazlası

Denetim Hazırlığı Kontrol Listesi: ERP'niz Denetimleri Nasıl Yüzde 60 Daha Hızlı Hale Getirir?

ERP sistemlerini kullanarak denetim hazırlığı kontrol listesini tamamlayın. Uygun dokümantasyon, kontroller ve otomatik kanıt toplama ile denetim süresini yüzde 60 azaltın.

Çerez Onayı Uygulama Kılavuzu: Yasal Uyumlu Rıza Yönetimi

GDPR, eGizlilik, CCPA ve küresel düzenlemelere uygun çerez iznini uygulayın. İzin banner'larını, çerez kategorizasyonunu ve CMP entegrasyonunu kapsar.

Sınır Ötesi Veri Aktarımı Düzenlemeleri: Uluslararası Veri Akışlarında Gezinme

SCC'ler, yeterlilik kararları, BCR'ler ve GDPR, Birleşik Krallık ve APAC uyumluluğuna yönelik aktarım etki değerlendirmeleriyle sınır ötesi veri aktarımı düzenlemelerinde gezinin.

Bölgelere Göre Siber Güvenlik Düzenleme Gereksinimleri: Küresel İşletmeler için Bir Uyumluluk Haritası

ABD, AB, Birleşik Krallık, APAC ve Orta Doğu'daki siber güvenlik düzenlemelerinde gezinin. NIS2, DORA, SEC kurallarını, kritik altyapı gereksinimlerini ve uyumluluk zaman çizelgelerini kapsar.

Veri Yönetişimi ve Uyumluluğu: Teknoloji Şirketleri İçin Tam Kılavuz

Teknoloji şirketlerine yönelik uyumluluk çerçevelerini, veri sınıflandırmasını, saklama politikalarını, gizlilik düzenlemelerini ve uygulama yol haritalarını kapsayan eksiksiz veri yönetimi kılavuzu.

Veri Saklama Politikaları ve Otomasyon: İhtiyacınız Olanı Tutun, İhtiyacınız Olanı Silin

GDPR, SOX ve HIPAA için yasal gereklilikler, saklama programları, otomatik uygulama ve uyumluluk doğrulamasıyla veri saklama politikaları oluşturun.

WhatsApp'ta Sohbet Et