Selenium ile CyberArk PSM ve CPM Script Geliştirmek

Bu yazımda Selenium web otomasyon aracını kullanarak CyberArk’ta CPM ve PSM scripti nasıl geliştirilir örnek veriyor olacağım.

CyberArk da PAS (Privileged Access Security) 10.3 versiyonu ile birlikte Selenium desteğini sunmaya başladı ve çıkarılan her yeni sürümde Selenium tarafında yeni özellikler eklendi. Bunun en önemli nedenlerinden bazıları şunlardır:

 

  • AutoIT’ye nazaran Selenium ile daha kolay WebApp bağlantı bileşenlerinin hazırlanması
  • Selenium – CPM (Central Policy Manager) desteği sayesinde WebApp ayrıcalıklı hesap şifre yönetimi
  • WebApp şifre yönetimi için, iMacros sınırlamaları ve lisans gereksinimleri
  • Chrome & Internet Explorer bütünleşik destek
  • AutoIT ve iMacros’taki gibi ek kurulumlarına gerek duyulmaması, CyberArk PAS kurulumu ile birlikte gelmesi

 

İsterler:

  • Minimum CyberArk PAS 10.3 versiyonu olmalıdır.
  • PSM Sunucusunda Google Chrome veya Internet Explorer kurulu olmalıdır.
  • Ayrıcalıklı hesap yönetimi için CPM sunucusunda Google Chrome yüklü olmalıdır. Internet Explorer desteği bulunmamaktadır.

 

Selenium, AutoIT ve iMacros Arasındaki Farklar:

AutoIT de kendisine has kütüphaneleri olan, Windows işletim sistemi üzerinde çalışabilen bir programlama dilidir. Aynı Selenium gibi sıklıkla test ve otomasyon işlemleri için kullanılmaktadır. Fakat AutoIT’yi Seleniumdan ayıran en büyük özellik ise Selenium sadece WebApp tarafında destek sağlarken, AutoIT ile hem WebApp hem de Masaüstü Uygulamaları için de bağlantı bileşenleri hazırlanabilmektedir. Selenium’a nazaran dezavantajlı kısımları ise script dosyalarının hazırlanması ve CyberArk’a uyumlu hale getirilmesi zahmetlidir, CPM ( Central Policy Manager)  ile şifre yönetimi kısmında destek vermemektedir ve sadece Internet Explorer ile çalışır. Bu yüzden dolayı WebApp tarafında hem PSM (Privileged Session Manager) ile bağlantıların hem de CPM (Central Policy Manager) ile WebApp şifre yönetiminin nasıl yapılacağı ile alakalı bilgi veriyor olacağım.

Asıl konumuza giriş yapmadan önce iMacros ile alakalı da ufak bir bilgi vermek isterim. CyberArk’ın önceki versiyonlarında, web uygulamalarında şifre yönetimini gerçekleştirmek için bir süre kullanılmış fakat stabil çalışmamasından ve lisans gereksinimlerinden dolayı PSM’de olduğu gibi CPM ile şifre yönetimi kısmında da Selenium Framework kullanımına geçiş yapılmıştır.

 

PSM (Privileged Session Manager) & Selenium:

 

CyberArk PSM CPM Selenium 1

CyberArk PSM CPM Selenium 1

 

https://cyberarkip/PasswordVault/v10/ adresinden CyberArk arayüzüne Admin yetkisine sahip bir kullanıcı ile giriş yaptıktan sonra, sol sekmeden “Administrator > Configuration Options > Options” kısmına gidilir.

 

 

Connection Components sekmesi altından, WebApp için CyberArk tarafından oluşturulmuş olan Selenium template’ine “PSM-WebAppSample” sağ tık “Copy” dedikten sonra

CyberArk PSM CPM Selenium 2

CyberArk PSM CPM Selenium 2

 

Connection Components üzerinden sağ tık ile “Paste Connection Component” seçilir. PSM-WebAppSample bağlantı bileşeni, Connection Component listesinin en sonuna gelecektir.

CyberArk PSM CPM Selenium 3

CyberArk PSM CPM Selenium 3

 

 

Değişikliklerimizi bu component üzerinden yapacağız. Örnek olması açısından Twitter’i kullanıyorum.

 

İlk yapacağımız işlem Connection Component ID’sini PSM-Twitter olarak değiştirmek olacaktır.  DisplayName kısmında son kullanıcının connection component’i hangi isimle görebileceğini belirtebiliriz.

