Jenkins sunucularda güvenliği arttırmaya yönelik olarak yapılan SSL sertifikasyon süreci OpenSSL veya ücretli SSL sertifika tiplerine göre değişkenlik gösterebilmektedir. Genelde Jenkins sunucuları dışarıya açık olmayıp kurum içerisindeki ağ üzerinden sadece bağlanıldığı için ücretli SSL sertifikaları yerine ücretsiz ve güvenilir olan OpenSSL türevi sertifikasyon ürünleri tercih edilir. SSH veya tarayıcı üzerinde güvenli bağlantı sağlama süreci olarak bildiğimiz HTTPS sürecinin lokal ağdaki önemi ise kurum içi LDAP ve benzeri Login süreçlerinde gelen ve giden iç trafikteki dataların daha güvenli ve şifrelenmiş bir biçimde ağ üzerinden geçmesi amaçlanmaktadır. Ben makalemde hem temel hem de kurumsal dünyada bu işlemin nasıl yürüdüğünü anlatmaya çalışacağım. Kurumsal hayatta Jenkins sunucusu üzerine tanıtılacak olan SSL sertifikasyon adımlarının hepsini Jenkins Admin yapmayabilir. Diğer teknik ekipler de devreye girerek kendi alanları çerçevesinde üstüne düşen görevi yaparak sürecin ilerlemesini sağlar. O zaman kurumsal hayatı baz alarak Deployment işlemlerimizi gerçekleştirdiğimiz Jenkins sunucumuzda SSL sertifikasyon sürecinden bahsetmeye geçebiliriz.
Jenkins SSL sertifikasyon süreçlerindeki temel işlemler için Configure SSL Jenkins Server makalesi olan ve süreci yalın olarak anlatan devopscube.com/configure-ssl-jenkins adresinden faydalanabilirsiniz. Jenkins için bir SSL almanız için öncelikle Jenkins'in kurulu olduğu IP adresi veya DNS adresi gereklidir. Genelde kurumsal yerlerde Jenkins sunucusuna yerel bir DNS adres verilir. jenkins.kurumsaldomain.com benzeri lokal bir isim yapısında olur. OpenSSL kullanarak kurumun imzasını taşıyan bir sertifika öncelikle oluşturmanız gerekmektedir. Oluşturulacak sertifikasyondaki Certificate detaylarındaki Subject Alternative Name kısmında kurumun tüm DNS varyasyon isimleri (Alt Domain) yer almalıdır. Bu işlemi kurumsal yerlerde orta katman olarak bildiğimiz Middleware ekibi yapmaktadır. OpenSSL için bu sertifikasyonun oluşmasında bu birimden destek alabilirsiniz. Gün sonunda size jenkins.jks isimli sertifika dosyasını bu ekip sağlayacaktır. Eğer P12 veya PFX uzantılı bir sertifika ürettiyseniz bu JKS formatına dönüştürülmelidir. Günün sonunda size jenkins.jks dosyası ve sertifika parolası iletilecektir.
Sertifikasyon dosyası iletildikten sonra Jenkins sunucunuza SSH bağlantısı yaparak SFTP protokol ile dosyayı sunucu içerisine atın ve etc dizini altında bir jenkins dizini oluşturun. Aşağıdaki komutlar sırasıyla etc altında bir jenkins dizini oluşturur sonrasında jenkins.jks sertifikasyon dosyası buraya kopyalanır. Son olarak da hem jenkins.jks dosyasına hem de Jenkins dizinine gerekli izinler (Permissions) verilir.
# mkdir -p /etc/jenkins
# cp jenkins.jks /etc/jenkins/
# chown -R jenkins: /etc/jenkins
# chmod 700 /etc/jenkins
# chmod 600 /etc/jenkins/jenkins.jks
Şimdi sıra geldi sysconfig altındaki jenkins dosyasına gerekli parametreleri girmekte. İlk olarak aşağıdaki gibi Sudo yetkisine geçerek gerekli konfigürasyon işlemlerine başlayalım.
# sudo su - jenkins
Sonrasında ister Vi Editör ister Nano komutu ile jenkins dosyasını düzenleyebilirsiniz. Vi Editörünü terminal üzerinde kullanmak biraz teknik bilgi ve beceri isteyebilir. Nano ile kolayca dosya Edit işlemlerini de yapabilirsiniz.
# sudo vi /etc/sysconfig/jenkins
# sudo su - jenkins
# cd /etc/sysconfig
# nano jenkins
Dosya içerisinde aşağıdaki alanları Nano ile ekleyebilirsiniz. Nano'da ekleme yaptıktan sonra CTRL + X kombinasyonuna basın sonrasında Y (Yes) tuşuna basın ve en son Enter diyerek dosya üzerine kaydedin. Bu şekilde Nano ile Edit işlemi yapabilirsiniz.
JENKINS_PORT="-1"
JENKINS_HTTPS_PORT="8443"
JENKINS_HTTPS_KEYSTORE="/etc/jenkins/jenkins.jks"
JENKINS_HTTPS_KEYSTORE_PASSWORD="sertifika-parolası"
JENKINS_HTTPS_LISTEN_ADDRESS="0.0.0.0"
Bir detay olarak şunu belirtmem gerek. Jenkins ek olarak diğer Config ayarları aynı zamanda "/usr/lib/systemd/system/jenkins.service" üzerinden almaktadır ve burada da gerekli ayarları yapmanız gerekebilir. Eğer buraya erişiminiz yok veya sunucuda Root değilseniz aynı şekilde kurumsal şirketlerde bu kısımda Linux ekibinden destek alabilirsiniz. Kısacası sadece sysconfig altındaki dosyayı bazen düzenlemek yetmeyebilir. Bu anektodu da paylaşmak istedim.
Gerekli ayarlardan sonra aşağıdaki genel Jenkins komutları ile Restart ve Jenkins statü sorgulama yapabilirsiniz. Aşağıya Red Hat ve CentOS Linux sunucularında kullanabileceğiniz Jenkins systemctl komutlarının bazılarını ekliyorum.
# sudo su - jenkins
# sudo systemctl restart jenkins (Jenkins Servisleri Restart Komutu)
Yukarıdaki komutu Jenkins paneline bağlanamadığınız zaman Linux sunucuya Login olup çalıştırabilirsiniz. Jenkins servisleri baştan başlatılır bu komutlar sayesinde.
# sudo systemctl status jenkins (Jenkins servislerini ve sunucu ayakta mı diye sorgulama.)
# sudo systemctl start jenkins (Jenkins sunucuyu başlatma.)
# sudo systemctl stop jenkins (Jenkins sunucuyu durdurma.)
Son olarak SSL sertifikası tanımlanan Jenkins adresimize ister SSH üzerinden Curl komutu ile ister Brwoser üzerinden 8443 portu ile giderek kontrol sağlayabiliriz. Browser üzerinden kontrol sağladıktan sonra Login In/Out yaparak işlemleri kontrol etmiş oluruz.
# curl -k https://jenkins.kurumsaldomain.com:8443
https://jenkins.kurumsaldomain.com:8443
Ek olarak var olan HTTP servisini kapatıp HTTPS servisi üzerinden sadece Jenkins sunucusuna bağlanmak isterseniz "/usr/lib/systemd/system/jenkins.service" ve "/etc/sysconfig/jenkins" dosyalarındaki Environment = "JENKINS_PORT="-1" ayarını yapmanız yeterli olacaktır.
Jenkins yönetim panelinden Manage Jenkins (Jenkins'i Yönet) kısmına geliniz ve Sistem Konfigürasyonunu Değiştir kısmından Jenkins Location alanından Jenkins URL adresini eski 8080 adresi yerine 8443 ile değiştirip Apply sonra Kaydet diyerek değiştiriniz.
* Eski URL: http://jenkins.kurumsaldomain.com:8080/
* Yeni URL: https://jenkins.kurumsaldomain.com:8443/
Umarım faydalı bir yazı olmuştur. Jenkins DevOps aracı ile ilerleyen günlerde yeni bilgiler öğrendikçe sizlerle paylaşamaya devam edeceğim.
Burak AVCI - Update: 10.06.2022
Hiç yorum yok:
Yorum Gönder
Makaleye Yorum ve Sorularınızı Bırakabilirsiniz.