WEB / WEB-21.S02
Dependencies, CI/CD integrity ve safe deployment
Artifact byte eşitliğini, provenance’ı ve configuration gate’lerini ayrı değerlendir.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Review izinli
- Source fixture hazır
Source fixture Atlas Notes ve Tea & Bread public text’ini, expected manifest’i ve source revision alias’ını taşır. Builder henüz digest üretmedi; review gate henüz hash/config/provenance kararı vermedi.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Local bytes pending; actual CI=false
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Source builder’a geldi
Builder’a completed input arrival olur; bu actor gerçek CI runner veya dependency package install yapmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Fixed public input received; byte preparation pending
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Digest adayı hazır
Builder local fixed bytes ve SHA metadata’sını hazırlar; provenance verification bu adımın kriptografik sonucu değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Candidate gate’e geldi
Gate completed artifact arrival’ını görür; hash, provenance ve config ayrı yerel kontroller olarak bekler.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Candidate received; hash/provenance/config pending
- Local candidate list
- Local review list unchanged; deployment=false
- Review gate kararı
Her gate aynı candidate’a bağlı değerlendirilir; doğru digest tek başına trusted builder veya safe config kanıtı değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Hash/provenance/config/review allow
- Local candidate list
- Local review list unchanged; deployment=false
- Review dispatch hazır
Approved candidate yalnız owned local review listesi için hazırlanır; release/deployment permission bulunmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Approved local-review candidate ready; deploy=false
- Local candidate list
- Local review list unchanged; deployment=false
- Local review teslimi
Candidate completed arrival’da yerel review listesine gelir; public publishing veya infrastructure write gerçekleşmez.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Approved local-review candidate ready; deploy=false
- Local candidate list
- Candidate received for review; no deployment/write
- Eligible review sonucu
Son state yalnız eligible-for-review’dır; actual CI, runtime configuration enforcement ve rollout henüz kanıtlanmış değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Approved local-review candidate ready; deploy=false
- Local candidate list
- Eligible-for-review; published=false; deployed=false
Hash farklı
- Source fixture hazır
Source fixture Atlas Notes ve Tea & Bread public text’ini, expected manifest’i ve source revision alias’ını taşır. Builder henüz digest üretmedi; review gate henüz hash/config/provenance kararı vermedi.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Local bytes pending; actual CI=false
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Source builder’a geldi
Builder’a completed input arrival olur; bu actor gerçek CI runner veya dependency package install yapmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Fixed public input received; byte preparation pending
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Digest adayı hazır
Builder local fixed bytes ve SHA metadata’sını hazırlar; provenance verification bu adımın kriptografik sonucu değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Candidate gate’e geldi
Gate completed artifact arrival’ını görür; hash, provenance ve config ayrı yerel kontroller olarak bekler.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Candidate received; hash/provenance/config pending
- Local candidate list
- Local review list unchanged; deployment=false
- Review gate kararı
Her gate aynı candidate’a bağlı değerlendirilir; doğru digest tek başına trusted builder veya safe config kanıtı değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Known public-byte mismatch; no approval
- Local candidate list
- Local review list unchanged; deployment=false
- Candidate withheld
Gerekli hash/config/provenance koşulu kabul edilmedi; local listesine hiçbir candidate dispatch yapılmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Review delivery=0; approved body absent; write=false
- Local candidate list
- Local review list unchanged; deployment=false
- Diagnostic ayrımı
Local reason known mismatch ile unknown provenance’ı ayırır; olumsuz gate production’a veya review listesine aktarılmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Known config/hash denial
- Local candidate list
- Local review list unchanged; deployment=false
Debug açık
- Source fixture hazır
Source fixture Atlas Notes ve Tea & Bread public text’ini, expected manifest’i ve source revision alias’ını taşır. Builder henüz digest üretmedi; review gate henüz hash/config/provenance kararı vermedi.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Local bytes pending; actual CI=false
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Source builder’a geldi
Builder’a completed input arrival olur; bu actor gerçek CI runner veya dependency package install yapmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Fixed public input received; byte preparation pending
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Digest adayı hazır
Builder local fixed bytes ve SHA metadata’sını hazırlar; provenance verification bu adımın kriptografik sonucu değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Candidate gate’e geldi
Gate completed artifact arrival’ını görür; hash, provenance ve config ayrı yerel kontroller olarak bekler.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Candidate received; hash/provenance/config pending
- Local candidate list
- Local review list unchanged; deployment=false
- Review gate kararı
Her gate aynı candidate’a bağlı değerlendirilir; doğru digest tek başına trusted builder veya safe config kanıtı değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Hash matches; debug policy denied
- Local candidate list
- Local review list unchanged; deployment=false
- Candidate withheld
Gerekli hash/config/provenance koşulu kabul edilmedi; local listesine hiçbir candidate dispatch yapılmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Review delivery=0; approved body absent; write=false
- Local candidate list
- Local review list unchanged; deployment=false
- Diagnostic ayrımı
Local reason known mismatch ile unknown provenance’ı ayırır; olumsuz gate production’a veya review listesine aktarılmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Known config/hash denial
- Local candidate list
- Local review list unchanged; deployment=false
Provenance eksik
- Source fixture hazır
Source fixture Atlas Notes ve Tea & Bread public text’ini, expected manifest’i ve source revision alias’ını taşır. Builder henüz digest üretmedi; review gate henüz hash/config/provenance kararı vermedi.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Local bytes pending; actual CI=false
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Source builder’a geldi
Builder’a completed input arrival olur; bu actor gerçek CI runner veya dependency package install yapmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Fixed public input received; byte preparation pending
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Digest adayı hazır
Builder local fixed bytes ve SHA metadata’sını hazırlar; provenance verification bu adımın kriptografik sonucu değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Gate waiting; candidate not accepted
- Local candidate list
- Local review list unchanged; deployment=false
- Candidate gate’e geldi
Gate completed artifact arrival’ını görür; hash, provenance ve config ayrı yerel kontroller olarak bekler.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Candidate received; hash/provenance/config pending
- Local candidate list
- Local review list unchanged; deployment=false
- Review gate kararı
Her gate aynı candidate’a bağlı değerlendirilir; doğru digest tek başına trusted builder veya safe config kanıtı değildir.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Hash matches; provenance evidence unknown
- Local candidate list
- Local review list unchanged; deployment=false
- Candidate withheld
Gerekli hash/config/provenance koşulu kabul edilmedi; local listesine hiçbir candidate dispatch yapılmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Review delivery=0; approved body absent; write=false
- Local candidate list
- Local review list unchanged; deployment=false
- Diagnostic ayrımı
Local reason known mismatch ile unknown provenance’ı ayırır; olumsuz gate production’a veya review listesine aktarılmaz.
- Source fixture
- Fixed public source/manifest ready
- Local builder
- Public artifact and declared manifest ready
- Review gate
- Unknown provenance; safely withheld
- Local candidate list
- Local review list unchanged; deployment=false
ROLLER · STATE · VERİ AKIŞI
Environment config de release girdisidir
Aynı artifact farklı runtime config ile farklı exposure yaratabilir. Debug output, admin access policy, kabul edilen host profile, secrets injection ve storage bağlantıları environment’e göre belgelenir. Atlas Notları review profile’ı debug=false, admin owner-only ve host profile configured=true gerektirir; bunlar örneğin policy koşullarıdır. Django 5.2 deployment checklist production’da DEBUG’ı kapatmayı açıklar, fakat bu örnek Django çalıştırmaz; tek flag bütün sistemi güvenli yapmaz. Admin’i görünmeyen URL’ye taşımak authentication veya authorization değildir. Network isolation ve application permission ayrı katmanlardır. Config review build hash’inden bağımsızdır: doğru byte’lar yanlış exposure ile çalışabilir. Burada profile yalnız adayın yerel review listesine kabulünü belirler; deployment yapılmaz.
Dependencies yalnız direct package değildir
Dependency inventory direct ve transitive package’ları, build tooling’i ve pipeline integration/action’larını kapsar. Lockfile resolution ve integrity metadata’sını sabitler; her package’ın güvenilir veya vulnerability içermediğine dair sertifika değildir. Pinning, edinilen package’ın provenance’ı ve version review ile birlikte değerlendirilir. Third-party JavaScript browser document context’inde çalışıyorsa data access boundary’sini de etkiler; CDN’den gelmesi izolasyon sağlamaz. SRI belirli resource byte’larını expected hash ile karşılaştırır. Expected hash’i taşıyan HTML’e güveni veya code’un business güvenliğini tek başına doğrulamaz. Cross-origin SRI browser CORS koşullarına bağlıdır. dep-A sentetik inventory alias’ıdır; gerçek installed package veya registry evidence’ı değildir.
Hash ile provenance birbirini tamamlar
SHA-256 artifact byte’larının eşitliğini karşılaştırır; expected digest’in hangi güvenilen manifest’ten geldiği ayrı sorudur. Provenance artifact’i source revision, builder ve build profile ile ilişkilendirir. SLSA v1.2 rehberi trusted builder/root, provenance signature ve beklenen buildType/parameters kontrollerini ayırır. Bu defter tamamlanmış SLSA attestation değildir; signature validation ve builder trust verilen koşullardır. Public text digest’i gerçekten yerel hesaplanır. Provenance-missing dalında digest doğru olsa bile builder kanıtı unknown olduğundan review delivery kapanır. Provenance code review veya deployment authorization değildir. Artifact ile metadata aynı güvenilmeyen yerden geliyorsa kendi aralarındaki eşleşme yeni trust oluşturmaz; hash sonucu ve approval nedeni ayrı kaydedilir.
Promote ve rollback için hangi evidence?
Safe deployment tasarımı reviewed artifact’i yeniden build etmeden aynı kimlik ve digest ile promote etmeyi, environment config ve release permission’ı doğrulamayı, health/rollback koşullarını önceden belirlemeyi amaçlar. Aynı tag’ın başka byte’lara çözülmesi veya rollback’ın incompatible data migration’a dönmesi ayrı risklerdir. Eski artifact’in varlığı geri dönüş garantisi vermez. source-rev-A ve builder-A açıklayıcı alias’lardır, gerçek Git commit veya runner değildir. Sahne source, builder, review gate ve yerel candidate listesiyle biter. Sonuç review’e uygun adaydır; published veya deployed değildir. Verilen review permission true olsa da actualDeployment=false kalır. Yerel gate’in tamamlanması infrastructure, public endpoint veya rollout’un doğrulandığı anlamına gelmez.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Hash ve config
- Exact public bytes
Expected artifactText Atlas Notes ve Tea & Bread satırları. SHA-256 byte equality’ye bağlı; source-rev-A ve builder-A ayrı declared identity aliases.
- Candidate input ledger
- Candidate-A / exact expected text
- Review conjunction
- Henüz değerlendirilmedi
- Local candidate sonucu
- Henüz değerlendirilmedi
- Hash-different kararı
Bread & Tea normal text değişikliği expected digest’i tutturmaz. ReviewDelivery false; bu denial bir executable payload veya supply-chain compromise tespiti değil.
- Candidate input ledger
- Candidate-A / exact expected text
- Review conjunction
- Different bytes / local review denied
- Local candidate sonucu
- Henüz değerlendirilmedi
- Approved body yok
Hash-different expectedApprovedBody null, expectedWrite false ve actualDeployment false. Reddedilen candidate’ın normal ID/digest’ini receiver’a approved diye taşımıyoruz.
- Candidate input ledger
- Candidate-A / exact expected text
- Review conjunction
- Different bytes / local review denied
- Local candidate sonucu
- No approved body / no write or deploy
- Debug-on aynı bytes
Debug-on artifactText normal ile aynı; digest check geçebilir. DebugEnabled true ayrı config gate’ini kapatır; byte identity application hardening’i doğrulamaz.
- Candidate input ledger
- Same digest / debug true / review denied
- Review conjunction
- Different bytes / local review denied
- Local candidate sonucu
- No approved body / no write or deploy
- Admin ve host config
Owner-only admin policy ve hostProfileConfigured ayrı deklarasyonlar. Bunlar gerçek server Access veya public exposure testinin sonucu olarak sunulmuyor.
- Candidate input ledger
- Same digest / debug true / review denied
- Review conjunction
- Config declarations / live enforcement unmeasured
- Local candidate sonucu
- No approved body / no write or deploy
- Release izni ayrı
Normal review teslimi bile deploymentPermission false taşır. Test veya digest başarısı builder’a deployment yetkisi vermez; local approval publication’a dönüşmez.
- Candidate input ledger
- Same digest / debug true / review denied
- Review conjunction
- Config declarations / live enforcement unmeasured
- Local candidate sonucu
- Local approval ≠ deployment permission
Provenance sınırı
- Doğru hash eksik bağ
Provenance-missing normal artifact bytes’ını korur; provenancePresent, builderTrustedDeclared ve signatureVerifiedDeclared null. Missing evidence false hash diye adlandırılmıyor.
- Candidate input ledger
- Digest equal / provenance evidence null
- Review conjunction
- Henüz değerlendirilmedi
- Local candidate sonucu
- Henüz değerlendirilmedi
- Unknown ile approve
Gate yalnız hash’i değil source, builder, dependency review ve review permission koşullarını ister. Unknown provenance approval’a tamamlanmadığı için reviewDelivery false.
- Candidate input ledger
- Digest equal / provenance evidence null
- Review conjunction
- Required provenance unknown / gate closed
- Local candidate sonucu
- Henüz değerlendirilmedi
- Signed değildir
CompleteSLSAAttestation false; sourceRevision gerçek Git commit ve builder gerçek runner değil. Alias ledger signed provenance veya trusted pipeline sertifikası vermez.
- Candidate input ledger
- Digest equal / provenance evidence null
- Review conjunction
- Required provenance unknown / gate closed
- Local candidate sonucu
- Declared aliases / no complete attestation
- Dependency pin scope
Dep-A lockedRevision fixture-rev-1 supplied inventory’dir; actualPackage false. Pinning resolution bilgisini daraltır, dependency code’un data kullanımı veya transitives’i onaylamaz.
- Candidate input ledger
- Declared locked revision ≠ code safety
- Review conjunction
- Required provenance unknown / gate closed
- Local candidate sonucu
- Declared aliases / no complete attestation
- SRI trust scope
SRI expectedHashNeedsTrust true ve SRIIsCodeSafety false. Cross-origin SRI CORS uyumluluğu ister; host Document’ta çalışacak code ayrı admission review’ü gerektirir.
- Candidate input ledger
- Declared locked revision ≠ code safety
- Review conjunction
- Integrity/trust/code admission distinct
- Local candidate sonucu
- Declared aliases / no complete attestation
- Etkiyi bounded tut
Bu örnek registry install, package scan veya actual browser SRI çalıştırmaz. Bozulan varsayım local gate input bağını eksik tutmaktır; gerçek vendor compromise sonucu eklenmez.
- Candidate input ledger
- Declared locked revision ≠ code safety
- Review conjunction
- Integrity/trust/code admission distinct
- Local candidate sonucu
- Local gate reasoning / no supply-chain incident claim
VARSAYIM · SINIR · KONTROL
Yeşil build’i güvenilir release sanmak
Başarılı build veya doğru digest’in provenance, config ve release approval’ı da tamamladığını varsaymak bağımsız gate’leri birleştirir. Böylece incelenmemiş source, farklı builder veya debug-on config aynı promotion sonucuna taşınabilir. Hash-different satırında public başlık sırası değişir; gate yalnız beklenen byte’ların farklı olduğunu belirler. Provenance-missing satırında ise byte eşitliği korunur ama builder kanıtı yoktur; bunu hash failure diye etiketlemek yanlıştır. İnceleme her gate’in doğru candidate ve input’a bağlı olup olmadığını sorar. Testin geçmesi builder’a deployment yetkisi veya admin exposure izni vermez. Gerçek CI runner, registry ve production settings incelenmediğinden supply-chain compromise ya da tamamlanmış safe deployment sonucu çıkarılmaz.
Dependency ve browser trust’ın scope’ı
Pinned dependency veya SRI hash’i third-party code’u kendiliğinden zararsız yapmaz. Bu kontroller resolution ve byte beklentisini sınırlar; data kullanımı, transitive behavior ve publisher provenance ayrıca incelenir. Runtime script document context’inde çalışırken farklı network host’tan gelmesi otomatik browser origin isolation sağlamaz. Integrity pass, secret classification’ını da değiştirmez. Buradaki inventory alanları verilen eğitim verisidir; source map, bundle veya package içeriği taranmaz. Hangi dependency, revision, permission ve build input’un aynı candidate’a ait olduğu ilişkilendirilir. Eksik review evidence unknown kalır ve review delivery kapanır. Yerel byte/gate sonucu gerçek package davranışı veya browser execution için kanıt değildir.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Review controls
- Normal candidate bağı
Candidate-A source-rev-A, builder-A ve expected digest ile bağlanır. Normal declared review/config koşulları true olduğunda approved body yalnız candidate ID ve digest taşır.
- Bytes ve declarations
- Normal local review / ID + digest
- Gate comparison
- Henüz değerlendirilmedi
- Evidence sonucu
- Henüz değerlendirilmedi
- Üç bağımsız deny
Hash-different byte equality’yi, debug-on config’i, provenance-missing evidence bağını sınar. Hepsi body null tutar; aynı denial farklı control coverage gösterir.
- Bytes ve declarations
- Normal local review / ID + digest
- Gate comparison
- Hash/config/provenance denials separate
- Evidence sonucu
- Henüz değerlendirilmedi
- Actual hash kontrolü
SHA public artifactText için gerçekten hesaplanabilir. Bu calculation builder identity veya signatureVerifiedDeclared koşullarını çalıştırmaz; gözlenen ve verilen alanlar ayrılır.
- Bytes ve declarations
- Normal local review / ID + digest
- Gate comparison
- Hash/config/provenance denials separate
- Evidence sonucu
- Computed SHA / supplied provenance predicates
- Immutable candidate review
Approval mutable branch adı yerine reviewed digest’e bağlanır. Source/config/builder değişirse yeni bağ gerekir; aynı filename veya candidate label’ı exact bytes yerine kullanılamaz.
- Bytes ve declarations
- Exact reviewed candidate / no mutable-name substitute
- Gate comparison
- Hash/config/provenance denials separate
- Evidence sonucu
- Computed SHA / supplied provenance predicates
- Boundary check kaydı
ReviewPermission, adminPolicy ve hostProfileConfigured conjunction’a katılır. BrowserSRI actualBrowserCheck false; rollbackHealthVerified false, bu checks yapılmış diye işaretlenmez.
- Bytes ve declarations
- Exact reviewed candidate / no mutable-name substitute
- Gate comparison
- Permission/config required / browser/rollback unmeasured
- Evidence sonucu
- Computed SHA / supplied provenance predicates
- Local delivery receipt
Gate geçerse local review teslimi, geçmezse approvedBody null. Her row write false ve deployment false tutar; finite policy sonucu gerçek CI çalışması veya publish değildir.
- Bytes ve declarations
- Exact reviewed candidate / no mutable-name substitute
- Gate comparison
- Permission/config required / browser/rollback unmeasured
- Evidence sonucu
- Bounded review result / no deployment
Approval eksik
- Yalnız digest mesajı
Review yalnız expected hash equality biliyor; provenance, config ve permission evidence eksik. Aynı hash debug-on veya provenance-missing branch’te görülebilir.
- Bytes ve declarations
- Digest equal / other required gates missing
- Gate comparison
- Henüz değerlendirilmedi
- Evidence sonucu
- Henüz değerlendirilmedi
- Normal Boolean kopyalama
Normal builderTrustedDeclared true expectation’dır; missing event’in trusted builder sonucu değildir. Böyle bir field eklemek unknown provenance’ı approval’a dönüştürür.
- Bytes ve declarations
- Digest equal / other required gates missing
- Gate comparison
- Expected trusted builder ≠ event proof
- Evidence sonucu
- Henüz değerlendirilmedi
- Delivery belirsizliği
Bu review için approval ve configuration validity UNKNOWN. DeploymentPermission false korunur; digest equality’den publication veya safe production sonucu üretilmez.
- Bytes ve declarations
- Digest equal / other required gates missing
- Gate comparison
- Expected trusted builder ≠ event proof
- Evidence sonucu
- Approval/config UNKNOWN / deployment closed
- Gerekli review bağları
Source revision, builder evidence, dependency review, target config ve permission aynı candidate’a bağlanmalı. Actual bytes digest’i bu bağın yalnız bir parçasıdır.
- Bytes ve declarations
- Needed: source/builder/deps/config/permission
- Gate comparison
- Expected trusted builder ≠ event proof
- Evidence sonucu
- Approval/config UNKNOWN / deployment closed
- Attestation scope sorusu
Signed provenance iddiası için trusted root ve artifact subject bağı gerekir. Bu alias profile complete attestation içermiyor; field adı signature olsa bile native doğrulama varsayılmıyor.
- Bytes ve declarations
- Needed: source/builder/deps/config/permission
- Gate comparison
- Named signature field ≠ verified attestation
- Evidence sonucu
- Approval/config UNKNOWN / deployment closed
- Yeni kanıtın sonucu
Yeni record bütün required gates’in aynı digest için karar verdiğini göstermeli. Bu olay digest equality’yi korur, fakat missing provenance veya config’i tahmin ederek kapatmaz.
- Bytes ve declarations
- Needed: source/builder/deps/config/permission
- Gate comparison
- Named signature field ≠ verified attestation
- Evidence sonucu
- Retain digest / collect scoped gate evidence
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Adayın kimliğini gate’ler boyunca koru
Source revision, dependency resolution profile, builder trust kanıtı, artifact digest ve target configuration’ı aynı candidate ID’ye bağla. Approval mutable tag veya branch adına değil incelenen artifact’e ait olmalıdır. Build runner identity ve permission’ını gerekli kapsamla sınırla; release gate ayrı yetki ister. Bu candidate listesi yalnız yerel review teslimini kabul eder, publication izni taşımaz. Debug ve admin policy kontrolleri hash kontrolünden bağımsızdır. Dependency değişikliğini contract değişikliği gibi incele: direct/transitive kapsamı ve browser script erişimini belgele. SRI için expected hash kaynağı ve cross-origin CORS uyumluluğunu koru. Gerçek platformdaki signed provenance ve trusted root bağlantıları ayrı doğrulama gerektirir; buradaki alanlar verilen koşullardır.
Ret durumunda candidate teslimini durdur
Yerel kontrol Atlas Notes public text’lerinin SHA-256 digest’ini hesaplar ve verilen gate’leri birlikte değerlendirir. Hash-different, debug-on ve provenance-missing için expectedReviewDelivery=false, write=false ve approvedBody=null aranır. Eksik provenance boolean false diye gizlenmez; unknown evidence ayrı tutulur. Normal dalın son actor’ı adayı yalnız approved local review için alır. Debug flag ve admin policy bu modelde configuration beyanıdır; server’a uygulanmış ayar değildir. Aynı digest korunurken yanlış config’in reddedilmesi byte kimliğiyle config uygunluğunu ayırır. Yerel sonuç artifact eşitliği ve sınırlı policy hesabıdır; dependency supply chain, browser SRI enforcement, reproducible build veya rollback health için ayrı execution evidence gerekir.
ŞİMDİ VAKAYA UYGULA
Artifact equality local review gate’ini tek başına açar mı?
Candidate-A için Atlas Notes ve Tea & Bread bytes’ı bekleniyor. Bread & Tea hash’i değiştiriyor; debug-on aynı bytes’ı korusa da review gate’ini kapatıyor. Provenance-missing digest’i doğru tutarken builder evidence’ını unknown bırakıyor. Bu üç sonuç local review içindir, deployment değildir.
Vakadaki data journey’yi environment, dependency ve telemetry context’iyle birlikte değerlendir. Bir operational success etiketi bütün application sonuçlarını kanıtlar mı?
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Atlas Notları — build review karar defteri
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"profile": {
"candidateId": "candidate-A",
"sourceRevision": "source-rev-A",
"builder": "builder-A",
"artifactText": "Atlas Notes\nTea & Bread\n",
"expectedSha256": "33712b8230bab40dfec44a3f5d732760810e62715641864fdd8c8b43e9563129",
"target": "owned-local-review",
"actualCI": false,
"actualDeployment": false
},
"rows": [
{
"case": "normal",
"artifactText": "Atlas Notes\nTea & Bread\n",
"sourceRevision": "source-rev-A",
"builder": "builder-A",
"provenancePresent": true,
"builderTrustedDeclared": true,
"signatureVerifiedDeclared": true,
"dependencyReviewDeclared": true,
"reviewPermissionDeclared": true,
"debugEnabled": false,
"adminPolicy": "owner-only",
"hostProfileConfigured": true,
"expectedReviewDelivery": true,
"expectedApprovedBody": {
"candidateId": "candidate-A",
"sha256": "33712b8230bab40dfec44a3f5d732760810e62715641864fdd8c8b43e9563129"
},
"expectedWrite": false,
"actualDeployment": false
},
{
"case": "hash-different",
"artifactText": "Atlas Notes\nBread & Tea\n",
"sourceRevision": "source-rev-A",
"builder": "builder-A",
"provenancePresent": true,
"builderTrustedDeclared": true,
"signatureVerifiedDeclared": true,
"dependencyReviewDeclared": true,
"reviewPermissionDeclared": true,
"debugEnabled": false,
"adminPolicy": "owner-only",
"hostProfileConfigured": true,
"expectedReviewDelivery": false,
"expectedApprovedBody": null,
"expectedWrite": false,
"actualDeployment": false
},
{
"case": "debug-on",
"artifactText": "Atlas Notes\nTea & Bread\n",
"sourceRevision": "source-rev-A",
"builder": "builder-A",
"provenancePresent": true,
"builderTrustedDeclared": true,
"signatureVerifiedDeclared": true,
"dependencyReviewDeclared": true,
"reviewPermissionDeclared": true,
"debugEnabled": true,
"adminPolicy": "owner-only",
"hostProfileConfigured": true,
"expectedReviewDelivery": false,
"expectedApprovedBody": null,
"expectedWrite": false,
"actualDeployment": false
},
{
"case": "provenance-missing",
"artifactText": "Atlas Notes\nTea & Bread\n",
"sourceRevision": "source-rev-A",
"builder": "builder-A",
"provenancePresent": null,
"builderTrustedDeclared": null,
"signatureVerifiedDeclared": null,
"dependencyReviewDeclared": true,
"reviewPermissionDeclared": true,
"debugEnabled": false,
"adminPolicy": "owner-only",
"hostProfileConfigured": true,
"expectedReviewDelivery": false,
"expectedApprovedBody": null,
"expectedWrite": false,
"actualDeployment": false
}
],
"dependencyInventory": [
{
"alias": "dep-A",
"scope": "runtime",
"lockedRevision": "fixture-rev-1",
"integrityEvidence": "declared",
"review": "accepted-declared",
"actualPackage": false
}
],
"browserBoundary": {
"SRIIsCodeSafety": false,
"expectedHashNeedsTrust": true,
"crossOriginSRIRequiresCORS": true,
"actualBrowserCheck": false
},
"provenanceProfile": {
"completeSLSAAttestation": false,
"sourceRevisionIsActualGitCommit": false,
"builderIsActualRunner": false
},
"promotionBoundary": {
"localReviewOnly": true,
"deploymentPermission": false,
"actualPublish": false,
"rollbackHealthVerified": false
}
}- rows
- Yerel review gate’i; hash, verilen provenance ve config ayrı koşullardır.
- dependencyInventory
- Sentetik alias; kurulu package inventory’si veya registry kanıtı değildir.
- browserBoundary
- SRI integrity kapsamı code safety veya browser test sonucu değildir.
- promotionBoundary
- Review için teslim, publication veya deployment değildir.
Public text için SHA yerel hesaplanır; provenance ve config koşulları verilidir. Gerçek CI, dependency installation, browser SRI kontrolü veya deployment çalıştırılmaz.
İki yanlış kanı
Hash doğruysa release güvenilirdir.
Expected hash’in kaynağı, builder/config koşulları ve release yetkisi ayrı kontrol edilir.
Pinned veya SRI’lı code güvenlidir.
Resolution ve byte eşitliği code’un davranışını veya business güvenliğini kanıtlamaz.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
Artifact byte’ları beklenen hash ile eşleşiyor, fakat debugEnabled=true. Local review delivery onaylanır mı?
- Evet. Matching hash bütün config ve access policy’lerini kanıtlar.
- Hayır. debug-on için expectedReviewDelivery=false.
Gerekçeli cevabı oku
Hayır. debug-on için expectedReviewDelivery=false. — Hash koşulu geçse de bu candidate’ın config policy’si geçmez. Approved body üretilmez.
Provenance alanları null. Source revision ve builder etiketi bulunması verified attestation sayılır mı?
Dersten seçilen artifact alanları; öğretim örneği
- rows[3].provenancePresent
- null
- rows[3].builderTrustedDeclared
- null
- rows[3].signatureVerifiedDeclared
- null
- rows[3].expectedReviewDelivery
- false
- provenanceProfile
- {"completeSLSAAttestation":false,"sourceRevisionIsActualGitCommit":false,"builderIsActualRunner":false}
- Hayır. Review delivery durur; complete attestation yok.
- Evet. Her builder adı kendi authenticity’sini garanti eder.
Gerekçeli cevabı oku
Hayır. Review delivery durur; complete attestation yok. — Builder/source alias’ları gerçek Git commit veya runner doğrulaması değildir. provenancePresent=null kabul için eksik kanıttır.
Local approved review body, SRI ve locked dependency neden gerçek deployment veya code safety garantisi değildir?
Gerekçeli cevabı oku
SRI beklenen byte’ları kontrol eder; bu code’un güvenli olduğunu değerlendirmez. Expected hash’in kendisi güvenilen kaynaktan gelmelidir; cross-origin SRI için CORS koşulları da vardır. Dependency revision’ın kilitlenmesi update/review policy’sini kaldırmaz. Bu output yalnız local review içindir; deploymentPermission=false ve actualPublish=false. Gerçek CI, package, browser SRI veya rollback health testi yapılmaz.
□ Hash/SRI başarısını code safety saymadım.
□ Local review sonucunu deployment izni veya yayın saymadım.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- OWASP CI/CD Security Cheat SheetManaging Third-Party Code / Dependency Management · Plug-In and Integration Management
- SLSA v1.2 Verifying artifactsHow to verify: builder identity, signature and expected buildType/parameters · Step1: artifact/provenance/root of trust binding
- Django5.2 Deployment checklistCritical settings: DEBUG · Environment-specific settings: ALLOWED_HOSTS / caches / databases
- MDN Subresource IntegrityHow browsers handle Subresource Integrity · Subresource Integrity and CORS / crossorigin
- Node.js v24.13.0 Cryptocrypto.createHash / hash.update / hash.digest on fixed public data