IDS – Intrusion Detection System

V rámci interního vzdělávání jsem měl prezentaci o tom, co je to IDS (Instrusion Detection System) a jak jsme jej nasazovali u zákazníka. V tomto článku vám popíši základní principy IDS a jak jej správně začlenit do síťové infrastruktury. Představím vám také některé aplikace, které jsem ve svém řešení IDS použil. Na závěr se budu zabývat tím, jakým způsobem IDS nastavit, jaká volit pravidla a co použít pro vizualizaci reportů.

Pokračování textu

CzechPAM: Schvalovací úkoly a úprava dat

Náš nový produkt CzechPAM pomáhá při správě privilegovaných účtů. Má mnoho skvělých vlastností. Jednou z nich je možnost, aby vytvořené úkoly, například přidání uživatele do nějaké skupiny, schvalovali určení uživatelé. Tato vlastnost CzechPAM přidává důležitou kostičku do promyšleného bezpečnostního mechanismu našeho produktu. O tom, jak jsme schvalovací úkoly přenesli do CzechPAM, se dozvíte dále v článku.

Pokračování textu

CzechIdM Roadmap 2015

Každý větší software musí mít nejakou vizi, cíl, kam chce směřovat. Bez vize je jeho vývoj pouze nabalující se sněhovou koulí. Vývoj běží na úrovni implementace vlastní setrvačností. V začátcích nám samovolný vývoj nevadí, ale v momentě, kdy aplikace dosáhne určitého rozsahu, je takový způsob práce dále neudržitelný.

S příchodem roku 2015 jsme tedy i my formalizovali naši vizi a vytvořili pro CzechIdM Roadmapu.
CzechIdM je ve vývoji již zhruba pět let, což je relativně dlouho. Většina vývoje je přizpůsobování produktu na míru konkrétnímu zákazníkovi. Dostatečně obecné (a užitečné) funkcionality jsou zároveň zařazovány do standardního produktu. Vývoj je tedy z větší části řízen poptávkou po konkrétních funkcionalitách, z části menší pak vývojem vlastních features „do šuplíku“.

Pokračování textu

Kariéra: Hledáme JAVA vývojáře

Hledáme do týmu kolegu, java vývojáře, který nám pomůže na projektech například pro největší nemocnici nebo největší technickou univerzitu v ČR.

Stále rosteme, zákazníků přibývá, proto hledáme do implementačního týmu v Praze posilu.

Co musíš umět?

Každého proškolíme, je ale potřeba znalost programovacího jazyka Java a objektového programování.  Výhodou je zkušenost s Linuxem nebo UNIXem.

Nehledáme průměrnost, ale velký zájem něco dokázat a hlavně ochotu učit se novým věcem.

Co se naučíš?

Budeš pomáhat při analýze, návrhu a vývoji SW; rozšiřovat jeho funkce na přání zákazníka.  Také budeš vyvíjet náš vlastní produkt, CzechIdM, který je nasazen u našich zákazníků.

Při vývoji budeš používat:

  • Java EE
  • RESTful API
  • JBoss AS
  • JBoss jBPM
  • Hibernate, Java persistent API (JPA)
  • Java Server Faces, Richfaces framework
  • EJB3
  • Connector Framework
  • webové služby – JAX-RS, JAX-WS
Je to hodně o vývoji, komunikaci, ale i návrhu a prezentaci týmu nebo zákazníkovi. Není to stereotypní činnost a každou chvilku můžeš dělat něco jiného.

Proč to chceš dělat?

Pokud máš zápal pro programování, jsi schopen se rychle a intenzivně učit nové věci, pak jsi vítán. Počet let praxe není pro nás rozhodující. Budeš mít příležitost si hodně vyzkoušet, mnohému se naučit.

S jakými technologiemi se naučíš pracovat:

  • CzechIdM
  • Databáze – MySQL, Oracle, PostgreSQL
  • Integrační platforma MULE
  • Liferay portál
  • Správa LDAPů, Linuxů
  • a mnoho dalších.

A nebo tě zaujme něco z tohoto:

  • školení od těch nejlepších v oboru
  • krytý bazén a sauna přímo v budově firmy kdykoliv k využití. Já si chodím po obědě pravidelně zaplavat, abych nastartoval. :-)
  • firemní garsonka v budově firmy
  • squash, fitness, spinning na HAMR sport za 1000Kč/měsíčně na osobu
  • kanceláře u metra Chodov
  • plnou kuchyň jídla a pití, pravidelné snídaně každý měsíc :-)

