Tartalom
Az OTRS 2.0-tól hozzáférés-vezérlési listák (ACL-ek) használhatók a jegyekhez, modulokhoz, várólistákhoz, stb. történő hozzáférés vezérléséhez, vagy a jegyeken elvégzendő műveletek befolyásolásához (lezárás, áthelyezés, stb.) bizonyos helyzetekben. Az ACL-ek használhatók a szerepek és a csoportok meglévő jogosultság-rendszerének kiegészítéséhez is. ACL-ek használatával képezhetők le a rendszeren belüli kezdetleges munkafolyamatok a jegyjellemzőkön alapulva.
Általános módon az ACL-eket egy jegy lehetséges lehetőségeinek csökkentéséhez használják egy meghatározott szabályrendszer alapján.
Az ACL-ek közvetlenül beírhatók a Kernel/Config.pm
fájlba. Azonban ez többé nem javasolt, mivel az OTRS mostantól egy Hozzáférés-vezérlési listák grafikus
felülettel érkezik az adminisztrációs panelen, amely első lépésként lehetővé
teszi az ACL-ek adatbázisba mentését, majd azok üzembe állítását egy fájlba,
amikor készen vannak.
Ennek a fejezet van pár ACL-példája, amelyek végig fogják vezetni az ACL meghatározások meghatározásának folyamatában, és rendelkezik az összes lehetséges fontos ACL-beállítások hivatkozásával.
Az alapértelmezett „root@localhost” felhasználót nem érintik a jegy ACL-ek
Az ACL-meghatározások két nagy részre oszthatók: „Illesztés” és „Változtatás”. Az illesztési szakaszokban az ACL-ek olyan jellemzőket tartalmaznak, amelyeknek teljesülniük kell az ACL használatához. Ha az ACL-ben meghatározott jellemzők nem illeszkednek az elküldött jellemzőkkel, akkor az ACL-nek nem lesz semmilyen hatása, de bármely más illeszkedő ACL-nek lesz. A változtatás szakaszok szabályokat tartalmaznak egy jegy lehetséges lehetőségei csökkentéséhez.
Illesztési szakaszok
Tulajdonságok (Properties)
Ez a szakasz olyan illesztési lehetőségeket tartalmaz, amelyek röptében megváltoztathatók. Például egy jegy létrehozásakor a jegy adatai dinamikusan megváltoznak, amint az ügyintéző beállítja az információkat. Ha be van állítva egy ACL egy jegyjellemző illesztéséhez, akkor az ACL csak akkor lesz aktív, amikor az illesztési jellemzőt kiválasztják, és csökkentheti az egyéb jegyjellemzőket, de amint egy másik érték lesz kiválasztva, az ACL-nek nem lesz semmilyen hatása.
Tulajdonságok adatbázis (PropertiesDatabase)
Ez a szakasz hasonló a Tulajdonságokhoz
, de nem fogad el
a jegyjellemzőkben olyan változtatásokat, amelyek nincsenek elmentve az
adatbázisba. Ez azt jelenti, hogy egy jellemző megváltoztatása elküldés
nélkül nem fog semmilyen hatást okozni. Ez a szakasz nem használható a
jegylétrehozás képernyőknél (mivel a jegyek még nincsenek létrehozva az
adatbázisban).
Változtatási szakaszok
Lehetséges (Possible)
A „Possible” szakasz visszaállítja a csökkentendő adatokat csak azokra az elemekre, amelyek ebben a szakaszban be vannak állítva.
Lehetséges hozzáadás (PossibleAdd)
A „PossibleAdd” szakaszban lévő elemek azokat a hiányzó elemeket adják hozzá, amelyek csökkentve lettek más ACL-ekben. A „PossibleAdd” csak egyéb olyan ACL-ekkel együtt használható, amelyek rendelkeznek „Possible” vagy „PossibleNot” szakaszokkal.
Nem lehetséges (PossibleNot)
Ez a szakasz adott elemek eltávolításához használható a jelenlegi adatokból. Használható önállóan vagy más „Possible” vagy „PossibleAdd” szakaszokkal rendelkező ACL-ekkel együtt.
Azért, hogy az ACL-ek fejlesztését könnyebbé és hatékonyabbá tegye, van egy úgynevezett módosítók halmaza a jellemzőkhöz minden egyes szakasznál. Ezek a módosítók az alábbiakban vannak ismertetve:
Módosítók
[Not]
Ez a módosító egy érték tagadásához használható. Például: '[Not]2 low' ebben az esetben a jegyprioritásokról beszélve ugyanaz lesz, mintha a következő lenne: '1 very low', '3 normal', '4 high', '5 very high'.
[RegExp]
Egy reguláris kifejezés megadásához használható több érték illesztéséhez. Például '[RegExp]low' a prioritásokról beszélve ugyanaz mint a következő: '1 very low', '2 low'
[regexp]
Nagyon hasonló a [RegExp] módosítóhoz, de nem érzékeny a kis- és nagybetűkre.
[NotRegExp]
Tagadott reguláris kifejezés, például '[NotRegExp]low' a prioritásokról beszélve ugyanaz mint a következő: '3 normal', '4 high', '5 very high'.
[Notregexp]
Nagyon hasonló a [NotRegExp] módosítóhoz, de nem érzékeny a kis- és nagybetűkre.
A következő példák mind grafikus, mind szövegalapú módon láthatók.
5.1. példa - Egy ACL, amely csak azoknak a jegyeknek az áthelyezését teszi lehetővé egy várólistába, amelyek 5-ös jegyprioritással rendelkeznek.
Ez a példa egy ACL alapvető szerkezetét mutatja be. Először szüksége van egy névre. Ebben az esetben legyen ez „100-Pelda-ACL”. Vegye figyelembe, hogy az ACL-ek számszerűen rendezve lesznek a végrehajtás előtt, így körültekintéssel kell használnia a neveket.
Másodszor van egy „Tulajdonságok” („Properties”) szakasza, amely egy szűrő a jegyeihez. Az itt meghatározott összes feltétel alkalmazva lesz egy jegyen annak meghatározásához, hogy az ACL-t alkalmazni kell-e vagy sem. A mi példánkban egy jegy akkor fog illeszkedni, ha a „Nyers” várólistában van és „5 nagyon magas” prioritással rendelkezik. Ezt az űrlapon lévő változások is érinteni fogják (például ha a jegy a „Nyers” várólistában van és „3 normál” prioritással rendelkezik, akkor ebben a pillanatban az ACL nem fog illeszkedni, de ha ezután a prioritás lenyílót kiválasztják és a prioritást „5 nagyon magas” értékre változtatják, akkor is illeszkedni fog).
Végül a „Possible” szakasz módosításokat határoz meg a képernyőhöz. Ebben az esetben az elérhető várólisták közül csak a „Riasztás” várólistát lehet kiválasztani egy jegyképernyőn.
# jegy ACL $Self->{TicketAcl}->{'100-Pelda-ACL'} = { # illesztési tulajdonságok Properties => { # jelenlegi jegy illesztési tulajdonságai Ticket => { Queue => ['Nyers'], Priority => ['5 very high'], } }, # lehetséges lehetőségek visszaadása (fehér lista) Possible => { # lehetséges jegylehetőségek (fehér lista) Ticket => { Queue => ['Riasztás'], }, }, };
5.2. példa - Egy ACL, amely csak azoknak a jegyeknek az áthelyezését teszi lehetővé egy várólistába, amelyek 5-ös jegyprioritással rendelkeznek az adatbázisban tárolva.
Ez a példa nagyon hasonló a legutóbbihoz, de ebben az esetben csak azok a jegyek fognak illeszkedni, amelyek a „Nyers” várólistában vannak és „5 nagyon magas” prioritással rendelkeznek, mindkettőt adatbázisban tárolva. Az ilyen fajta ACL-ek nem bírálják el az űrlapon lévő változásokat, mielőtt a jegy valóban frissítve lenne az adatbázisban.
# jegy ACL $Self->{TicketAcl}->{'102-Pelda-ACL'} = { # illesztési tulajdonságok PropertiesDatabase => { # jelenlegi jegy illesztési tulajdonságai Ticket => { Queue => ['Nyers'], Priority => ['5 very high'], } }, # lehetséges lehetőségek visszaadása (fehér lista) Possible => { # lehetséges jegylehetőségek (fehér lista) Ticket => { Queue => ['Riasztás'], }, }, };
5.3. példa - Egy ACL, amely letiltja a nyers várólistában lévő jegyek lezárását, és elrejti a lezárás gombot.
Itt láthatja, hogy egy jegymező (állapot) hogyan szűrhető egynél több lehetséges értékből való választással. Lehetséges azon műveletek korlátozása is, amelyek egy bizonyos jegynél végrehajthatók. Ebben az esetben a jegyet nem lehet lezárni.
$Self->{TicketAcl}->{'102-Masodik-pelda-ACL'} = { # illesztési tulajdonságok Properties => { # jelenlegi jegy illesztési tulajdonságai Ticket => { Queue => ['Nyers'], } }, # lehetséges lehetőségek visszaadása (fehér lista) Possible => { # lehetséges jegylehetőségek (fehér lista) Ticket => { State => ['new', 'open', 'pending reminder'], }, }, # nem lehetséges lehetőségek visszaadása is (fekete lista) PossibleNot => { # nem lehetséges művelet-lehetőségek Action => [ 'AgentTicketClose' ], }, };
5.4. példa - Egy ACL, amely mindig eltávolítja a sikeresen lezárva állapotot.
Ez a példa azt mutatja be, hogy hogyan lehetséges negatív szűrőket meghatározni (a „closed successful” állapot lesz eltávolítva). Azt is láthatja, hogy ha nem határozunk meg illesztési tulajdonságokat egy jegyhez, akkor bármely jegyre illeszkedni fog, azaz az ACL mindig alkalmazva lesz. Ez akkor lehet hasznos, ha alapértelmezetten el szeretne rejteni bizonyos értékeket, és csak speciális körülményeknél szeretné engedélyezni azokat (például ha az ügyintéző egy adott csoportban van).
$Self->{TicketAcl}->{'103-Harmadik-ACL-pelda'} = { # illesztési tulajdonságok Properties => { # jelenlegi jegy illesztési tulajdonságai (mindig illeszkedik) }, # lehetséges lehetőségek visszaadása PossibleNot => { # lehetséges jegylehetőségek Ticket => { State => ['closed successful'], }, }, };
5.5. példa - Egy ACL, amely csak hardver-szolgáltatásokat jelenít meg azoknál a jegyeknél, amelyeket olyan várólistákban hoztak létre, amelyek neve „HW” kezdetű.
Ez a példa azt is bemutatja, hogy hogyan használhat reguláris kifejezéseket a jegyek illesztéséhez és az elérhető lehetőségek szűréséhez.
$Self->{TicketAcl}->{'104-Csak-hardver-szolgaltatasok-a-HW-varolistaknal-ACL'} = { # illesztési tulajdonságok # figyelje meg, hogy nincs "Ticket => {" ugyanis még nincsenek jegyek Properties => { Queue => { Name => ['[RegExp]HW'], } }, # lehetséges lehetőségek visszaadása Possible => { # lehetséges jegylehetőségek Ticket => { Service => ['[RegExp]^(Hardver)'], }, }, };
5.6. példa - Egy ACL, amely egy folyamatot korlátoz az ügyfél előtétprogramján az ügyfél-azonosító használatával.
$Self->{TicketAcl}->{"105-Folyamat-letiltasa-az-ugyfel-azonositonal"} = { 'Possible' => {}, 'PossibleNot' => { 'Process' => [ 'F14' ] }, 'Properties' => { 'CustomerUser' => { 'UserCustomerID' => [ 'AzÜgyfélAzonosítója' ] } }, 'PropertiesDatabase' => {}, 'StopAfterMatch' => 0 };
A lenti példában megtalálható az összes paraméter listája, amely az ACL-eknél használható.
Nézze meg a folyamatkezelés dokumentációban az ACL-ekről szóló szakaszt a részletesebb információkért, hogy hogyan kell ACL-eket használni a folyamatjegyeknél.
5.7. példa - Az összes lehetséges fontos ACL-beállítást bemutató hivatkozás.
# jegy ACL $Self->{TicketAcl}->{'200-ACL-hivatkozas'} = { # illesztési tulajdonságok (jelenlegi értékek az űrlapról) Properties => { # a használt előtétprogram modul Frontend => { Action => ['AgentTicketPhone', 'AgentTicketEmail'], }, # a bejelentkezett ügyintéző User => { UserLogin => ['felhasználónevek'], Group_rw => [ 'forródrót', ], Role => [ 'admin', ], # ... }, # a bejelentkezett ügyfél CustomerUser => { UserLogin => ['felhasználónevek'], UserCustomerID => ['ügyfél-azonosítók'], Group_rw => [ 'forródrót', ], # ... }, # folyamat tulajdonságok Process => { ProcessEntityID => ['Process-9c378d7cc59f0fce4cee7bb9995ee3eb'], # az a folyamat, amelynek a jelenlegi jegy a része ActivityEntityID => ['Activity-f8b2fdebe54eeb7b147a5f8e1da5e35c'], # a jegy jelenlegi tevékenysége ActivityDialogEntityID => ['ActivityDialog-aff0ae05fe6803f38de8fff6cf33b7ce'], # a jelenlegi tevékenység párbeszéd, amelyet az ügyintéző/ügyfél használ }, # jegy tulajdonságok Queue => { Name => ['Nyers'], QueueID => ['azonosítók'], GroupID => ['azonosítók'], Email => ['e-mail címek'], RealName => ['OTRS rendszer'], # ... }, Service => { ServiceID => ['azonosítók'], Name => ['nevek'], ParentID => ['azonosítók'], # ... }, Type => { ID => ['azonosítók'], Name => ['nevek'], # ... }, Priority = { ID => ['azonosítók'], Name => ['nevek'], # ... }, SLA = { SLAID => ['azonosítók'], Name => ['nevek'], Calendar => ['naptárak'], # ... }, State = { ID => ['azonosítók'], Name => ['nevek'], TypeName => ['állapottípusnév'],, TypeID => ['állapottípus-azonosító'], # ... }, Owner => { UserLogin => ['felhasználónevek'], Group_rw => [ 'csoportok', ], Role => [ 'admin', ], # ... }, Responsible => { UserLogin => ['felhasználónevek'], Group_rw => [ 'csoportok', ], Role => [ 'admin', ], # ... }, DynamicField => { # A neveknek DynamicField_<mezonev> formátumban kell lenniük. # A tömbben [ ... ] lévő értékeknek mindig a dinamikus mező # meghatározásban megadott lefordítatlan belső adatkulcsoknak # kell lenniük, és nem a felhasználónak megjelenített adatértékeknek. DynamicField_Mezo1 => ['valamilyen érték'], DynamicField_MasikMezo => ['valamilyen érték'], DynamicField_JegySzabadSzoveg2 => ['valamilyen érték'], # ... }, # vagylagosan a jegytulajdonságok megadhatók a jegykivonatban Ticket => { Queue => ['Nyers'], State => ['new', 'open'], Priority => ['prioritások'], Lock => ['lock'], CustomerID => ['azonosítók'], CustomerUserID => ['azonosítók'], Owner => ['tulajdonosok'], DynamicField_Mezo1 => ['valamilyen érték'], DynamicField_EnMezom => ['valamilyen érték'], # ... }, }, # illesztési tulajdonságok (létező értékek az adatbázisból) PropertiesDatabase => { # Lásd a „Properties” szakaszt, ugyanaz a beállítás használható itt is. # ... } # lehetséges lehetőségek visszaállítása (fehér lista) Possible => { # lehetséges jegylehetőségek (fehér lista) Ticket => { Queue => ['Forródrót', 'Koordináció'], State => ['állapotok'], Priority => ['5 very high'], DynamicField_Mezo1 => ['valamilyen érték'], DynamicField_EnMezom => ['valamilyen érték'], # ... NewOwner => ['valamilyen tulajdonos'], OldOwner => ['valamilyen tulajdonos'], # ... }, # A lehetséges tevékenység párbeszédek számának korlátozása, # amelyeket az ügyintéző/ügyfél használhat egy folyamatjegyben. ActivityDialog => ['TP1', 'TP3'], # A lehetséges folyamatok számának korlátozása, amelyek indíthatók Process => ['Process-9c378d7cc59f0fce4cee7bb9995ee3eb', 'Process-12345678901234567890123456789012'], # lehetséges művelet lehetőségek (fehér lista) Action => [ 'AgentTicketBounce', 'AgentTicketPhone'. # csak a felosztás művelet megjelenítéséhez/elrejtéséhez használható 'AgentLinkObject', # csak az összekapcsolás művelet megjelenítéséhez/elrejtéséhez használható # ... ], }, # lehetőségek hozzáadása (fehér lista) PossibleAdd => { # Lásd a „Possible” szakaszt # ... }, # lehetőségek eltávolítása (fekete lista) PossibleNot => { # Lásd a „Possible” szakaszt # ... }, };
Ha az ACL-ek illesztése közben a „CustomerUserID” paraméter elküldésre kerül, akkor az ACL-mechanizmus össze fogja hasonlítani a meghatározott ACL-eket a megadott „CustomerUserID” érték használatával, hogy begyűjtse az ügyfél-felhasználó részleteit az ügyfél-felhasználó kivonat kitöltéséhez, és felülbírálja az ügyfél-információkat is a jegykivonatban a tulajdonságok illesztésénél. Másrészről ezek a számítások a „PropertiesDatabase” résznél is elvégzésre kerülnek, de a jegy ügyfelét használva alapként az adatok begyűjtéséhez.
Vegye figyelembe, hogy az ügyfélfelületen a „CustomerUserID” mindig elküldésre kerül a jelenleg bejelentkezett ügyfél-felhasználóval.
Tudatában kell lennie azzal, hogy a jegykeresés képernyőkön (AgentTicketSearch és CustomerTicketSearch) az ACL-ek által érintett jellemzők csak a dinamikus mezők. Ez azt jelenti, hogy ezeken a képernyőkön nem képes semmilyen más jellemzőt sem korlátozni, úgymint jegytípus, állapot, várólista, stb.
Az OTRS 4-től az „Action” paraméter többé nem kivonat, hanem egy hivatkozástömb, és bármely változtatási szakaszban használható bármely módosító használatával.