Basic Jenkins Information

Support HackTricks

Ufikiaji

Jina la mtumiaji + Nenosiri

Njia ya kawaida zaidi ya kuingia kwenye Jenkins ni kwa kutumia jina la mtumiaji au nenosiri.

Keki

Ikiwa keki iliyoidhinishwa inapatikana, inaweza kutumika kufikia kikao cha mtumiaji. Keki hiyo kwa kawaida inaitwa JSESSIONID.*. (Mtumiaji anaweza kumaliza vikao vyake vyote, lakini itabidi ajue kwanza kwamba keki ilipatikana).

SSO/Vyombo vya kazi

Jenkins inaweza kuundwa kwa kutumia vyombo vya kazi ili iweze kupatikana kupitia SSO ya upande wa tatu.

Tokens

Watumiaji wanaweza kuunda tokens ili kutoa ufikiaji kwa programu kujiwakilisha kupitia CLI au REST API.

SSH Keys

Kipengele hiki kinatoa seva ya SSH iliyojengwa ndani kwa Jenkins. Ni kiolesura mbadala kwa Jenkins CLI, na amri zinaweza kutekelezwa kwa njia hii kwa kutumia mteja yeyote wa SSH. (Kutoka kwenye docs)

Uidhinishaji

Katika /configureSecurity inawezekana kuunda njia ya uidhinishaji ya Jenkins. Kuna chaguzi kadhaa:

  • Mtu yeyote anaweza kufanya chochote: Hata ufikiaji wa kutotambulika unaweza kusimamia seva.

  • Hali ya urithi: Sawasawa na Jenkins <1.164. Ikiwa una "nafasi ya admin", utapewa udhibiti kamili juu ya mfumo, na vinginevyo (ikiwemo watumiaji wa kutotambulika) utakuwa na ufikiaji wa kusoma.

  • Watumiaji walioingia wanaweza kufanya chochote: Katika hali hii, kila mtumiaji aliyeingia anapata udhibiti kamili wa Jenkins. Mtumiaji pekee ambaye hatakuwa na udhibiti kamili ni mtumiaji wa kutotambulika, ambaye anapata tu ufikiaji wa kusoma.

  • Usalama wa msingi wa Matrix: Unaweza kuunda nani anaweza kufanya nini katika jedwali. Kila safu inawakilisha idhini. Kila mstari unawakilisha mtumiaji au kundi/nafasi. Hii inajumuisha mtumiaji maalum 'anonymous', ambaye anawakilisha watumiaji wasiotambulika, pamoja na 'authenticated', ambaye anawakilisha watumiaji wote walioidhinishwa.

  • Mkakati wa Uidhinishaji wa Msingi wa Mradi: Hali hii ni nyongeza kwa "Usalama wa msingi wa Matrix" inayoruhusu ACL ya ziada kuundwa kwa kila mradi tofauti.

  • Mkakati wa Kazi: Inaruhusu kuunda uidhinishaji kwa kutumia mkakati wa kazi. Simamia nafasi katika /role-strategy.

Ufalme wa Usalama

Katika /configureSecurity inawezekana kuunda ufalme wa usalama. Kwa kawaida Jenkins inajumuisha msaada wa Ufalme wa Usalama kadhaa tofauti:

  • Delegates kwa kontena la servlet: Kwa kuhamasisha uthibitisho kwa kontena la servlet linaloendesha Jenkins controller, kama Jetty.

  • Hifadhidata ya mtumiaji ya Jenkins: Tumia hifadhidata ya mtumiaji iliyojengwa ndani ya Jenkins kwa uthibitisho badala ya kuhamasisha kwa mfumo wa nje. Hii imewezeshwa kwa kawaida.

  • LDAP: Hamisha uthibitisho wote kwa seva ya LDAP iliyowekwa, ikiwa ni pamoja na watumiaji na makundi.

  • Hifadhidata ya mtumiaji/kundi la Unix: Huhamisha uthibitisho kwa hifadhidata ya mtumiaji ya kiwango cha Unix kwenye Jenkins controller. Hali hii pia itaruhusu matumizi ya makundi ya Unix kwa uidhinishaji.

Vyombo vya kazi vinaweza kutoa ufalme wa usalama wa ziada ambao unaweza kuwa muhimu kwa kuingiza Jenkins katika mifumo ya utambulisho iliyopo, kama vile:

Jenkins Nodes, Agents & Executors

M definitions kutoka kwenye docs:

Nodes ni mashine ambazo wakala wa kujenga zinaendesha. Jenkins inafuatilia kila node iliyoambatanishwa kwa ajili ya nafasi ya diski, nafasi ya muda ya bure, nafasi ya kubadilishana ya bure, muda wa saa/sawazisha na muda wa majibu. Node inachukuliwa kuwa nje ya mtandao ikiwa mojawapo ya hizi thamani inatoka nje ya kigezo kilichowekwa.

Wakala wanasimamia utendaji wa kazi kwa niaba ya Jenkins controller kwa kutumia waendeshaji. Wakala anaweza kutumia mfumo wowote wa uendeshaji unaounga mkono Java. Zana zinazohitajika kwa ajili ya ujenzi na majaribio zimewekwa kwenye node ambapo wakala anafanya kazi; zinaweza kuwekwa moja kwa moja au kwenye kontena (Docker au Kubernetes). Kila wakala kwa ufanisi ni mchakato wenye PID yake mwenyewe kwenye mashine mwenyeji.

Mwendeshaji ni nafasi ya kutekeleza kazi; kwa ufanisi, ni thread katika wakala. Idadi ya waendeshaji kwenye node inafafanua idadi ya kazi zinazoweza kutekelezwa kwa wakati mmoja kwenye node hiyo. Kwa maneno mengine, hii inamua idadi ya hatua za Pipeline stages zinazoweza kutekelezwa kwenye node hiyo kwa wakati mmoja.

Siri za Jenkins

Uthibitishaji wa Siri na Hati

M definition kutoka kwenye docs: Jenkins inatumia AES kuandika na kulinda siri, hati, na funguo zao za uandishi. Funguo hizi za uandishi zimehifadhiwa katika $JENKINS_HOME/secrets/ pamoja na funguo kuu inayotumika kulinda funguo hizo. Hii directory inapaswa kuundwa ili tu mtumiaji wa mfumo wa uendeshaji ambaye Jenkins controller inafanya kazi kama awe na ufikiaji wa kusoma na kuandika kwenye directory hii (yaani, thamani ya chmod ya 0700 au kutumia sifa sahihi za faili). Funguo kuu (wakati mwingine inaitwa "funguo ya uandishi wa funguo" katika cryptojargon) inahifadhiwa _bila kuandikwa_ kwenye mfumo wa faili wa Jenkins controller katika $JENKINS_HOME/secrets/master.key ambayo haiwezi kulinda dhidi ya washambuliaji wenye ufikiaji wa moja kwa moja kwa faili hiyo. Watumiaji wengi na wabunifu watatumia funguo hizi za uandishi kwa njia isiyo ya moja kwa moja kupitia ama Siri API kwa kuandika data ya siri ya kawaida au kupitia API za hati. Kwa wale wanaopenda cryptography, Jenkins inatumia AES katika hali ya kuandika block chaining (CBC) na PKCS#5 padding na IV za nasibu kuandika matukio ya CryptoConfidentialKey ambazo zimehifadhiwa katika $JENKINS_HOME/secrets/ kwa jina la faili linalolingana na id ya CryptoConfidentialKey. Idadi za kawaida za funguo ni pamoja na:

  • hudson.util.Secret: inatumika kwa siri za kawaida;

  • com.cloudbees.plugins.credentials.SecretBytes.KEY: inatumika kwa aina fulani za hati;

  • jenkins.model.Jenkins.crumbSalt: inatumika na mekanismu ya ulinzi wa CSRF; na

Ufikiaji wa Hati

Hati zinaweza kuwekwa kwa watoa huduma wa kimataifa (/credentials/) ambazo zinaweza kufikiwa na mradi wowote ulioandaliwa, au zinaweza kuwekwa kwa miradi maalum (/job/<project-name>/configure) na hivyo kuwa na ufikiaji kutoka kwa mradi maalum tu.

Kulingana na docs: Hati ambazo ziko katika upeo zinapatikana kwa pipeline bila kikomo. Ili kuzuia kufichuliwa kwa bahati mbaya katika kumbukumbu ya ujenzi, hati zime fichwa kutoka kwa matokeo ya kawaida, hivyo mwito wa env (Linux) au set (Windows), au programu zinazochapisha mazingira yao au vigezo hazitafichua katika kumbukumbu ya ujenzi** kwa watumiaji ambao vinginevyo hawangeweza kupata hati hizo.

Ndio maana ili kuhamasisha hati, mshambuliaji anahitaji, kwa mfano, kuziweka kwenye base64.

Marejeleo

Support HackTricks

Last updated