Kam se můžeš kariérně posunout:

  • řízení integračních pojektů
  • návrh architektury
  • tým lídr vývojářů a konzultantů
  • systémový administrátor
  • nebo školitel

Kdo jsme a jak pracujeme?

Jsme menší česká IT společnost se sídlem na Praze 4, od metra Chodov jsme pěšky 6 minut. Specializujeme se na integrační projekty Identity a Access Managementu. Na projektech pracujeme v malých týmech do deseti lidí.

Photo 20.03.14 12 14 44-2

To jsme my, někteří z týmu. Ostatní ten den makali u zákazníků.

Nový kolega vždy prochází intenzivním školením pod dohledem zkušenějšího kolegy. Každý kolega je motivován předávat kolegům dosažené znalosti, a to například formou interních prezentací. Publikujeme technické články o naší práci do blogu, viz: BCV Blog. Napsali jsme již 175 článků.

Dbáme na pohodlí, potřeby a zájmy všech kolegů, za to očekáváme super výsledky. Každý nápad na zlepšení vítáme a podporujeme. Chceme, aby nás práce bavila.

Koho tedy hledám?

Chci lidi s pozitivním přístupem, kteří se chtějí rozvíjet a růst spolu s naší firmou. V žádném případě nehledáme lidi na pár měsíců, ale spolehlivé kolegy pro dlouhodobou spolupráci, kteří ocení dobrou atmosféru v týmu a slušné zacházení.

Máš zájem?

Zaujala tě nabídka? Zašli mi CV na email lukas.cirkva@bcvsolutions.eu a nejlépe přilož nějaký svůj projekt nebo část kódu.

 

Lukáš CIRKVA
CEO
lukas.cirkva@bcvsolutions.eu
http://www.bcvsolutions.eu

 

Tisková zpráva: Podruhé jsme součástí IT projektu roku

Podruhé jsme součástí IT projektu roku

Bohemia Energy je jedním z vítězů soutěže IT projektu roku 2014, která je vyhlašována Českou asociací manažerů informačních technologií (CACIO). BCV solutions pro Bohemia Energy v tomto projektu zajišťuje Identity a Access Management s produkty CzechIdM a OpenAM.

Česká asociace manažerů informačních technologií (CACIO) vyhlásila dne 19. 2. 2015 výsledky soutěže IT projekt roku 2014. Tato soutěž se u nás pořádá již 12 let a zúčastnit se jí mohou projekty informačních a komunikačních technologií, které jsou uvedeny do praxe. Letošní ročník má tři vítěze. Jedním z nich je i největší alternativní poskytovatel elektrické energie, společnost Bohemia Energy, která zvítězila s řešením umožňujícím jejím zástupcům uzavírání nových smluv prostřednictvím tabletů. „Jsme velice rádi, že projekt, na kterém jsme se podíleli, byl oceněn takovou prestižní cenou,“  řekl Lukáš Cirkva, ředitel společnosti.

Na projektu jsme se podíleli s naším identity managerem CzechIdM, který již byl v organizaci implementován před pořízením tabletů. Pro začlenění tabletů a aplikací, které umožňují elektronické sepsání smlouvy, jsme správu uživatelských účtů přes CzechIdM rozšířili. Identity manager nyní kontroluje nejen to, aby měli přístupy pouze uživatelé, kteří je mají mít, ale kontroluje i jejich oprávnění — tedy kam uživatelé v aplikaci mohou a kam už nikoli. Tyto procesy — zakládání, mazání a kontroly přístupů — umožňuje identity manager CzechIdM u všech napojených aplikací. Nemůže tedy dojít k tomu, aby uživatelé, kteří již nejsou v zaměstnaneckém či jiném poměru, mohli nahlížet a měli přístupy do systémů Bohemia Energy. Pokud dojde k přeřazení zaměstnance na jinou pozici, přiřadí mu identity manager pouze ty přístupy, které má na nové pozici mít.

Poprvé jsme byli součástí výherce IT projektu v roce 2010, kdy jsme byli u zrodu první elektronické lékařské dokumentace na Všeobecné fakultní nemocnici, se kterou dlouhodobě spolupracujeme. Více informací o řešení na Všeobecné fakultní nemocnici naleznete zde.