CyberArk PSM CPM Selenium 4

CyberArk PSM CPM Selenium 4

*Aynı ID’ye ait birden fazla connection component bulunması, bağlantıların başarısız olmasına neden olcaktır. ID’ler uniqe olmalıdır.

 

“PSM-Twitter > Target Settings” kısmından ClientApp varsayılan olarak Chrome gelmektedir. Eğer Internet Explorer kullanmak istenirse, IE olarak değiştirmemiz gerekecektir.

CyberArk PSM CPM Selenium 5

CyberArk PSM CPM Selenium 5

 

 

“PSM-Twitter > Target Settings > Lock Application Window” kısmından MainWindowClass varsayılan Chrome_WidgetWin_1 olarak gelmektedir. Internet Explorer için IEFrame olarak değiştirmemiz gerekecektir.

CyberArk PSM CPM Selenium 6

CyberArk PSM CPM Selenium 6

 

 

“PSM-Twitter > Target Settings > Web Form Settings” kısmından bağlantının yapılabilmesi için gerekli olan adres, sertifika, web form alan bilgilerinin tanımlanmış olması gerekmektedir.

CyberArk PSM CPM Selenium 7

CyberArk PSM CPM Selenium 7

 

 

Burada yer alan parametlere göz atacak olursak:

CyberArk PSM CPM Selenium 8

CyberArk PSM CPM Selenium 8

 

 

*LogonURL: Direkt olarak statik bir login sayfası linki verilebilir. Örn: https://twitter.com/login ya da https://{address} ile bağlantı yapılacak olan sayfanın, bağlantı bilgilerini hesabın address kısmından çekmesi anlamına gelir. Hesap kısmındaki adres değeri değiştikçe buradaki değer de ona göre güncellenecektir. (Süslü parantez içindeki {address} öntanımlı gelen CyberArk değişkenidir.)

*SubmitButton: WebFormFields kısmında belirtilebilir.

*WebFormFields: Kasada tutulan ayrıcalıklı hesabın bilgileri hangi alana yazılacak ve hangi butona tıklanarak giriş yapılacağının bilgileri burada saklanır. Kısacası Web Form Field elementleri burada tanımlanır. Süslü parantez içindeki değerler ve parantez içindeki değerler ön tanımlı CyberArk değişkenidir.

CyberArk PSM CPM Selenium 9

CyberArk PSM CPM Selenium 9

 

 

Eğer WebFormFields kısmında validateIcon bulunuyorsa bunu kaldırıp aşağıda “Target Settings > Client Specific > RunValidations = No” olarak ayarlanmalıdır. Bu parametre ile CyberArk, login olduğu sayfanın geçerli olup olmadığını ya da başarılı bir şekilde login olup olamadığını anlayabilmesi için, giriş yaptıktan sonra önceden belirtilmiş olan bir elementi o sayfada arıyor olacak. Eğer bulursa Validation true dönecektir. Eğer giriş yapıldıktan sonra belirtilmiş olan elementi o sayfada bulamazsa login başarısız olacaktır. Ben bu örnekte validation’u kapattım ama dilerseniz kullanılabilir.

CyberArk PSM CPM Selenium 10

CyberArk PSM CPM Selenium 10

 

 

*EnforceCertificateValidation: Bağlantı kurulan sayfa eğer Self Signed bir sertifika ile imzalanmışsa “No” olmalı eğer geçerli bir otorite tarafından imzanlanmış bir sertifikaya sahipse “Yes” olarak kalmalıdır. Yapacağımız örnekte valid bir sertifika kullandığımızdan dolayı EnforceCertificateValidation = yes olacaktır.

CyberArk PSM CPM Selenium 11

CyberArk PSM CPM Selenium 11

 

 

WebFormFields kısmına dönecek olursak, CyberArk Selenium ile Web Form elementlerini “ID”, “NAME”, “CLASS”, “TEXT” veya “XPATH”’e göre tanımlayabiliriz. Tanımlama işlemi sayesinde artık CyberArk, ilgili formda bulunan username, password metin kutularının ve login düğmesinin hangileri olduğunu bilecek, günün sonunda Vault üzerinde bulunan hassas verileri ilgili alanlara girdikten sonra login düğmesine tıklayarak hedef Web uygulamasına giriş yapacaktır.

 

 

