Sorunuz, ilgili platform / işletim sistemi hakkında herhangi bir varsayımda bulunmuyor gibi görünüyor. Bu nedenle, bunun "mühendislerin" (soru başlığınızda olduğu gibi) aslında düzinelerce (muhtemelen yüzlerce) insanın olduğu bir ana bilgisayar ortamında nasıl yapıldığı / ele alındığı hakkında bir cevap eklemek mantıklı olabilir. içeriyordu. Cevabım en çok tanıdığım SCM ürününü temel alıyor (ürün adını ifşa etmenin gerekip gerekmediğinden emin değilim).
1. Mimarlık
İşte sorunuza nasıl cevap vereceğimin önemli noktaları:
- Tüm kodlar (ve yürütülebilir dosyalar gibi ilgili eserler), hep birlikte kütüphane yapısı dediğimiz dosyalarda saklanır .
- Her (muhtemelen uzak) hedef sistemdeki her ortam için, kütüphane yapısındaki TÜM (yineleme: TÜM) güncellemelere dikkat eden bir sunucu (ana bilgisayar konuşmasında "başlatılan görev") vardır. Birkaç istisna vardır (güvenlik personeli veya alan yönetimi ekibi gibi), ancak bunun dışında hiç kimse (tekrar: kimse) bu kütüphane yapısındaki herhangi bir dosyaya güncelleme uygulama yetkisine sahip değildir. Başka bir deyişle: sunucu tüm kütüphane yapısına özel güncelleme yetkisi alır . Dikkat: Erişimlerini sınırlamak için yürürseniz (ilk başta direnecekler ...) OPS kullanıcıları çıldırır, bu yüzden bu erişim kurallarını uygulamak için üst yönetim (CxO) kapsamında olduğunuzdan emin olun ...
- Gerçek yazılım değişiklikleri tek bir bileşenden oluşuyor (gecenin ortasında küçük bir kod düzeltmesi ...) ya da yüzlerce veya binlerce kaynak, yürütülebilir dosya veya başka herhangi bir eser olabilir (bir yayın hafta sonu boyunca). Onları yönetilebilir kılmak için, birlikte (az ya da çok) birlikte taşınması gereken şeyler, bir yazılım değiştirme paketi olarak adlandırılır .
Yukarıdakiler yerinde olduğunda, sunucu tarafından kütüphane yapısına uygulanacak her türlü güncelleme, ancak bir yazılım değiştirme paketinin yaşam döngüsünü ( tercih ederseniz SDLC) olarak adlandırdığımız iyi tanımlanmış bir iş akışı ile mümkün olacaktır . Bu iş akışındaki çeşitli adımları gerçekten yürütmek için, bunun gerçekleşmesi gerekir:
- Gerekli (ve önceden yapılandırılmış) adımları yalnızca sunucu yürütür.
- Sunucu, böyle bir adımı gerçekleştirmek için gerekli onaylar (insanlardan) toplandıktan sonra, yalnızca belirli bir adımı (= kütüphane yapısında bir yerde güncelleme) yapacaktır.
- Onaylar, yalnızca bu onayları vermelerine izin veren (= izin) rolü olan kullanıcılar tarafından verilebilir.
2. Roller ve izinler
Sunucu, bir şey yapmaya çalışan kullanıcının ('bir şeyi onaylama' gibi) ancak kullanıcının izinleri uygun olduğunda bunu yapabilmesini sağlar. Bu kısım kolay. Ancak, ilgili tüm kullanıcılar için tüm bu izinleri yönetmek için SCM sistemini kullanmak istemezsiniz, iş sisteminizi (SCM sisteminizde) uyarlayabilmeniz için güvenlik sisteminize (SCM sistemine değil!) Aittir. gitmek için bu izinleri kontrol edin. Aşağıdaki adımlar bununla ilgili daha fazla ayrıntı sunmaktadır.
Adım 1: İzinleri yapılandırın (güvenlik sisteminde)
Define güvenlik varlıkları bu varlıklar için iyi tanımlanmış adları ile birlikte güvenlik sistemi. Birkaç örnek (kendi ihtiyaçlarınıza uyacak benzerleri ekleyin):
PrmUnit
Bir istemek için izin almak için kullanılan teşvik söylemek Birim -Kaynak.
PrmQA
Bir istemek için izin almak için kullanılan teşvik söylemek Qa -Kaynak (hadi bu test en üst düzeyde olduğunu varsayalım).
PrdEnduser
, bir tür teste katılan son kullanıcılar tarafından, bir tür test tarafından üretilen sonuçlardan memnun olduklarını belirtmek için kullanılır. Ve bu nedenle, bu son kullanıcılar kütüphane yapısındaki değişime katılıyorlar.
PrdRelmgnt
, yayın yöneticileri tarafından üretimde bir Etkinleştirme izni vermek için kullanılır (= kütüphane yapısındaki son / en yüksek seviye).
Güvenlik sisteminizdeki kullanıcı gruplarını tanımlayın . Birkaç örnek (kendi ihtiyaçlarınıza uyacak benzerleri ekleyin):
GrpDevs
(ki bu) geliştiricilerinize karşılık gelir (muhtemelen yalnızca 1'den sonra).
GrpEnduser
(son olarak) son kullanıcılarınıza karşılık gelir (en az 1, tercihen daha benzer kullanıcılarla).
GrpRelMgnt
(ki bu) sürüm yöneticilerinize karşılık gelir (en az 1, tercihen birkaç kullanıcı daha).
Seçili " kullanıcı grupları " için seçilen " güvenlik varlıklarına " erişim sağlamak için güvenlik sisteminizi de kullanarak izinler verin . Yukarıdaki örneğe devam etmek için, uygun görünen şey (kendi ihtiyaçlarınıza göre uyarlayın):
- Grup
GrpDevs
(yalnızca!) Güvenlik varlığına erişim sağlar PrmUnit
.
- Grup
GrpEnduser
(yalnızca!) Güvenlik varlığına erişim sağlar PrdEnduser
.
- Grup
GrpRelMgnt
, (her ikisi de!) Güvenlik varlığına PrmQA
ve PrdRelmgnt
.
2. Adım: İş akışını yapılandırın (SCM sisteminde)
Güvenlik sisteminizde izinler yapılandırıldıktan sonra (1. Adımda olduğu gibi), SCM sisteminizde yapmanız gereken tek şey, lifecyle'deki çeşitli adımların güvenlik sisteminizdeki ilgili güvenlik varlıklarıyla nasıl eşleşeceğini yapılandırmaktır. Yani, yalnızca gerekli güvenlik varlığına uygun erişimi olan kullanıcıların sunucudan iş akışındaki ilgili adımı gerçekleştirmesini istemesine izin verilir.
SCM sisteminizi biraz sihir yapmak için nasıl yapılandıracağınıza dair bazı örnekler:
- Bir kullanıcı erişimi varsa etmek
PrmUnit
, sonra da bu tür kullanıcı bir talep etmesine izin verilen teşvik etmek Birimi -Kaynak. Açıkçası, gruptaki GrpDevs
kullanıcılar bunun için yetkilendirilmiş kullanıcılardır (not: ör. Gruptaki kullanıcılar değil GrpRelMgnt
).
- Bir kullanıcı erişimi varsa etmek
PrmQA
, sonra da bu tür kullanıcı bir talep etmesine izin verilen teşvik etmek QA -Kaynak. Açıkçası, gruptaki GrpRelMgnt
kullanıcılar bunun için yetkilendirilmiş kullanıcılardır (not: ör. Gruptaki GrpDevs
veya gruptaki kullanıcılar değil GrpEnduser
).
- Bir kullanıcının erişimi varsa
PrdEnduser
, bu tür bir kullanıcının kütüphane yapısında ileriye doğru olan değişikliği yetkilendirmesine izin verilir (bu genellikle gruptaki kullanıcıların GrpRelMgnt
bir değişikliği inceleyebilmesi için bir ön koşuldur ). Açıkçası, gruptaki GrpEnduser
kullanıcılar bunun için yetkilendirilmiş (yalnızca) kullanıcılardır.
- Bir kullanıcı erişebiliyorsa
PrdRelmgnt
, söz konusu kullanıcının üretimde bir Etkinleştirme yetkisi vermesine izin verilir (= kütüphane yapısındaki son / en yüksek seviye).
3. Beklenmeyeni bekleyin ve buna hazır olun
Yukarıdaki sadece bir taslaktır, umarım sonunda görevlerin ayrılığıyla ilgilenen sunucunun nasıl olduğunu anlamaya yardımcı olur ... CxO'nun herkesin beğenmeyeceği bazı erişim kurallarını empoze etmek için sizi kapsaması koşuluyla.
Resmi yukarıda açıklandığı gibi tamamlamak için, sunucu sistemde olan her şeyin bir denetim izi (günlük kaydı) oluşturur. Böylece herhangi bir zamanda, aşağıdaki gibi soruları cevaplamak her zaman mümkündür
Ne zaman ve neden oldu ve hangi yetkili kullanıcı bunu gerçekten onayladı ...
Ancak, muhtemelen en zor kısım, yeterli raporlama araçlarına sahip olmak (ve bunların nasıl kullanılacağını bilmek). En azından BT denetçilerinden gelen talepleri (kolayca) karşılamak (soruları çok zor olabilir). Ama aynı zamanda, üretimin (bir kısmının) çöktüğü kriz durumlarında her türlü "Ne oldu" sorusunu yanıtlamak için SCM sisteminizdeki ilgili günlük kayıtlarına işaret etmek.
PS: Cevabım DevOps uyumluysa ya da hayırsa, herkesin kendi kararına bırakıyorum.