Kontakt:

  • Veronika Melmuková
    BCV solutions s.r.o.
    7. května 1168/70
    149 00 Praha 4 – Chodov
    Tel.: +420 778 035 900
    Email: veronika.melmukova@bcvsolutions.eu

Jarní osvěžení s Mockitem

Zima už je, zdá se, definitivně za námi, a tak, stejně jako budeme v následujících dnech a měsících postupně odkládat všechny ty těžké bundy a kabáty,  můžeme odhodit všechno to „heavyweight“ programování a ulehčit si psaní testů s testovacím frameworkem Mockito.

Jistě se již každý z vás někdy ocitl v situaci, kdy je postaven před úkol otestovat metodu, která například při svém běhu načítá data z databáze nebo z internetu. Problém s testováním takového kódu je ten, že pro správný průběh testu musíte mít v databázi připravena testovací data a přístup k těmto datům je obecně řádově pomalejší, než bychom potřebovali.

Uvažujme například následující blok kódu v jazyku Java:

public boolean validateUniqueEmail(String email,EntityManager em){
     TypedQuery<String> q = em.createQuery("SELECT u.email FROM User u", User.class);
     List<String> result = q.getResultList();
     return !result.contains(email);
}

Asi není třeba vysvětlovat, co tato metoda má dělat, avšak pokud byste chtěli testovat správné chování této metody, pak buď musíte připravit v databázi testovací data (pak ale stejně vyvstává otázka, kde vzít instanci EntityManagera), nebo vytvořit vlastní mock pomocí dědění od třídy EntityManager a ten poté vložit jako parametr metody.

Právě s tím Vám pomůže Mockito. V následujícím bloku kódu se nachází testovací metoda, která využívá právě mock EntityManagera, vytvořený Mockitem.

 

public void testValidateEniqueEmail(){
    List<String> testData = new ArrayList<>();
    testData.add("email@somewhere.org");
    testData.add("email@somewhereelse.com");

    // Vytvoreni mock objektu
    EntityManager mockEM = mock(EntityManager.class);
    TypedQuery mockQuery = mock(TypedQuery.class);

    // Definovani chovani mock objektu
    when(mockQuery.getResultList()).thenReturn(testData);
    when(mockEM.createQuery(anyString(),String.class)).thenReturn(mockQuery);

    Assert.assertTrue(validateUniqueEmail("email@unknown.edu",mockEM));
    Assert.assertFalse(validateUniqueEmail("email@somewhere.org",mockEM));
}

Jak je patrné z ukázky, vytváření mock objektů je s Mockitem velice snadné. V tomto příkladu jsme definovali testovací data a poté jsme určili chování mock objektů tak, aby při dotazu tato data byla vrácena jako výsledek. Za zmínku zde stojí použití anyString(), což je v terminologii Mockita takzvaný matcher a zastupuje jakoukoli instanci třídy String (samozřejmě lze definovat i vlastní matchery).

Závěr

V tomto článku jsme si ukázali naprosto základní použití frameworku Mockito. Toto je však pouze zlomek toho, co tento nástroj umí a pokud vás tento článek zaujal a chcete se dozvědět více, pak navštivte stránky http://mockito.org/  nebo mě neváhejte kontaktovat na emailové adrese peter.sourek@bcvsolutions.eu.

Pokročilé možnosti automatického přidělování rolí

V jednom z minulých článků jsem popsal novou funkcionalitu CzechIdm, kterou je automatické přidělování rolí. Ukázal jsem základní možnosti konfigurace a používání této novinky v CzechIdM. V tomto článku v krátkosti ukáži, jak je možné využít pokročilé možnosti konfigurace pro automatické přidělování rolí.

Zástupné znaky

V pravidle getAutoRolesAttributes je možné kromě přesného názvu atributu specifikovat také název s použitím takzvaných zástupných znaků (wildcards). V této chvíli lze jako zástupné znaky používat znak tečka (.) a znak procento (%). První jmenovaný zastupuje jeden libovolný znak ve jméně atributu, druhý pak libovolnou sekvenci znaků. Bude-li použit název atributu,

position.:cat

pak tento výraz odpovídá například oboum následujícím výrazům:

position0:cat
position9:cat

Odvození chování zástupného znaku procento pro předchozí příklad je pak už triviální.

Vícehodnotová podmínky

Může se stát, že chceme přiřadit roli uživatelům na základě více hodnot pro jeden název atributu. Například chceme, aby se automatická role přidělila všem uživatelům, kteří mají atribut „mobile“, jehož hodnota má jednu z následujících hodnot:

+421 777 777 777
+420 777 777 774

Pak je nutné konfiguraci nastavit tak, aby pro jeden název atributu bylo možné speficikovat více hodnot. To lze nastavit v GUI pro automatické přidělování rolí (v záložce pro editaci rolí)  tak, že hodnoty jednotlivých atributů oddělíme znakem středník (;) například takto:

;+421 777 777 777;+420 777 777 774;

Role pak bude přidělena všem uživatelům, kteří mají potřebný atribut s alespoň jednou uvedenou hodnotou (v případě relace EQ, viz předchozí článek). Logický operátor mezi jednotlivými hodnotami je tedy OR.

Zvláštní chování však má relace NEQ při použití vícehodnotového parametru. Při uvedení více hodnot, jako například v předchozí ukázce, bude mezi jednotlivými hodnotami v případě NEQ logický operátor AND (místo očekávaného OR v případě NEQ).

V tomto článku jsem představil pokročilé možnosti automatického přidělování rolí. Ukázal jsem, jak je možné používat vícehodnotové parametry v konfiguraci a také jak využít zástupné znaky pro názvy atributů. Pro jakékoli dotazy mě můžete kontaktovat na marcel.poul@bcvsolutions.eu.

Seznam podporovaných systémů CzechIDM

K CzechIdM je možné připojit libovolný systém, který je dostupný po síti a je známa struktura identit. CzechIdM umožňuje spravovat uživatelské účty na vzdálených systémech prostřednictvím vhodných konektorů. Jedná se o komunikační rozhraní využívající standardní protokoly ke komunikaci se spravovaným systémem.

Děláme Identity Management přes 10 let, dříve jako konzultanti, 6 let pod vlastní firmou. Začali jsme s pevnou sadou konektorů, kterou postupně rozšiřujeme, vyvíjíme si i vlastní. Většinu informačních systémů na trhu jsme již připojovali a aktivně je naše Identity Managery spravují.czechidm

Pokud konektor  pro správu koncového systému nemáme, využijeme některý obecný nebo jej na míru vyvineme. U složitějšího systému, jako je  například SAP, je náročnost vlastního vývoje odpovídacící pracnosti v nižších jednotkách dní vývojáře.

Zde je seznam nejčastěji připojovaných systémů

Veřejné správa a samospráva – agendové systémy a spisové služby :
  • Marbes Proxio
  • Gordic Ginis
  • ICZ eSpis
  • ICTBrains Matrix
  • BBM iFIS – finanční řízení
  • Vera
Akreditované certifikační autority v ČR:
  • eIdentity.cz
  • Postsignum.cz QCA
Doménové řadiče a adresářové služby:
  • Microsoft Active Directory
  • Kerberos
  • OpenLDAP
  • Novell eDirectory
  • Red Hat Directory
Mailové systémy:
  • MS Exchange
  • Office 365
  • Linux postfix
  • Communigate
Databáze:
  • Microsoft SQL Server
  • MySQL
  • Oracle
  • PostgreSQL
  • Progres
  • Sybase
Operační Systémy:
  • HP-UX
  • Linux distribuce bez omezení – Red Hat, Debian, SuSE,…
  • Microsoft Windows všech verzí
  • Solaris
  • S/400
Personalistiky:
  • HRIS
  • Mysys HRMS
  • Navision
  • SAP
  • Vema
  • Helios
Web Single Sign On (SSO) a Access Management:
  • OpenAM
  • IBM/Tivoli Access Manager
  • Oracle Acces Manager
  • Sun Java System Access Manager
  • Kerberos
Zdravotnické systémy:
  • StaproMEDEA NIS
  • StaproPANAKEA
  • OpenLIMS
  • LEKIS
  • TESCO SW FaMa

Ostatní:

  • různé LDAPy
  • Plone
  • SAMBA

 

