Git'teki şifreli imzalama işlemlerinin ve etiketlerinin avantajları ve dezavantajları nelerdir?


109

Böylece bir meslektaşım işimi gözden geçirdi ve bana taahhütlerimi ve etiketlerimi her zaman şifreli olarak imzalamam gerektiğini söyledi. Neden diye sorulduğunda, bana açıklamayı bilmiyordu ve “Bu sadece yapılması gereken iyi bir şey” dedi.

Açıkça bir şempanze senaryosundan kaçınmaya çalışıyorum , neden gerçekten yapayım? Gerçekten çok fazla belirgin avantaj ve dezavantaj yok mu?

Yaptığım her taahhüdü ve etiketi imzalamak istememi sağlayan pratik nedenler nelerdir?


3
Sanırım size bağlılığı bağlayan bir kağıt izi var. Git ya da başka bir kaynak kontrol sistemiyle daha önce hiç taahhüt vermedim. Eşiniz sahtekarlık riski olduğuna inanıyorsa, şirketinizin muhtemelen daha büyük güvenlik sorunları olduğunu taahhüt eder.
James,

@James: Bu şirket işi değil ama bazı açık ve kapalı kaynak projelere katılıyorum.
Madara Uchiha,

@James: "daha büyük güvenlik sorunları" --- ne gibi? İmzalamak onları çözmenin teknik bir yolu değil mi?
zerkms

8
mikegerwitz.com/papers/git-horror-story.html imzalı taahhütlerin ve etiketlerin kullanımı için bir başlangıç ​​noktasıdır.

1
@ SVN hesabınızı kullanarak taahhütte bulunduğunuzda James, hesabınızı imzalarsınız. Git global config ile çalıştığınızda, yazar olduğunuzu onaylayan tek yetkili sizsiniz.
Florian Margaine

Yanıtlar:


102