Örnek olması açısından Twitter Login sayfasına bakacak olursak. Kullanıcının giriş yapabilmesi için “Phone, email, or username” alanı ve “Password” alanını doğru bilgilerle doldurmalı ve Log in butonu ile giriş yapmalıdır.

CyberArk PSM CPM Selenium 12

CyberArk PSM CPM Selenium 12

 

 

İşte bu noktada CyberArk’a kullanıcı adı, şifre metin kutularını ve giriş düğmesini göstermemiz gerekmektedir.

Web tarayıcımızın Inspect (incele) özelliğinden faydalanarak Web Form elemenlerinin eğer varsa ID, NAME, CLASS ya da TEXT bilgisini bulabilir veya bu saydıklarımdan hiç birisi yok ise XPATH ile ilgili alanı belirtebiliriz.

CyberArk PSM CPM Selenium 13

CyberArk PSM CPM Selenium 13

 

 

Username alanı için inspect çıktısı:

<input autocapitalize=”none” autocomplete=”on” autocorrect=”off”  name=”session[username_or_email]”  spellcheck=”false” type=”text” dir=”auto” data-focusable=”true” class=”r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-deolkf r-homxoj r-poiln3 r-7cikom r-1ny4l3l r-1inuy60 r-utggzx r-vmopo1 r-1w50u8q r-1swcuj1 r-1dz5y72 r-1ttztb7 r-13qz1uu” value=””>

 

Görüldüğü üzere username elementinin name olarak nasıl tanımlandığını görmüş olduk. Aynı işlemleri hem password hem de Log in butonu için yapıyorum.

Password alanı için inspect çıktısı:

<input autocapitalize=”none” autocomplete=”on” autocorrect=”off”  name=”session[password]”  spellcheck=”false” type=”password” dir=”auto” data-focusable=”true” class=”r-30o5oe r-1niwhzg r-17gur6a r-1yadl64 r-deolkf r-homxoj r-poiln3 r-7cikom r-1ny4l3l r-1inuy60 r-utggzx r-vmopo1 r-1w50u8q r-1swcuj1 r-1dz5y72 r-1ttztb7 r-13qz1uu” value=””>

 

Log in button için inspect çıktısı:

Düzgün bir değerle karşılaşamadığım için (ID, NAME ta da CLASS vb gibi). Copy Xpath özelliğini kullandım.

CyberArk PSM CPM Selenium 14

CyberArk PSM CPM Selenium 14

 

 

 //*[@id=”react-root”]/div/div/div[2]/main/div/div/form/div/div[3]/div/div 

 

Yukarıdaki bilgilere göre WebFormFields alanımız aşağıdaki gibi şekilleniyor:

Burada önemli olan husus şudur. Eğer bir elementi hangi isimle buluyorsanız (searchby=?) kısmına onu yazmamız gerekecektir. Örneğin username ve password alanları için name’e göre bulduğumdan, CyberArk’a (searchby=name) diyerek isme göre aramasını belirttim. Login butonunu Copy Xpath ile yaptığımdan (searchby=xpath) olarak belirttim. Aradığım elementin ID’sini bulmuş olsaydım (searchby=id) eğer CLASS’ını bulmuş olsaydım (searchby=class) olarak belirtmem gerekecekti.

Tanımlayıcı> Değer (SearchBy = Tür)

 

Değişen kısımları marker ile işaretlendi.

 session^[username_or_email^] >{Username}(searchby= name )

 session^[password^] >{Password}(searchby= name )

 //*^[@id=”react-root”^]/div/div/div^[2^]/main/div/div/form/div/div^[3^]/div/div >(Button)(searchby= xpath )

Not: Eğer element isimlerinde ‘[’ veya ‘]’ bulunuyorsa. Her köşeli parantezden önce ^ kaçış karakteri kullanmamız gerekmektedir. Bu işlem sadece köşeli parantezler için geçerlidir.

CyberArk PSM CPM Selenium 15

CyberArk PSM CPM Selenium 15

 

 

Daha sonra oluşturmuş olduğumuz Connection Component’i kayıt edip dilediğim platform’a az önce oluşturmuş olduğum connection componentinin ID’sini girerek tanımlıyor olacağım.

CyberArk PSM CPM Selenium 16

CyberArk PSM CPM Selenium 16

 

 

CyberArk PSM CPM Selenium 17

CyberArk PSM CPM Selenium 17