Pokud jste níže nenašli svůj systém, nezoufejte, seznam není kompletní. Napište nám na info@bcvsolutions.eu, zašleme Vám ínformaci jak je pracné Váš systém napojit.

Zhodnocení roku 2014 a plány na rok 2015

Rok 2014 byl pro nás obrovskou lekcí. Hlavně díky tomu, že jsme dlouho čekali na nové zakázky. To se nám stalo poprvé od startu firmy a donutilo nás to udělat hodně změn, které nakonec měly velmi pozitivní dopad na fungování firmy.

Druhá polovina roku byla opakem, naprostým úspěchem. Získali jsme nové zákazníky, tým vývojářů a konzultantů se rozjel a nasazovali jsme do produkce jeden systém za druhým. Uspořádali jsme úspěšný workshop na CzechPAM, kterým nám zajistil nové zákazníky. Splnili jsme si sen – vydali naše CzechIdM jako Opensource. Aktuálně máme nejvíce projektů od začátku firmy.

Co se podařilo v roce 2014:
  • Zveřejnili jsme náš produkt CzechIdM jako Opensource, což nás zviditelnilo a přineslo zákazníky.
  • Máme nový produkt CzechPAM. Střihli jsme si vývoj od základu a to poměrně velmi rychle. Produkt je velmi uživatelsky sexy.
  • Uspořádali jsme úspěšný workshop CzechPAM, který jsem si opravdu užil. S účastníky dále spolupracujeme.
  • Spravujeme jako firma nejvíce účtů pomocí IdM v ČR, vyjma datových schránek.
  • Udělali jsme mnoho vylepšení v CzechIdM – vytvořena standardní synchronizace, což je pecka funkce. Admin si sám může naklikat synchronizaci mezi napojenými systémy.
Cíle na rok 2015 – dominovat v ČR v identity managementu :-)
  • Dodat nejvíce IdM projektů najednou.
  • Růst obratu o 20%.
  • Pravidelně publikovat do blogu – 4xměsíčně.
  • Release nové verze CzechIdM 2x do roka. Zrychlit CzechIDM a zpříjemnit pro uživatele. Zavést automatizované testování GUI.

Osobně se mi podařilo pořádně se rozběhnout, za rok jsem zaběhl 927km. Na tento rok plánuji překonat 1000km.

Přeji mnoho úspěchů v novém roce.

Automatické přidělování rolí

Role v CzechIdM představují balík oprávnění identity ke koncovému systému nebo přímo CzechIdM (admin role). Role lze přiřazovat ručně, například pomocí webového GUI, nebo pomocí workflow a pravidel. Mým úkolem bylo implementovat nový způsob přiřazování rolí – automatické přidělování rolí, které lze použít v průběhu standardní rekoncilace/synchronizace. Dále se v článku dozvíte, jak byla tato nová funkcionalita v CzechIdM implementována a jak automatické přidělování rolí konfigurovat a spouštět.

Automatické role

Nejprve je třeba definovat, co jsou to automatické role. Nově v CzechIdM mají všechny role, včetně admin rolí, atributy, které slouží primárně pro rozhodování, komu danou roli při automatickém přiřazení přidělit. Počet těchto atributů je napevno stanoven na 10 a jsou jednoduše pojmenovány attribute1 až attribute10. Role je automatická právě tehdy, když má vyplněný alespoň jeden tento atribut – hodnota atributu není null a nebo prázdný řetězec.

Pro přiřazování automatických rolí byly definovány 4 nové užitečné metody nad třídou Data.

  • GetAutoRoles() – metoda používá aktivní UserView a pro daného uživatele vrací seznam automatických rolí, které splňují podmínky přidělení v příslušných atributech rolí.
  • AssignAutoRolesExpUsers() – na základě explicitně předaného seznamu uživatelů těmto přiřadí odpovídající automatické role.
  • AssignAutoRolesExpRoles() – na základě explicitně předaného seznamu rolí vyhledá odpovídající uživatele a těmto přiřadí odpovídající automatické role.
  • AssignAutoRoles() – pro všechny uživatele v systému přiřadí odpovídající automatické role.

Pomocí těchto metod lze například ve workflow nebo pravidlech jednorázově přiřadit automatické role uživatelům.

Konfigurace automatického přiřazení rolí