(Bu, büyük ölçüde Git Korku Öyküsü'ne dayanmaktadır : İmzalı Taahhütlere Sahip Depo Bütünlüğü - çok iyi bir okuma ve cevap yazabileceğimden daha fazla bilgi.)

Bir git deposunun tehlikeye girebileceği birkaç yol vardır (bu bir güvenlik açığı değildir, sadece yaşamın bir gerçeğidir - bu nedenle git'i kullanmaktan kaçınmamalıdır). Örneğin, birisi siz olduğunuzu iddia ederek depoya göndermiş olabilir. Ya da bu konuda, birisi sizin olduğunuzu iddia eden bir başkasının deposuna itebilirdi (biri siz de olduğunu iddia ederek kendi deposuna itebilir). Bu DVCS'deki hayatın bir parçası.

Sadece bir örnek olarak:

$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com

Burada, git yapılandırmamı, ben varımmışım gibi değiştirdim. Ve şimdi karar verdim ve bu taahhütlerin bir şekilde prodüksiyona girmelerini sağladım ve bunu yapmış gibi görünüyorsun.

Taahhütlerin (ve etiketlerin) imzalanmasıyla, belirli taahhütlerin ve etiketlerin sizden olduğunu kanıtlayabilirsiniz (ve imzalanmayanların üretim yapmasına izin vermemeliydi). Bu gerçekten hepsinin anahtarı - imzalamanız sizin işiniz olduğunu söyleyerek taahhüt ediyorsunuz.

“İşiniz” yönü, zaman zaman telif hakkı davalarıyla vurulan linux çekirdeğinde (ve dolayısıyla git) özellikle önemlidir. İmzalama, yazılıma hakkınız olduğunu söyler - kökenini izler. Telif hakkı olarak talep edilen kaynağa erişiminiz olmayabilir ve talep temelsiz olabilir. Şirket sizin için birkaç yıl önce çalıştığınızı ve onların yönünde olduklarını unutmuş olabilir , çekirdeğe ya da her neyse.

Her taahhüdün imzalanıp imzalanmayacağı konusunda bazı tartışmalar var. Gönderen GPG imzalanması Git için taahhüt? ('09'da geri döndü), Linus şunu yazdı:

Her bir sözleşmeyi imzalamak tamamen aptalca. Bu sadece onu otomatikleştirdiğiniz ve imzayı daha az değerli hale getirdiğiniz anlamına gelir. Aynı zamanda, herhangi bir gerçek değer katmaz, çünkü SHA1'in git DAG zincirinin çalışması, tüm taahhütlerin bu şirket tarafından etkin bir şekilde karşılanabilmesi için yalnızca bir imzaya ihtiyacınız vardır. Bu yüzden her bir anlaşmayı imzalamak sadece noktayı eksik.

Git'te oturum açma konusundaki düşünceler hakkında çok daha fazlası orada da okunabilir.

Bu, zaten gitmesine yol açtı dedi.

İmzalama işlemlerinin gereksiz olduğu, ancak etiketlerin imzalanmasının çok iyi olduğu konusunda bir fikir birliği var gibi görünüyor. En üste bağlanmış olan bu blog yazısı, birinin her şeyi yine de imzalaması gerektiğini gösteriyor. Dediğim gibi, her taahhüdün gerekli olup olmadığı hakkında bazı tartışmalar var.

"Her taahhüdü imzala" tartışmasının anahtarı muhtemelen kullandığınız iş akışı ile ilgilidir. Çoğu insan yerel reposunda bir sürü taahhütte bulunur ve ardından bu seti iter. Son koleksiyonun etiketlenmesi yeterli olacaktır (varsayalım ki, tüm değişikliklerin doğru olduğundan emin olmalısınız). Çok sayıda tek komisyonun hareket ettiği bir ortamda çalışıyorsanız, bir etiket ile bir taahhüt arasındaki fark daha az olur ... ve imzalama taahhütleri daha kullanışlı olabilir.


5
O (sonuncuyu etiketlemek için) yeterli olabilir, ama neden olmaz sadece her taahhüt etiketlemek?
hayd

3
Etiket kullanmayan tembel bir piç olarak, önceki yorumu iptal ediyorum. İş istasyonumdaki git konfigürasyonunda sahip commit.gpgsign = trueolduğum ve hiçbir dezavantaj olmadığını tespit edebiliyorum. Aptal olsa da, çok pahalı gibi görünmüyor.
pnovotnak 12:16

3
Bu konuda @pnovotnak ile gidiyorum, neden bunu yapmıyorsunuz? Demek istediğim, taahhütlerimi imzaladım ve başka bir geliştirici aynı projede bulunmuyor, kimin umrunda? Ancak bir bilgisayar korsanı kimliğimi çalmaya çalışırsa imzayı işaret edebilirim. Bana göre imzalamanın sadece avantajları var. İmzanızın daha az değer alacağı konusunda hemfikirim ama bunu düşünmek zorunda olmadığınız için bunu takas ediyorsunuz. Temelde ücretsiz güvenlik.
Jappie Kerk

2
Benim kişisel görüşüm, her taahhüdü imzalamanın iyi bir şey olduğu. İmzamla ilgili olanların benden geldiğinden emin olabilirim, ancak bir yazarı vanilya git ile taklit etmek önemsizdir. Ücretsiz doğrulama olarak adlandırmayı tercih ederim, aksi takdirde güvende olduğunuzu varsaydığınız kişi değil.
berto

1
@JosiahYoder. Hayır, Github bir düğmeye basmayı reddetmeyecek çünkü e-posta hizmetinde değil. Kodunuzu başka bir hizmette barındırdığınızı (örneğin: Bitbucket) ve havuzunuzu başka bir sağlayıcıya taşımak istediğinizi varsayalım. Kullanıcıların bir depo aktarmasını önler (birden fazla kullanıcı tarafından birden fazla işlem yapar) veya aynalar vs. oluşturur. DVCS'nin bir özelliğidir.
Ricky Notaro-Garcia,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.