Değişikliklerin kayıt olması için Apply sonrasında OK butonu ile değişiklikleri kayıt ediyorum. Yapılan bu düzenlemelerin geçerli olması için ortalama 10 – 15 dakika geçmesi gerekecektir. Bu süreyi beklemek istemiyorsanız PSM sunucusunda bulunan Cyber-Ark Privileged Session Manager servisini yeniden başlatabilirsiniz.

 

 

Connect butonu ile Twitter’a giriş yapıyoruz.

CyberArk PSM CPM Selenium 18

CyberArk PSM CPM Selenium 18

 

 

CyberArk, güvenlik gerekçesiyle URL Bar ve tarayıcının bazı özelliklerini kapatıyor.

CyberArk PSM CPM Selenium 19

CyberArk PSM CPM Selenium 19

 

 

CPM (Central Policy Manager) & Selenium:

Yukarıda bahsettiğim üzere artık CPM, Selenium teknolojisinden faydalanarak Web uygulamaları için ayrıcalıklı hesapların şifrelerini yönetebiliyor. İşlemler PSM ile benzerlik gösteriyor. Sonuçta ayrıcalıklı hesabın şifresini değiştirmek için CPM öncelikle hedef uygulamaya giriş yapması gerekmektedir:

CyberArk PSM CPM Selenium 20

CyberArk PSM CPM Selenium 20

Not: PSM’in aksine CPM, ayrıcalıklı hesap şifre yönetimini sadece Google Chrome üzerinden yapyıor. Internet Explorer desteği şuan için  yok.

 

 

Twitter için, Twitter.ini adında bir dosya oluşturuyoruz ve şifreyi değiştirmek için kullanacağı adımları tek tek bu dosyada belirtiyoruz. PSM connector oluştururken kullanmış olduğumuz Web tarayıcımızın inspect özelliğini burada da kullanıyoruz. Şifre değiştirme esnasında yapılacak olan her adımı inspect ederek kayıt altına alıyoruz. PSM’de kullanmadığımız ama CPM’de sık kullanılan (Navigate=URL) komutu ile istenilen sayfaya yönlendirme sağlayabiliyoruz. Bu işlemleri yaptıktan sonra dosyayı CyberArk > PasswordManager > bin dizini altına kayıt ediyoruz.

CyberArk PSM CPM Selenium 21

CyberArk PSM CPM Selenium 21

 

 

CPM’in Web Uygulama şifrelerini yönetebilmesi için işlem akışını not etmemiz gerekmektedir. Yukarıdaki dosyada her satır farklı bir komutu temsil etmektedir. Validation alanı her zaman işlemlerin en sonunda olmalıdır ve ayrıca birden fazla validation kullanılması durumunda, CPM ilk doğrulama ile eşleştiğinde işlemi sonlandırır diğer validasyon yada validasyonları kontrol etmez.

CyberArk PSM CPM Selenium 22

CyberArk PSM CPM Selenium 22

 

Varsayılan dosya yolu: C:\Program Files (x86)\CyberArk\PasswordManager\bin dizinidir. Sizin kurulumunuza göre değişiklik gösterebilir.

 

 

Web uygulamaları için CPM eklentilerini, varsayılan olarak Generic Web App platformuna göre yapılandırabiliriz. Generic Web App platformdan yeni bir platform çoğalttıktan sonra

CyberArk PSM CPM Selenium 23

CyberArk PSM CPM Selenium 23

 

 

“Platform ayarlarından > Automatic Password Management > Additional Policy Settings > Parameters > WebFormFieldsFile” sekmesinden Value alanına şifre yönetimi için kullanılacak *.ini dosyasını göstermemiz gerekecektir. Az önce oluşturduğumuz Twitter.ini dosyasını aşağıdaki Value alanına yazıyoruz.

CyberArk PSM CPM Selenium 24

CyberArk PSM CPM Selenium 24

 

 

 

ÖZET:

Bu yazıda şunları ele aldık:

  • HTML öğelerini inceleme ve tanımlama
  • Web Uygulamaları için PSM Bağlantı Bileşeni Geliştirme
  • Web Uygulamaları için CPM Eklentisi Geliştirme

 

 

 

 

 

Kaynaklar:

https://en.wikipedia.org/wiki/Selenium_(software)

https://cyberark.com

 

 

 


Abone ol
Bildir
guest
0 Yorum
Satır İçi Geri Bildirimler
Tüm yorumları görüntüle