Předtím, než je možné přikročit k samotnému procesu automatického přidělování, je potřeba provést konfiguraci podmínek, které musí uživatelé splňovat, aby jim byla automatická role přidělena.

Podmínky je možné si představit jako trojici:

Atribut:Relace:Hodnota atributu

  • Atribut je název uživatelského atributu, například „tel“
  • Relace je vztah mezi názvem a hodnotou atributu, v současnosti lze vybírat z equal (EQ), not equal (NEQ) a like (LIKE)
  • Hodnota atributu je vypovídající, například „+420 540 123 456“

Konfigurace podmínky probíhá ve dvou krocích. První část konfigurace je umístěna v pravidle getAutoRolesAttributes. Pravidlo tedy editujeme, nejjednodušeji pomocí webového rozhraní. Pravidlo getAutoRolesAttributes obsahuje definici DTO, které představuje první část podmínky pro automatické přidělování rolí. Pravidlo má následující strukturu:

DTO roleAttrs = new DTOGroup();
 DTO attr1 = new DTOGroup();
 attr1.put(Constants.AUTO_ROLE_ATTRIBUTE_NAME, "tel");
 attr1.put(Constants.AUTO_ROLE_ATTRIBUTE_RELATION, RoleAttrRelation.EQ);
 …
 DTO attr10 = new DTOGroup();
 attr10.put(Constants.AUTO_ROLE_ATTRIBUTE_NAME, "");
 attr10.put(Constants.AUTO_ROLE_ATTRIBUTE_RELATION, RoleAttrRelation.EQ);
 …
 roleAttrs.put(AutoRoleAttr.EQ.name(), RoleAttrEq.OR);

Na řádku attr1.put(Constants.AUTO_ROLE_ATTRIBUTE_NAME, "tel"); jako druhý argument funkce attr1.put() vyplníme název atributu uživatele, například „tel“. Na následujícím řádku se vyplňuje Relace, v příkladu je RoleAttrRelation.EQ, který reprezentuje rovnost řetězců. Jak je vidět, lze nastavit až 10 podmínek pro přidělování rolí, přičemž logický operátor mezi jednotlivými podmínkami je ve výchozím stavu OR, jak je vidět na posledním řádku z příkladu.

Nyní máme tedy nastavenou první část podmínky Atribut:Relace:Hodnota a chybí nám ještě poslední část samotná hodnota atributu. Tu nastavujeme do již představených atributů rolí Attribute1 až Attribute10, přičemž pořadí atributů odpovídá řádkům v pravidle getAutoRolesAttributes. Toto můžeme nastavit pomocí webového GUI:

auto_config

Nyní máme již nastavené podmínky pro automatické přidělování rolí. Spuštění automatického přidělování rolí může probíhat automaticky při standardní rekoncilaci/synchronizaci. Pomocí GUI lze nastavit, kdy bude tato funkcionalita aktivní.

synch_conf

Omezení

Je třeba zdůraznit, že automatické přidělení rolí proběhne pouze při změnách uživatelské identity (update, vytvoření). Tedy vždy pouze pro určité stavy a akce. Jsou to tyto:

  • Assigned – UPDATE_IDENTITY
  • Matched – LINK_ACCOUNT_AND_UPDATE
  • Missing identity – CREATE_IDENTITY
  • Missing identity – CREATE_IDENTITY_AND_UPDATE

Automatické role mají určitá omezení, která je třeba mít na paměti při konfigurování. Zejména lze přiřazovat role pouze na základě atributů datového typu String. Například nelze použít pouze název atributu „homeOrganisation“ nebo „disabled“.

Dále je třeba počítat s tím, že jednotlivé podmínky jsou vzájemně spojeny logickým operátorem OR. Návrh automatických rolí počítá s pozdějším přidáním dalších logických operátorů jako je AND, nicméně v současné podobně je jedinou volbou OR.

Závěr

V tomto článku jsem představil novou vlastnost CzechIdM – automatické přiřazování rolí. Byly definovány automatické role, ukázány možnosti konfigurace automatického přiřazení rolí a také omezení pro tuto novou funkcionalitu. Možnosti využití jsou jistě širší, než je schopen pojmout tento článek, proto se můžete těšit na pokračování, kde budou představeny širší možnosti konfigurace automatických rolí. Pro jakékoli dotazy mě můžete kontaktovat na marcel.poul@bcvsolutions.eu.