Using Cache’s Security Features Štefan Havlíček
Proč se starat o zabezpečení aplikací Když to neuděláte: Když to neuděláte: –Vaše rodina bude prodána do otroctví –Strávíte zbytek žívota v táborech pro malomocné v deltě Mississipi Když to uděláte: Když to uděláte: –Splníte požadavek dnešní doby Informační systémy jsou v současnosti ohrožovány řadami hrozeb a každým dnem přibývají nové metody útoku.Informační systémy jsou v současnosti ohrožovány řadami hrozeb a každým dnem přibývají nové metody útoku. –Získáte konkurenční výhodu –Provedete výše uvedené body vašim konkurentům
Co je potřeba mít na paměti V teorii není rozdíl mezi teorií a praxí. V praxi tomu tak není!!! V teorii není rozdíl mezi teorií a praxí. V praxi tomu tak není!!! Bezpečnost je hlavně proces. Bezpečnost je hlavně proces. –Celková míra zabezpečení systému není dána jen použitým software, ale má i své další složky, z nichž velmi důležitou je rozhodně i organizační dimenze. Bezpečnostní politika a standardyBezpečnostní politika a standardy Organizace bezpečnostiOrganizace bezpečnosti Logická a fyzická bezpečnost ….Logická a fyzická bezpečnost …. Certifikace softwareCertifikace software
Evaluation Assurance Level (EAL) The Evaluation Assurance Level (EAL1 through EAL7) of an IT product or system is a numerical grade assigned following the completion of a Common Criteria security evaluation, an international standard in effect since The Evaluation Assurance Level (EAL1 through EAL7) of an IT product or system is a numerical grade assigned following the completion of a Common Criteria security evaluation, an international standard in effect since The EAL level does not measure the security of the system itself, it simply states at what level the system was tested to see if it meets all the requirements of its Protection Profile. The EAL level does not measure the security of the system itself, it simply states at what level the system was tested to see if it meets all the requirements of its Protection Profile.
Evaluation Assurance Level (EAL) Úrovně certifikatů EAL Úrovně certifikatů EAL –EAL1: Functionally Tested –EAL2: Structurally Tested –EAL3: Methodically Tested and Checked –EAL4: Methodically Designed, Tested and Reviewed –EAL5: Semiformally Designed and Tested –EAL6: Semiformally Verified Design and Tested –EAL7: Formally Verified Design and Tested
Jsme certifikováni …. Caché má certifikát, že splňuje požadavky pro EAL Level 3 Common Criteria Assurance Certification. Caché má certifikát, že splňuje požadavky pro EAL Level 3 Common Criteria Assurance Certification. Tento certifikát je uznáván ve 24 zemích světa.Tento certifikát je uznáván ve 24 zemích světa.
EAL 3 EAL3: Methodically Tested and Checked EAL3: Methodically Tested and Checked –EAL3 is applicable in those circumstances where developers or users require a moderate level of independently assured security.
Certifikace Common Criteria Kritériem přiznání certifikátu je funkcionalita produktu z hlediska bezpečnosti: Kritériem přiznání certifikátu je funkcionalita produktu z hlediska bezpečnosti: – utajení (confidentiality) – integrita – dostupnos t z pohledu funkčnosti databázového serveru tzn.: z pohledu funkčnosti databázového serveru tzn.: – potřebu zajistit identifikaci a autentifikaci (ověření) uživatelů –řízení přístupu –šifrování a audit operací
Bezpečnostní model InterSystems Caché Advanced Security (od verze 5.1) –Jednoduchá unifikovaná architektura –Konsistentní vysoce výkonná infrastruktura pro podporu aplikací –Minimální režie systému –Založena na prověřených průmyslových standardech a certifikovaných technologiích
Bezpečnostní model InterSystems … Zabezpečení databáze Caché Zabezpečení databáze Caché –Zdroje (Resources) –Šifrování (Encryption) –Audit (System events auditing) Umožnit vývojářům zabudovat bezpečnostní mechanismy do jejich aplikací Umožnit vývojářům zabudovat bezpečnostní mechanismy do jejich aplikací –Delegovaná autentikace, ověřování autorizace, eskalace rolí –Audit aplikačních událostí –Zabezpečená komunikace klienta SSL/TLS
Bezpečnostní model InterSystems … Pracovat efektivně s bezpečnostními technologiemi operačního prostředí Pracovat efektivně s bezpečnostními technologiemi operačního prostředí –Autentikace: KerberosKerberos Caché LoginCaché Login LDAPLDAP –Server SSL/TLS
3 úrovně programového prostředí Chrání zdroje a poskytované služby Nabízí infrastrukturu pro implementaci a zprovoznění bezpečnostních pravidel na úrovni aplikace. Prostředky pro efektivní interakci s ostatními nástroji.
Dobře nastavená bezpečnost pokrývá 3 úrovně 1. Prevence –Autentikace –Autorizace –Zabezpečená komunikace –Šifrovaná databáze 2. Detekce –Audit 3. Reakce
Prevence -> Nastavení bezpečnosti Caché
System Management Portal Webové rozhraní Webové rozhraní Umožňuje vzdálenou správu systému Umožňuje vzdálenou správu systému Minimalizuje závislost na verzi systému Minimalizuje závislost na verzi systému Slučuje funkcionalitu nástrojů: Slučuje funkcionalitu nástrojů: –Configuration manager –Control panel –Explorer –SQL manager
Správa bezpečnostního nastavení
Konfigurace CAS při instalaci Nastavuje počáteční konfiguraci pro Služby a Zabezpečení: Nastavuje počáteční konfiguraci pro Služby a Zabezpečení: Typy konfigurací: Typy konfigurací: –Minimal –Normal –Locked Down
Konfigurace CAS při instalaci … Rozdíly v uživatelském zabezpečení: Rozdíly v uživatelském zabezpečení: –Maska pro zadávání hesla (3.32ANP nebo 8.32ANP) –Účet _SYSTEM (aktivován/zablokován) –Role účtu UnknownUser (%All, None) Rozdíly ve vlastnostech služeb: Rozdíly ve vlastnostech služeb: –Které Služby jsou aktivovány –Zda oprávnění Use Service je Public –Zda služba vyžaduje autentikaci a jakého typu
Způsoby připojení ke Caché
Autentikace
Autentikace Neautentikovaný přístup Neautentikovaný přístup Caché login Caché login Operační systém Operační systém LDAP LDAP Delegovaná autentikace Delegovaná autentikace Kerberos Kerberos
Autentikace na bázi OS Uživatel je indetifikován na základě účtu OS Uživatel je indetifikován na základě účtu OS Je aplikována pouze na procesy běžící na straně serveru, (např. apliace s terminálovým přístupem) Je aplikována pouze na procesy běžící na straně serveru, (např. apliace s terminálovým přístupem) Typické použití na systémech Unix, OpenVMS Typické použití na systémech Unix, OpenVMS Pro WIN je použitelné pouze pro lokální přihlašování Pro WIN je použitelné pouze pro lokální přihlašování
LDAP Implementováno od verze Implementováno od verze Rozšiřuje LDAP schema o atributy obsahující důležité informace pro autentikaci uživatelů Caché Rozšiřuje LDAP schema o atributy obsahující důležité informace pro autentikaci uživatelů Caché –Caché username –Caché roles –Default namespace Použitelné jak s Active Directory tak s LDAP servery jiných stran Použitelné jak s Active Directory tak s LDAP servery jiných stran
LDAP konfigurace LDAP přístupové atributy Nové Atributy (fields) získané z LDAP
Delegovaná autentikace Uživatelsky definovaná autentikace Uživatelsky definovaná autentikace Použitelná: Použitelná: –V aplikacích –Ve službách Caché Účel: Účel: –Re-use existujících mechanismů autentikace implementovaných do stávajících aplikací.
Implementace …
Autentikován a “Logged In” “Logging in” znamená že: “Logging in” znamená že: –Autentikace byla úspěšná bez ohledu na způsob autentikace (Kerberos, LDAP, …) –Oprávnění asociovaná s cílovám jmenným prostorem jsou v pořádku Jakmile je uživatel “přilogován”, je možná další interakce s prostředím Caché Jakmile je uživatel “přilogován”, je možná další interakce s prostředím Caché 2 systémové proměnné jsou automaticky vytvořeny: 2 systémové proměnné jsou automaticky vytvořeny: –$USERNAME obsahuje uživatelské jméno použíté při autentikaci –$ROLES obsahuje seznam rolí přiřazených uživateli
Autorizace
Autorizace
Autorizace … Definuje co smí autentikovaný uživatel dělat a k jakým prostředkům (zdrojům) má přístup Definuje co smí autentikovaný uživatel dělat a k jakým prostředkům (zdrojům) má přístup Terminologie: Terminologie: –Asset: něco co je chráněno (např. databáze, připojení k databázi, správcovské činnosti) –Resource (zdroj): něco co chrání Asset Database Resource (%DB_Samples)Database Resource (%DB_Samples) Administrative Resource (%Admin_Manage)Administrative Resource (%Admin_Manage) Development Resource (%Development)Development Resource (%Development) Service Resource (%Service_CSP)Service Resource (%Service_CSP) User DefinedUser Defined
Autorizace … –Permission (oprávnění): umožňuje vykonat určitou akci Read (R) – vidět obsah zdroje, např. data a rutinyRead (R) – vidět obsah zdroje, např. data a rutiny Write (W) – vidět a měnit obsah zdrojeWrite (W) – vidět a měnit obsah zdroje Use (U) – používat daný zdroj, např. aplikaci nebo službuUse (U) – používat daný zdroj, např. aplikaci nebo službu –Privilege (výsada): uděluje povolení vykonat něco se zdrojem chránícím jeden nebo více assetů –Privilege (výsada): uděluje povolení vykonat něco se zdrojem chránícím jeden nebo více assetů Zápis:Zápis: –%DB_Samples:Read Mohou být veřejná (Public)Mohou být veřejná (Public)
Role Role: pojmenovaná kolekce výsad (privileges) Role: pojmenovaná kolekce výsad (privileges) –Více uživatelů potřebuje stejnou sadu výsad –Tato sada může být definována jednou a pak sdílena –Uživatel může mít více rolí
Role …
Role-Based Access Control (RBAC)
Role … Předdefinované role: Předdefinované role: –Jsou nastaveny během instalace Caché a nejsou modifikovány během povýšení na novou verzi –Př.: %All, %Manager, %Development, … Uživatelsky definované role Uživatelsky definované role –Vytvářeny uživatelem
Role %ALL Předdefinovaná role Předdefinovaná role –Vlastní všechna oprávnění ke všem zdojům systému –Nelze ji odstranit ani modifikovat –Vždy musí existovat alespoň jeden uživatel, který má přiřazenu roli %ALL
Šifrování Databáze
Šifrování databáze Navrženo pro ochranu uložených dat před uživateli bez oprávnění přistupovat k těmto datům Navrženo pro ochranu uložených dat před uživateli bez oprávnění přistupovat k těmto datům Základní požadavky: Základní požadavky: –Šifrování dat v databázi musí být založeno na časem prověřených průmyslových standardech –Šifrování dat nesmí mít zásadní dopad na výkonnost databáze Tato funkcionalita existuje nezávisle na CAS !!! Tato funkcionalita existuje nezávisle na CAS !!!
Šifrování databáze … Využívá standard AES (Advanced Encryption Standard) Využívá standard AES (Advanced Encryption Standard) Nastavuje se pro každou databázi při vytváření databáze, ale lze šifrovat i dodatečně Nastavuje se pro každou databázi při vytváření databáze, ale lze šifrovat i dodatečně Šifrování dat se provádí během během přístupu k nim Šifrování dat se provádí během během přístupu k nim Položky v souboru WIF (Write Image Journal) jsou šifrovány též Položky v souboru WIF (Write Image Journal) jsou šifrovány též Je možné šifrovat i databázi CACHETEMP, stejně jako žurnálovací soubory Je možné šifrovat i databázi CACHETEMP, stejně jako žurnálovací soubory
Šifrovací klíče Každá instalace Caché si může vytvořit jedinečný šifrovací klíč určený pro ochranu databáze Každá instalace Caché si může vytvořit jedinečný šifrovací klíč určený pro ochranu databáze –Délka klíče: 128, 192, 256 bitů Klíč je používán pro všechny databáze na serveru Klíč je používán pro všechny databáze na serveru –Je uložen v souboru Encryption Key File –Je asociován s účtem, který má na starost správu šifrovacích klíčů –Jakmile je vytvořen je dobré ho uložit na bezpečné místo
Klíč aktivován při startu systému Jakmile je klíč aktivován je vhodné ho ze systému odebrat Jakmile je klíč aktivován je vhodné ho ze systému odebrat
Vytvoření šifrované databáze Databázi lze zašifrovat v okamžiku jejího vytvoření Databázi lze zašifrovat v okamžiku jejího vytvoření Před zapnutím šifrování db nebo jejím montování musí být aktivován šifrovací klíč Před zapnutím šifrování db nebo jejím montování musí být aktivován šifrovací klíč Je možné též šifrovat databáze CACHETEMP a žurnálovací soubory Je možné též šifrovat databáze CACHETEMP a žurnálovací soubory
Vypnutí a zapnutí šifrování Zašifrování existující nešifrované databáze a obrácený proces lze provést pomocí utility „cvencrypt“ Zašifrování existující nešifrované databáze a obrácený proces lze provést pomocí utility „cvencrypt“ Utilita je ve složce: Utilita je ve složce: – \bin Volání utility: Volání utility: –cvencrypt cache.dat
Caché Audit
Caché audit Loguje určité klíčové události do zabezpečené databáze Loguje určité klíčové události do zabezpečené databáze Typy logovaných událostí: Typy logovaných událostí: –Povinné systémové události, Logovány vždy (např. startup, shutdown)Logovány vždy (např. startup, shutdown) –Volitelné systémové události Logovány v případě explictního nastaveníLogovány v případě explictního nastavení –Uživatelsky definované události Musí být nastaveny explicitně. Aplikace mohou generovat vlastní záznamy pro audit pomocí $System.Security.Audit()Musí být nastaveny explicitně. Aplikace mohou generovat vlastní záznamy pro audit pomocí $System.Security.Audit()
Audit - přehled
Co není automaticky auditováno Aktivity spojené s databázovými operacemi Aktivity spojené s databázovými operacemi –Všechny operace insert, update, delete –Toto mohou zajistit aplikace ve svém kódu pomocí objektových metod nebo triggerů
Zobrazení dat auditu Log je uložen v chráněném souboru CACHEAUDIT Log je uložen v chráněném souboru CACHEAUDIT –Databáze je žurnálována a zálohována Chráněný zdrojem %DB_CACHEAUDIT Chráněný zdrojem %DB_CACHEAUDIT Caché nabízí několik standardních reportů prostřednictvím portálu Caché nabízí několik standardních reportů prostřednictvím portálu Portál umožňuje: Portál umožňuje: –Kopírovat vybrané položky do specifikovaného jmenného prstoru –Exportovat vybrané položky do souboru –Čistit (mazat) vybrané položky z logu
Row-level Security
Co je Row-level Security? Od verze , Caché nabízí rozšíření bezpečnosti SQL s granularitou jednoho řádku Od verze , Caché nabízí rozšíření bezpečnosti SQL s granularitou jednoho řádku Říká se tomu Row-level Security (RLS) Říká se tomu Row-level Security (RLS) Každý řádek obsahuje seznam autorizovaných entit, kterými mohou užívatalé nebo role Každý řádek obsahuje seznam autorizovaných entit, kterými mohou užívatalé nebo role
K čemu potřebuji RLS? Typicky je bezpečnost SQL řízena tak, že udělením nějakému uživateli nebo roli oprávnění SELECT k dané tabulce nebo pohledu Typicky je bezpečnost SQL řízena tak, že udělením nějakému uživateli nebo roli oprávnění SELECT k dané tabulce nebo pohledu –Role zjednodušují řízení přístupu v situaci, kdy počet rolí je podstatně menší než počet uživatelů –Zatímco Row-level security nabízí odpověď, na které řádky pohledu smí uživatel nebo role použít SELECT…
Příklad užití RLS … Nemocnice požaduje webový přístup k údajům pacienta, prokaždého registrovaného pacienta Nemocnice požaduje webový přístup k údajům pacienta, prokaždého registrovaného pacienta Vytvoření separátního pohledu pro každého pacienta není prakticky použitelná metoda Vytvoření separátního pohledu pro každého pacienta není prakticky použitelná metoda Místo toho je možné, ve spolupráci s Caché role-based authentication zprovoznit aplikaci pomocí zprovoznění row- level security! Místo toho je možné, ve spolupráci s Caché role-based authentication zprovoznit aplikaci pomocí zprovoznění row- level security!
Důležitá poznámka! Row-level security je vynucena pouze při přístupu k datům pomocí SQL Row-level security je vynucena pouze při přístupu k datům pomocí SQL Row-level security není vynucena při přímém přístupu k globálům nebo při přístupu ke globálům prostřednictvím objektového rozhraní! Row-level security není vynucena při přímém přístupu k globálům nebo při přístupu ke globálům prostřednictvím objektového rozhraní!
Column-level Security
Od verze Caché SQL podporuje tzv. column-level privileges pro SQL příkazy Select, Insert and Update. Od verze Caché SQL podporuje tzv. column-level privileges pro SQL příkazy Select, Insert and Update. Column-level privileges jsou přiřazována a odebírána pomocí SQL příkazů Grant a Revoke. Column-level privileges jsou přiřazována a odebírána pomocí SQL příkazů Grant a Revoke. Přiřazují uživatelům or rolím specifikovaná oprávnění ke danému seznamu sloupců dané tabulky nebo pohledu. Přiřazují uživatelům or rolím specifikovaná oprávnění ke danému seznamu sloupců dané tabulky nebo pohledu. Seznam sloupců může obsahovat jediný sloupec nebo seznam názvů sloupců oddělený čárkou. Seznam sloupců může obsahovat jediný sloupec nebo seznam názvů sloupců oddělený čárkou.
Column-level Security: Grant and Revoke GRANT column-privilege (column-list) ON table TO grantee Následující příklad přiřadí oprávnění Update dvěma sloupcům: GRANT UPDATE(Name,Age) GRANT UPDATE(Name,Age) ON Sample.Person ON Sample.Person TO Bob REVOKE je možné použít k odebrání oprávnění typu column-level. REVOKE UPDATE(Age) REVOKE UPDATE(Age) ON Sample.Person FROM Bob
Column-level Security … Column-level security nenaruší oprávnění, která byla přiřazena na úrovni tabulky, tj. table-level privileges. Column-level security nenaruší oprávnění, která byla přiřazena na úrovni tabulky, tj. table-level privileges. Příkaz column-level Revoke umožňuje odebrat oprávnění na úrovni sloupce, která byla sloupci dříve udělana. Nelze jím odnímat oprávnění na úrovni tabulky. Příkaz column-level Revoke umožňuje odebrat oprávnění na úrovni sloupce, která byla sloupci dříve udělana. Nelze jím odnímat oprávnění na úrovni tabulky.
That’s all folks