73
Bezpe Bezpe čnosť informačných systémov čnosť informačných systémov Bezpečnosť Java a J2EE aplikácii Bezpečnosť Java a J2EE aplikácii

Bezpe čnosť informačných systémov

  • Upload
    denton

  • View
    64

  • Download
    4

Embed Size (px)

DESCRIPTION

Bezpe čnosť informačných systémov. Bezpečnosť Java a J2EE aplikácii. Obsah. Bezpečnosť Java 2 aplikácii Sandbox Security Manager Policy file Bezpe čnosť J2EE aplikácii Úvod Autentifikácia Autorizácia Security pattern. Bezpečnosť Java 2 aplikácie. Sandbox SecurityManager Policy File - PowerPoint PPT Presentation

Citation preview

Page 1: Bezpe čnosť informačných systémov

BezpeBezpečnosť informačných čnosť informačných systémovsystémov

Bezpečnosť Java a J2EE aplikáciiBezpečnosť Java a J2EE aplikácii

Page 2: Bezpe čnosť informačných systémov

ObsahObsah

Bezpečnosť Java 2 aplikáciiBezpečnosť Java 2 aplikácii– SandboxSandbox– Security ManagerSecurity Manager– Policy filePolicy file

BezpeBezpečnosť J2EE aplikáciičnosť J2EE aplikácii– ÚvodÚvod– AutentifikáciaAutentifikácia– AutorizáciaAutorizácia– Security patternSecurity pattern

Page 3: Bezpe čnosť informačných systémov

Bezpečnosť Java 2 Bezpečnosť Java 2 aplikácieaplikácie

SandboxSandbox

SecurityManagerSecurityManager

Policy FilePolicy File

PríkladPríklad

Page 4: Bezpe čnosť informačných systémov

SandboxSandbox

Bezpečnostný model prístupu aplikácii k Bezpečnostný model prístupu aplikácii k zdrojomzdrojom

Základnou myšlienkou je poskytnúť Základnou myšlienkou je poskytnúť aplikácii priestor, aby mohla bežať a aplikácii priestor, aby mohla bežať a zároveň tento priestor obmedziť zároveň tento priestor obmedziť nejakými hranicaminejakými hranicami

Java sandbox je zodpovedný za ochranu Java sandbox je zodpovedný za ochranu mnoho zdrojov a to na rôznych mnoho zdrojov a to na rôznych úrovniach.úrovniach.

Page 5: Bezpe čnosť informačných systémov

Rôzne úrovne Rôzne úrovne obmedzeniaobmedzenia minimálny sandboxminimálny sandbox - obsahuje len zdroje potrebné na - obsahuje len zdroje potrebné na

beh programu. Dovoľuje prístup k beh programu. Dovoľuje prístup k CPUCPU, , obrazovkeobrazovke, , klávesniciklávesnici, , myške myške a jeho pridelenej a jeho pridelenej pamäti.pamäti.

Sandbox, ktorý okrem predchádzajúceho obsahuje aj Sandbox, ktorý okrem predchádzajúceho obsahuje aj prístup k web servru, z ktorého bol stiahnutý – prístup k web servru, z ktorého bol stiahnutý – štandardný typ.štandardný typ.

Sandbox, ktorý okrem predchádzajúceho obsahuje Sandbox, ktorý okrem predchádzajúceho obsahuje možnosť prístupu k množine programovo špecifických možnosť prístupu k množine programovo špecifických zdrojov (lokálne súbory, lokálny počítač atď)zdrojov (lokálne súbory, lokálny počítač atď)

Otvorený sandboxOtvorený sandbox, v ktorom programy majú prístup , v ktorom programy majú prístup k ľubovoľným zdrojom.k ľubovoľným zdrojom.

Page 6: Bezpe čnosť informačných systémov

Vývoj modelu sandbox Vývoj modelu sandbox – JDK 1.0– JDK 1.0

pôvodný modelpôvodný model

ponúkal veľmi obmedzené ponúkal veľmi obmedzené prostredie pre vykonávanie prostredie pre vykonávanie nedôveryhodného kódu (nedôveryhodného kódu (untrusted untrusted code)code) získaného z otvorenej siete získaného z otvorenej siete

Kontrolu prístupu vykonáva Kontrolu prístupu vykonáva security managersecurity manager

Page 7: Bezpe čnosť informačných systémov

Vývoj modelu sandbox Vývoj modelu sandbox – JDK 1.1– JDK 1.1

JDK 1.1 poskytlo novú JDK 1.1 poskytlo novú koncepciu podpisovania koncepciu podpisovania apletovapletov

Ak bol aplet digitálne Ak bol aplet digitálne podpísaný a ak verejný kľúč podpísaný a ak verejný kľúč určený na overenie podpisu bol určený na overenie podpisu bol rozpoznaný ako pravdivý, s rozpoznaný ako pravdivý, s apletom sa pracovalo ako apletom sa pracovalo ako s dôveryhodným (trusted) s dôveryhodným (trusted) lokálnym kódom a bol mu lokálnym kódom a bol mu poskytnutý plný prístup poskytnutý plný prístup k systémovým zdrojom.k systémovým zdrojom.

Podpísané aplety sa doručovali Podpísané aplety sa doručovali spolu s podpisom v označenom spolu s podpisom v označenom JAR súbore.JAR súbore.

Page 8: Bezpe čnosť informačných systémov

Vývoj modelu sandbox Vývoj modelu sandbox – JDK 1.2– JDK 1.2

Aj lokAj lokálny a aj vzdialený kód sa álny a aj vzdialený kód sa stáva predmetom bezpečnostných stáva predmetom bezpečnostných zásad, ktoré definujú množinu právzásad, ktoré definujú množinu práv

Oprávnenia sú pridelené Oprávnenia sú pridelené zdrojom kóduzdrojom kódu

Konfigurácia sa vykonáva v súboreKonfigurácia sa vykonáva v súbore bezpečnostných pravidiel (security bezpečnostných pravidiel (security policy) policy)

Runtime systém organizuje kód do Runtime systém organizuje kód do individuálnych individuálnych doméndomén

Každá doména sa zaoberá Každá doména sa zaoberá množinou tried, ktoré majú tie množinou tried, ktoré majú tie isté právaisté práva

Page 9: Bezpe čnosť informačných systémov

Security ManagerSecurity Manager

Môžeme si predstaviť štyri úrovne útoku na prostredie Môžeme si predstaviť štyri úrovne útoku na prostredie JavaJava

– Modifikácie systémuModifikácie systému, ak program má práva na čítanie , ak program má práva na čítanie a zápis a spraví nejaké zmeny v systémea zápis a spraví nejaké zmeny v systéme

– Porušenie súkromiaPorušenie súkromia, ak program má právo čítať a kradne , ak program má právo čítať a kradne súkromné údaje zo systémusúkromné údaje zo systému

– Odopretie služby,Odopretie služby, ak program používa systémové ak program používa systémové prostriedky bez požiadania v takom rozsahu, že systém prostriedky bez požiadania v takom rozsahu, že systém nedokáže vykonávať svoju činnosť (čas procesora a pod. – nedokáže vykonávať svoju činnosť (čas procesora a pod. – cycle stealingcycle stealing))

– Falošná prezentáciaFalošná prezentácia, ak sa program tvári ako skutočný , ak sa program tvári ako skutočný užívateľ systému, môže posielať maily vo vašom mene užívateľ systému, môže posielať maily vo vašom mene a pod.a pod.

Security manager dokáže zabrániť Security manager dokáže zabrániť prvým dvomprvým dvom z týchto útokov.z týchto útokov.

Page 10: Bezpe čnosť informačných systémov

Security ManagerSecurity Manager Security managerSecurity manager je hlavným prvkom pri riadení prístupu aplikácii k systémovým je hlavným prvkom pri riadení prístupu aplikácii k systémovým

zdrojom. zdrojom.

Je súčasťou bežiaceho JVM a riadi prístup k vonkajším zdrojom. Je súčasťou bežiaceho JVM a riadi prístup k vonkajším zdrojom.

Definuje vonkajšie hranice sandboxu a pretože je nastaviteľný, definuje aj rôznu Definuje vonkajšie hranice sandboxu a pretože je nastaviteľný, definuje aj rôznu bezpečnostnú politiku pre aplikáciu.bezpečnostnú politiku pre aplikáciu.

Java API podporuje rôznu bezpečnostnú politiku tým, že požiada security manager Java API podporuje rôznu bezpečnostnú politiku tým, že požiada security manager o povolenie ešte pred tým, než sa vykoná nejaká akcia. Toto požiadanie vykonávajú o povolenie ešte pred tým, než sa vykoná nejaká akcia. Toto požiadanie vykonávajú check- metódycheck- metódy, napr. checkWrite()., napr. checkWrite().

Pred Java verziou 1.2 bol Pred Java verziou 1.2 bol java.lang.SecurityMangerjava.lang.SecurityManger abstraktnou triedouabstraktnou triedou a musel a musel byť implementovaný. To bola veľmi náročná práca a obsahovala mnoho citlivých byť implementovaný. To bola veľmi náročná práca a obsahovala mnoho citlivých miest, ktoré mohli viesť k vzniku dier miest, ktoré mohli viesť k vzniku dier

Verzia 1.2 predstavila konkrétnu implementáciu triedy a dovolila definovať vlastnú Verzia 1.2 predstavila konkrétnu implementáciu triedy a dovolila definovať vlastnú bezpečnostnú politiku v bezpečnostnú politiku v ASCI súbore, nie v kóde programuASCI súbore, nie v kóde programu. .

Namiesto check-metód uviedla jednu metódu Namiesto check-metód uviedla jednu metódu checkPermission().checkPermission().

Page 11: Bezpe čnosť informačných systémov

Security ManagerSecurity Manager

Vo všeobecnosti aplikácia nemá pridelený security manager. To Vo všeobecnosti aplikácia nemá pridelený security manager. To znamená, že JVM nevytvorí automaticky security manager pre každú znamená, že JVM nevytvorí automaticky security manager pre každú Java aplikáciu a teda aplikácia môže vykonávať ľubovoľné operácie bez Java aplikáciu a teda aplikácia môže vykonávať ľubovoľné operácie bez nejakých bezpečnostných obmedzení.nejakých bezpečnostných obmedzení.

V aplikácii môžeme získať aktuálny security manager použitím triedy V aplikácii môžeme získať aktuálny security manager použitím triedy System:System:

SecurityManager appsm = System.getSecurityManager();

if (security != null) { security.checkExit(status);}

Page 12: Bezpe čnosť informačných systémov

Security ManagerSecurity Manager

Page 13: Bezpe čnosť informačných systémov

Security ManagerSecurity Manager

Page 14: Bezpe čnosť informačných systémov

Policy filePolicy file

Policy file je ASCI textový súbor, ktorý môže byť vytvorený Policy file je ASCI textový súbor, ktorý môže byť vytvorený textovým editorom alebo pomocou grafického nástroja Policy textovým editorom alebo pomocou grafického nástroja Policy ToolTool

Obsahuje bezpečnostné pravidlá pre security managerObsahuje bezpečnostné pravidlá pre security manager

Je to vlastne zoznam povolený pre jednotlivé kódyJe to vlastne zoznam povolený pre jednotlivé kódy

Policy Tool sa nachádza v adresári JRE/bin/policytool.exePolicy Tool sa nachádza v adresári JRE/bin/policytool.exe

Štandardný súbor sa nachádza v JRE/lib/security/java.policyŠtandardný súbor sa nachádza v JRE/lib/security/java.policy

Page 15: Bezpe čnosť informačných systémov

Štandardný súbor Štandardný súbor java.policyjava.policy

/* AUTOMATICALLY GENERATED ON Wed Apr 07 09:13:40 CEST 2004*//* DO NOT EDIT */

grant codeBase "file:${java.home}/lib/ext/*" { permission java.security.AllPermission;};

grant { permission java.lang.RuntimePermission "stopThread"; permission java.net.SocketPermission "localhost:1024-", "listen"; permission java.util.PropertyPermission "java.version", "read"; permission java.util.PropertyPermission "java.vendor", "read"; permission java.util.PropertyPermission "java.vendor.url", "read"; permission java.util.PropertyPermission "java.class.version", "read"; permission java.util.PropertyPermission "os.name", "read"; permission java.util.PropertyPermission "os.version", "read"; permission java.util.PropertyPermission "os.arch", "read"; permission java.util.PropertyPermission "file.separator", "read"; permission java.util.PropertyPermission "path.separator", "read"; permission java.util.PropertyPermission "line.separator", "read"; permission java.util.PropertyPermission "java.specification.version", "read"; permission java.util.PropertyPermission "java.specification.vendor", "read"; permission java.util.PropertyPermission "java.specification.name", "read"; permission java.util.PropertyPermission "java.vm.specification.version", "read"; permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; permission java.util.PropertyPermission "java.vm.specification.name", "read"; permission java.util.PropertyPermission "java.vm.version", "read"; permission java.util.PropertyPermission "java.vm.vendor", "read"; permission java.util.PropertyPermission "java.vm.name", "read";};

Page 16: Bezpe čnosť informačných systémov

Všetky existujúce Všetky existujúce povoleniapovolenia

java.security.AllPermissionjava.security.AllPermission java.secuity.BasicPermissionjava.secuity.BasicPermission

– javax.sound.sampled.AudioPermissionjavax.sound.sampled.AudioPermission– javax.security.auth.AuthPermissionjavax.security.auth.AuthPermission– java.awt.AWTPermission java.awt.AWTPermission – javax.security.auth.kerberos.DelegationPermissionjavax.security.auth.kerberos.DelegationPermission– java.util.logging.LoggingPermissionjava.util.logging.LoggingPermission– java.net.NetPermissionjava.net.NetPermission– java.util.PropertyPermissionjava.util.PropertyPermission– java.lang.reflect.ReflectPermissionjava.lang.reflect.ReflectPermission– java.lang.RuntimePermissionjava.lang.RuntimePermission– java.security.SecurityPermissionjava.security.SecurityPermission– java.io.SerializablePermissionjava.io.SerializablePermission– java.sql.SQLPermissionjava.sql.SQLPermission– javax.net.ssl.SSLPermissionjavax.net.ssl.SSLPermission

java.io.FilePermission javax.security.auth.kerberos.ServicePermissionjava.io.FilePermission javax.security.auth.kerberos.ServicePermission java.security.UnresolvedPermissionjava.security.UnresolvedPermission javax.security.auth.PrivateCredentialPermissionjavax.security.auth.PrivateCredentialPermission java.net.SocketPermissionjava.net.SocketPermission

Page 17: Bezpe čnosť informačných systémov

Skúmanie obmedzení Skúmanie obmedzení apletuapletu Prehliadače pred spustením apletu inštalujú security manager, teda Prehliadače pred spustením apletu inštalujú security manager, teda

aplety bežia pod kontrolou tohto manažéra. Apletu nie je umožnené aplety bežia pod kontrolou tohto manažéra. Apletu nie je umožnené pristopovať k zdrojom, pokiaľ nemá explicitne definované oprávnenie.pristopovať k zdrojom, pokiaľ nemá explicitne definované oprávnenie.

Majme Majme ApletAplet, ktorý, ktorý sa sna sa snaží vykonať tieto akcie:ží vykonať tieto akcie:– Získať user.home Získať user.home – Vytvoriť, resp. otvoriť súbor „writetest“ a zapísať doň niečoVytvoriť, resp. otvoriť súbor „writetest“ a zapísať doň niečo– Otvoriť dialógové okno pre tlačOtvoriť dialógové okno pre tlač

Aplet nájdete na stránke Aplet nájdete na stránke www.intrak.skwww.intrak.sk//~bolibruch/BIS/priklad1~bolibruch/BIS/priklad1

Page 18: Bezpe čnosť informačných systémov

Skúmanie obmedzení Skúmanie obmedzení apletuapletu

Page 19: Bezpe čnosť informačných systémov

Pridanie prPridanie práv apletuáv apletu získanie user.home - aby sme mohli získať túto Property, je nutné získanie user.home - aby sme mohli získať túto Property, je nutné

pridať PropertyPermission pre náš apletpridať PropertyPermission pre náš aplet postup:postup:

– spustíme  JRE/bin/policytool.exespustíme  JRE/bin/policytool.exe– otvoríme java.policy súbor, ktorý sa nachádza otvoríme java.policy súbor, ktorý sa nachádza

v JRE/lib/securityv JRE/lib/security– klikneme na AddPolicyEntryklikneme na AddPolicyEntry

CodeBase – reprezentuje URL, pre ktorú sú určené dané CodeBase – reprezentuje URL, pre ktorú sú určené dané povoleniapovolenia

codeBase = codeBase = http://w3.intrak.tuke.sk/~bolibruch/BIS/priklad1/http://w3.intrak.tuke.sk/~bolibruch/BIS/priklad1/ Ak chceme, aby povolenia boli aj pre podadresáre, zadáme Ak chceme, aby povolenia boli aj pre podadresáre, zadáme

http://w3.intrak.tuke.sk/~bolibruch/BIS/-http://w3.intrak.tuke.sk/~bolibruch/BIS/- stlačte AddPermissionstlačte AddPermission

– vyberte PropertyPermissionvyberte PropertyPermission– do políčka target name napíšeme „user.home“ ako názov do políčka target name napíšeme „user.home“ ako názov

PropertyProperty– z políčka Actions vyberieme readz políčka Actions vyberieme read

Uložíme súbor a apletu sme umožnili získať user.homeUložíme súbor a apletu sme umožnili získať user.home

Page 20: Bezpe čnosť informačných systémov

Pridanie prPridanie práv apletuáv apletu

Page 21: Bezpe čnosť informačných systémov

Pridanie prPridanie práv apletuáv apletu

pre zápis do súboru nastavíme pre zápis do súboru nastavíme FilePermission pre súbor FilePermission pre súbor writetest a pridelíme právo writewritetest a pridelíme právo write

pre tlačenie – pre tlačenie – RuntimePermission, RuntimePermission, queuePrintJobqueuePrintJob

Page 22: Bezpe čnosť informačných systémov

Pridanie prPridanie práv apletuáv apletu

Page 23: Bezpe čnosť informačných systémov

Pridanie práv podpisom Pridanie práv podpisom kódukódu Ukážeme si použitie týchto bezpečnostných Ukážeme si použitie týchto bezpečnostných

nástrojov:nástrojov:

keytoolkeytool jarsignerjarsigner PolicytoolPolicytool

a samozrejme nástroj na vytvorenie jar a samozrejme nástroj na vytvorenie jar súboru, aby sme mohli podpísať tento jar súboru, aby sme mohli podpísať tento jar súbor.súbor.

Page 24: Bezpe čnosť informačných systémov

Postup pre odosielateľa Postup pre odosielateľa kódukódu

Page 25: Bezpe čnosť informačných systémov

Postup pre odosielateľa Postup pre odosielateľa kódukódu

Odosielateľ kódu musí vykonať tieto kroky:Odosielateľ kódu musí vykonať tieto kroky: Vytvorenie aplikácie. Vytvorenie JAR súboru pomocou nástroja

jartool. Generovanie kľúčov (ak neexistujú) pomocou

keytool –genkey príkazu. Voliteľný krok: Generovanie CSR (Certificate

signing request) pre certifikát verejného kľúča a importovať odpoveď certifikačnej autority.

Podpísanie JAR súboru pomocou jarsigner a privátneho kľúča.

Exportovanie certifikátu verejného kľúča pomocou keytool – export príkazu

Page 26: Bezpe čnosť informačných systémov

Vytvorenie aplikácieVytvorenie aplikácie

import java.io.*;

public class Count { public static void countChars(InputStream in) throws IOException { int count = 0;

while (in.read() != -1) count++;

System.out.println("Counted " + count + " chars."); }

public static void main(String[] args) throws Exception { if (args.length >= 1) countChars(new FileInputStream(args[0])); else System.err.println("Usage: Count filename"); } }

Page 27: Bezpe čnosť informačných systémov

Vytvorenie JAR súboruVytvorenie JAR súboru

JAR súbor, ktorý bude obsahovať Count.class súbor vytvoríme takto:

jar cvf Count.jar Count.class

Page 28: Bezpe čnosť informačných systémov

Generovanie kľúčovGenerovanie kľúčov

Ak ešte nemáme vhodný privátny kľúč na Ak ešte nemáme vhodný privátny kľúč na podpísanie kódu, musíme ho vygenerovať podpísanie kódu, musíme ho vygenerovať spolu s odpovedajúcim verejným kľúčom, spolu s odpovedajúcim verejným kľúčom, ktorý sa použije na overenie podpisu.ktorý sa použije na overenie podpisu.

Vytvoríme súbor pre uloženie kľúčov Vytvoríme súbor pre uloženie kľúčov s názvom BIS.s názvom BIS.

keytool -genkey -alias signFiles -keypass kpi135 -keytool -genkey -alias signFiles -keypass kpi135 -

keystore BIS -storepass ab987ckeystore BIS -storepass ab987c

Page 29: Bezpe čnosť informačných systémov

Generovanie kľúčovGenerovanie kľúčov

PrPríkaz na generovanie kľúča je -genkeyíkaz na generovanie kľúča je -genkey Časť –alias signFiles indikuje alias, ktorý sa Časť –alias signFiles indikuje alias, ktorý sa

použije na odkázanie sa na miesto použije na odkázanie sa na miesto obsahujúce kľúčeobsahujúce kľúče

Časť –keypass kpi135 špecifikuje heslo pre Časť –keypass kpi135 špecifikuje heslo pre generovaný privátny kľúč. Je vždy potrebné generovaný privátny kľúč. Je vždy potrebné pre prístup ku kľúčupre prístup ku kľúču

Časť –keystore BIS indikuje miesto, kde sa Časť –keystore BIS indikuje miesto, kde sa majú uložiť kľúčemajú uložiť kľúče

Časť –storepass ab987c určuje heslo miesta Časť –storepass ab987c určuje heslo miesta uloženia kľúčovuloženia kľúčov

Page 30: Bezpe čnosť informačných systémov

Generovanie kľúčovGenerovanie kľúčov

Page 31: Bezpe čnosť informačných systémov

Podpísanie JAR súboruPodpísanie JAR súboru

Teraz môžeme podpísať JAR súbor. Na podpísanie JAR Teraz môžeme podpísať JAR súbor. Na podpísanie JAR súboru Count.jar použijeme privátny kľúč, ku ktorému súboru Count.jar použijeme privátny kľúč, ku ktorému pristúpime pomocou aliasu signFile. pristúpime pomocou aliasu signFile. Výsledkom bude Výsledkom bude podpísaný JAR súbor sCount.jar.podpísaný JAR súbor sCount.jar.

jarsigner -keystore susanstore -signedjar jarsigner -keystore susanstore -signedjar sCount.jar Count.jar signFilessCount.jar Count.jar signFiles

Musíme zadať aj heslo uloženia (ab987c) a heslo Musíme zadať aj heslo uloženia (ab987c) a heslo privátneho kľúča (kpi135).privátneho kľúča (kpi135).

Nástroj jarsigner získa certifikát z miesta, ktorého Nástroj jarsigner získa certifikát z miesta, ktorého alias je alias je signFilessignFiles a priloží ho ku generovanému a priloží ho ku generovanému podpisu podpísaného JAR súboru.podpisu podpísaného JAR súboru.

Page 32: Bezpe čnosť informačných systémov

Export certifikátu verejného Export certifikátu verejného kľúčakľúča

Runtime systém príjemcu kódu musí autentifikovať Runtime systém príjemcu kódu musí autentifikovať podpis pri snahe aplikácie podpísanom JAR súbore podpis pri snahe aplikácie podpísanom JAR súbore o čítanie súboru.o čítanie súboru.

Aby sme autentifikovali podpis, potrebujeme mať Aby sme autentifikovali podpis, potrebujeme mať verejný kľúč, ktorý tvorí pár s privátnym kľúčom verejný kľúč, ktorý tvorí pár s privátnym kľúčom použitým na generovanie podpisu. Príjemcovi pošleme použitým na generovanie podpisu. Príjemcovi pošleme kópiu certifikátu, ktorý autentifikuje verejný kľúč. kópiu certifikátu, ktorý autentifikuje verejný kľúč. Certifikát z miesta uloženia (BIS) skopírujeme do súboru Certifikát z miesta uloženia (BIS) skopírujeme do súboru BIS.cer takto:BIS.cer takto:

keytool -export -keystore BIS -alias signFiles -file keytool -export -keystore BIS -alias signFiles -file BIS.cerBIS.cer

Vyžiada si to heslo pre prístup k miestu uloženia Vyžiada si to heslo pre prístup k miestu uloženia

(ab987c).(ab987c).

Page 33: Bezpe čnosť informačných systémov

Kroky príjemcu kóduKroky príjemcu kódu

Page 34: Bezpe čnosť informačných systémov

Kroky príjemcuKroky príjemcu

Teraz je úloha na príjemcovi, ktorý prijal Teraz je úloha na príjemcovi, ktorý prijal podpísaný JAR súbor a certifikát. My podpísaný JAR súbor a certifikát. My vykonáme tieto kroky:vykonáme tieto kroky:

Vyskúšanie obmedzeníVyskúšanie obmedzení Importovať certifikát ako dôveryhodný, Importovať certifikát ako dôveryhodný,

pomocou nástroja keytool -importpomocou nástroja keytool -import Nastaviť súbor s bezpečnostnou Nastaviť súbor s bezpečnostnou

politikou, aby mali podpísané triedy politikou, aby mali podpísané triedy právo čítať daný súborprávo čítať daný súbor

Overiť výsledok zmeny bezpečnostiOveriť výsledok zmeny bezpečnosti

Page 35: Bezpe čnosť informačných systémov

Vyskúšanie obmedzení Vyskúšanie obmedzení aplikácieaplikácie

Aplikáciu spustíme spolu so manažérom bezpečnosti.Aplikáciu spustíme spolu so manažérom bezpečnosti.

java -cp sCount.jar Count data.txtjava -cp sCount.jar Count data.txt

Tento príkaz vráti takúto výnimkuTento príkaz vráti takúto výnimku

Exception in thread "main" Exception in thread "main" java.security.AccessControlException:access denied java.security.AccessControlException:access denied (java.io.FilePermission C:\TestData\data read) at (java.io.FilePermission C:\TestData\data read) at java.security.AccessControlContext.checkPermission(Compiled java.security.AccessControlContext.checkPermission(Compiled Code) at Code) at java.security.AccessController.checkPermission(Compiled java.security.AccessController.checkPermission(Compiled Code) at Code) at java.lang.SecurityManager.checkPermission(Compiled Code) Code) at java.lang.SecurityManager.checkRead(Compiled Code) at at java.lang.SecurityManager.checkRead(Compiled Code) at java.io.FileInputStream.(Compiled Code) at java.io.FileInputStream.(Compiled Code) at Count.main(Compiled Code) Count.main(Compiled Code)

Page 36: Bezpe čnosť informačných systémov

Importovanie Importovanie certifikátucertifikátu Predtým, než povolíte podpísanému kódu čítať Predtým, než povolíte podpísanému kódu čítať

špecifikovaný súbor, potrebujeme importovať špecifikovaný súbor, potrebujeme importovať certifikát BIS ako dôveryhodný certifikát do priestoru certifikát BIS ako dôveryhodný certifikát do priestoru kľúčov.kľúčov.

Choďte do adresára, ktorý obsahuje certifikát BIS.cer Choďte do adresára, ktorý obsahuje certifikát BIS.cer a vykonjte takýto príkaz:a vykonjte takýto príkaz:

keytool -import -alias susan -file SusanJones.cer –keytool -import -alias susan -file SusanJones.cer –keystore raystorekeystore raystore

Ak si chceme overiť platnosť tohto certifikátu, zadajte:Ak si chceme overiť platnosť tohto certifikátu, zadajte:

keytool -printcert -file SusanJones.cerkeytool -printcert -file SusanJones.cer

Page 37: Bezpe čnosť informačných systémov

Nastavenie súboru Nastavenie súboru s bezpečnosťou s bezpečnosťou

Po otvorení súboru s bezpečnosťou pomocou Po otvorení súboru s bezpečnosťou pomocou nástroja policytool musíme špecifikovať tzv. nástroja policytool musíme špecifikovať tzv. keystore, miesto, kde sa nachádza kľúč. Aby keystore, miesto, kde sa nachádza kľúč. Aby sme ho definovali, vyberme príkaz Change sme ho definovali, vyberme príkaz Change Keystore z menu Edit.Keystore z menu Edit.

Miesto raystore v adresári c:/Test určíme Miesto raystore v adresári c:/Test určíme pomocou URL taktopomocou URL takto

file:/C:/Test/raystorefile:/C:/Test/raystoreTeraz pridáme práva pre takto podpísaný kód Teraz pridáme práva pre takto podpísaný kód

už známym spôsobom s tým, že do kolonky už známym spôsobom s tým, že do kolonky SignedBy uvedieme susan (alias pre SignedBy uvedieme susan (alias pre importovaný certifíkát).importovaný certifíkát).

Page 38: Bezpe čnosť informačných systémov

BezpeBezpečnosť J2EE čnosť J2EE aplikáciiaplikácii J2EE architektúraJ2EE architektúra Úvod do bezpečnostiÚvod do bezpečnosti AutentifikáciaAutentifikácia AutorizáciaAutorizácia J2EE Security patternJ2EE Security pattern

Page 39: Bezpe čnosť informačných systémov

Čo je to J2EE ?Čo je to J2EE ? Java 2 Enterprise Edition (J2EE) je viacvrstvová Java 2 Enterprise Edition (J2EE) je viacvrstvová

architektúra pre implementovanie enterprise architektúra pre implementovanie enterprise aplikácii a web aplikáciiaplikácii a web aplikácii

J2EE je platforma pre vývoj distribuovaných J2EE je platforma pre vývoj distribuovaných enterprise aplikáciienterprise aplikácii

Hlavným cieľom J2EE technológie je vytvoriť Hlavným cieľom J2EE technológie je vytvoriť jednoduchý vývojový model pre enterprise jednoduchý vývojový model pre enterprise aplikácie pomocou aplikačného modelu aplikácie pomocou aplikačného modelu založeného na komponentach. Tieto komponenty založeného na komponentach. Tieto komponenty využívajú služby poskytované kontajneromvyužívajú služby poskytované kontajnerom

Page 40: Bezpe čnosť informačných systémov

Komponenty J2EEKomponenty J2EE

Aplikačné komponentyAplikačné komponenty ApletAplet Java Servlet a JavaServer PagesJava Servlet a JavaServer Pages Enterprise JavaBeansEnterprise JavaBeans

Page 41: Bezpe čnosť informačných systémov

Štandardné služby Štandardné služby J2EEJ2EE Java Database Connectivity (JDBC)Java Database Connectivity (JDBC) Java Transaction API (JTA)Java Transaction API (JTA) Java Transaction Service (JTS)Java Transaction Service (JTS) Java Messaging Service (JMS)Java Messaging Service (JMS) Java Naming and Directory Interface (JNDI)Java Naming and Directory Interface (JNDI) Java Activation Framework (JAF)Java Activation Framework (JAF) Remote Method Invocation (RMI)Remote Method Invocation (RMI) JavaMail API (JMA)JavaMail API (JMA) Java Interface Definition Language (JavaIDL)Java Interface Definition Language (JavaIDL)

Page 42: Bezpe čnosť informačných systémov

N-vrstvová J2EE N-vrstvová J2EE architektúraarchitektúra

Page 43: Bezpe čnosť informačných systémov

Architektúra J2EEArchitektúra J2EE

Page 44: Bezpe čnosť informačných systémov

Vrstvy J2EE Vrstvy J2EE architektúryarchitektúry

Klientská vrstvaKlientská vrstva (Client tier)- HTML klient, (Client tier)- HTML klient, aplet, Java aplikáciaaplet, Java aplikácia

Web vrstvaWeb vrstva (Web tier) – Java servlets, Java (Web tier) – Java servlets, Java Server Page (umiestnenie - web kontajner)Server Page (umiestnenie - web kontajner)

Obchodná vrstva Obchodná vrstva (business tier) – Java (business tier) – Java Entity BeansEntity Beans

Niekedy sa tu pridáva tzv. Niekedy sa tu pridáva tzv. Integračná vrstvaIntegračná vrstva (Integration tier)(Integration tier)

EIS vrstvaEIS vrstva (Enterprise Information System (Enterprise Information System (EIS) tier) – databázy, zdroje...(EIS) tier) – databázy, zdroje...

Page 45: Bezpe čnosť informačných systémov

Úvod do bezpečnosti Úvod do bezpečnosti

J2EE aplikácie a Web services aplikácie sú J2EE aplikácie a Web services aplikácie sú vytvárané z komponentov, ktoré môžu byť vytvárané z komponentov, ktoré môžu byť umiestnené v rôznych kontajneroch. Tieto umiestnené v rôznych kontajneroch. Tieto komponenty sú používané na budovanie komponenty sú používané na budovanie viacvrstvovej obchodnej aplikácie. Bezpečnosť viacvrstvovej obchodnej aplikácie. Bezpečnosť komponentov zabezpečuje kontajner, ktorý ponúka komponentov zabezpečuje kontajner, ktorý ponúka dva druhy bezpečnosti :dva druhy bezpečnosti : DeklataračnáDeklataračná – vyjadruje bezpečnostnú štruktúru aplikácii, – vyjadruje bezpečnostnú štruktúru aplikácii,

obsahuje bezpečnostné role, kontrola prístupu, požiadavky obsahuje bezpečnostné role, kontrola prístupu, požiadavky autentifikácia – vo forme externej vzhľadom na aplikáciu autentifikácia – vo forme externej vzhľadom na aplikáciu (definuje sa v deployment descriptor-e komponentu.)(definuje sa v deployment descriptor-e komponentu.)

ProgramováProgramová – je vložená do aplikácie a používa sa na – je vložená do aplikácie a používa sa na rozhodovanie o bezpečnosti. Je vhodná, ak deklaračná rozhodovanie o bezpečnosti. Je vhodná, ak deklaračná bezpečnosť nie je dostačujúca na vyjadrenie bezpečnostného bezpečnosť nie je dostačujúca na vyjadrenie bezpečnostného modelu aplikácie.modelu aplikácie.

Page 46: Bezpe čnosť informačných systémov

Úvod do bezpečnostiÚvod do bezpečnosti

J2EE aplikácia sa skladá z komponentov, ktoré obsahujú chránené a J2EE aplikácia sa skladá z komponentov, ktoré obsahujú chránené a nechránené zdroje. Často je potrebné chrániť zdroje a zabezpečiť, aby k nim nechránené zdroje. Často je potrebné chrániť zdroje a zabezpečiť, aby k nim mali prístup iba autorizovaný používatelia. mali prístup iba autorizovaný používatelia. Kontrola prístupu zahrňuje dva Kontrola prístupu zahrňuje dva kroky:kroky:

– AutentifikáciaAutentifikácia – musí preukázať svoju identitu pomocou autentifikácie. – musí preukázať svoju identitu pomocou autentifikácie. Obvykle sa to vykonáva poskytnutím autentifikačných údajov (ako napr. meno a Obvykle sa to vykonáva poskytnutím autentifikačných údajov (ako napr. meno a heslo). Entita, ktokrá môže byť autentifikovaná, sa nazýva heslo). Entita, ktokrá môže byť autentifikovaná, sa nazýva principal. principal. Principal Principal môže byť používateľ ale aj program. Používatelia sa zvyčajne autentifikujú môže byť používateľ ale aj program. Používatelia sa zvyčajne autentifikujú pomocou prihlásenia.pomocou prihlásenia.

– Autorizácia - Autorizácia - Ak sa autentifikovaný principal snaží pristúpiť k zdrojom, system Ak sa autentifikovaný principal snaží pristúpiť k zdrojom, system rozhodne, či tento principal je autorizovaný tak spraviť.rozhodne, či tento principal je autorizovaný tak spraviť.

AutorizáciaAutorizácia poskytuje kontrolu prístupu k chráneným zdrojom. poskytuje kontrolu prístupu k chráneným zdrojom. Je založená Je založená na identifikácii a autentifikácii. na identifikácii a autentifikácii. IdentifikáciaIdentifikácia je process, ktorý umožní je process, ktorý umožní rozpoznanie každej entity systému a rozpoznanie každej entity systému a autentifikácia autentifikácia je process, ktorí overí je process, ktorí overí identitu užívateľa, zariadenia alebo inej entity systému.identitu užívateľa, zariadenia alebo inej entity systému.

Authorizácia a autentifikácia sa nevyžadujú k prístupu k nechráneným Authorizácia a autentifikácia sa nevyžadujú k prístupu k nechráneným zdrojom. zdrojom. Prístup k zdrojom bez autentifikácie sa označuje ako anonymný Prístup k zdrojom bez autentifikácie sa označuje ako anonymný (anonymous access, unauthenticated access).(anonymous access, unauthenticated access).

Page 47: Bezpe čnosť informačných systémov

Oblasti, používatelia, skupiny a roleOblasti, používatelia, skupiny a role

Autentifikačná služba J2EE servra zahŕňa a spolupracuje s týmito Autentifikačná služba J2EE servra zahŕňa a spolupracuje s týmito komponentami:komponentami:

Oblasť (Realm):Oblasť (Realm): Súbor užívateľov a skupín, ktoré sú kontrolované tým Súbor užívateľov a skupín, ktoré sú kontrolované tým istým autentifikačným spôsobomistým autentifikačným spôsobom

Používateľ (User):Používateľ (User): Individuálna identita (alebo aplikačný program), ktorá Individuálna identita (alebo aplikačný program), ktorá bola definovaná v Sun Java System Application Server Platform Edition bola definovaná v Sun Java System Application Server Platform Edition 8.0. Môže byť pridelený do skupiny.8.0. Môže byť pridelený do skupiny.

Skupina (Group):Skupina (Group): Množina autentifikovaných používateľov, ktorých Množina autentifikovaných používateľov, ktorých spájajú spoločné znakyspájajú spoločné znaky

Rola (Role):Rola (Role): Abstraktné meno pre povolenie prístupu k jednotlivým Abstraktné meno pre povolenie prístupu k jednotlivým množinám zdrojov v aplikácii. Rola môže byť prirovnaná ku kľúču, ktorým množinám zdrojov v aplikácii. Rola môže byť prirovnaná ku kľúču, ktorým sa otvorí zámok. Mnoho ľudí môže mať kópiu tohto kľúča a zámok sa sa otvorí zámok. Mnoho ľudí môže mať kópiu tohto kľúča a zámok sa nestará o to, kto ste, iba o to, či máte správny kľúčnestará o to, kto ste, iba o to, či máte správny kľúč

Page 48: Bezpe čnosť informačných systémov

Oblasti, používatelia, skupiny Oblasti, používatelia, skupiny a rolea role

Page 49: Bezpe čnosť informačných systémov

Login autentifikáciaLogin autentifikácia

J2EE platforma dovoľuje tvorcovi aplikačných J2EE platforma dovoľuje tvorcovi aplikačných komponentov vybrať si spôsob autentifikácie. Ak sa komponentov vybrať si spôsob autentifikácie. Ak sa snažíme pristúpiť ku chráneným Web zdrojom, Web snažíme pristúpiť ku chráneným Web zdrojom, Web kontajner aktivuje autentifikačný mechanizmus. Môžeme kontajner aktivuje autentifikačný mechanizmus. Môžeme špecifikovať tieto autentifikačné mechanizmy:špecifikovať tieto autentifikačné mechanizmy:

HTTP základná autentifikáciaHTTP základná autentifikácia Login autentifikácia založená na formuláriLogin autentifikácia založená na formulári Autentifikácia certifikátom klientaAutentifikácia certifikátom klienta Obojstranná (vzájomná) autentifikácia Obojstranná (vzájomná) autentifikácia Zjednodušená autentifikácia (digest authentification)Zjednodušená autentifikácia (digest authentification)

Page 50: Bezpe čnosť informačných systémov

Použitie HTTP základnej Použitie HTTP základnej autentifikácieautentifikácie

Vykonajú sa tieto kroky:• Klient požiada o prístup k chráneným zdrojom.• Web server vráti dialógové okno, ktoré žiada meno a heslo používateľa.• Klient zadá a odošle meno a heslo servru.• Server overí platnosť došlých údajov a ak sú správne, vráti zdroj.

Page 51: Bezpe čnosť informačných systémov

Použitie HTTP základnej Použitie HTTP základnej autentifikácieautentifikácie

Avšak http autentifikácia nie je celkom Avšak http autentifikácia nie je celkom bezpečná, pretože posiela tieto údaje cez bezpečná, pretože posiela tieto údaje cez internet ako text, ktorý je internet ako text, ktorý je kódovaný kodom kódovaný kodom uu (Unix-to-Unix), resp. base64uu (Unix-to-Unix), resp. base64, ale , ale nie nie je šifrovanýje šifrovaný. .

Tento mechanizmus by sme nakonfigurovali Tento mechanizmus by sme nakonfigurovali v súbore deployment descriptor Web v súbore deployment descriptor Web komponentu takto:komponentu takto:<web-app><web-app>

<login-config><login-config><auth-method>BASIC|DIGEST</auth-method><auth-method>BASIC|DIGEST</auth-method>

<realm-name>jpets</realm-<realm-name>jpets</realm-name>name>

</login-config></login-config></web-app> </web-app>

Page 52: Bezpe čnosť informačných systémov

Použitie autentifikácie založenej na Použitie autentifikácie založenej na formuláriformulári

Vykonajú sa tieto kroky:

• Klient požiada o prístup k chráneným zdrojom.• Ak nie je autentifikovaný, server presmeruje klienta ja stránku pre prihlásenie• Klient vyplní a odošle pirhlasovací formulár na server.• Ak je prihlásenie úspešné, klient bude presmerovaný na požadovaný zdroj, inak na chybovú stránku

Page 53: Bezpe čnosť informačných systémov

Použitie autentifikácie založenej na Použitie autentifikácie založenej na formuláriformulári

Ani táto autentifikácia nie je celkom Ani táto autentifikácia nie je celkom bezpečná, ak sa informácie posielajú ako text bezpečná, ak sa informácie posielajú ako text a kým sa nepoužije SSL.a kým sa nepoužije SSL.

Konfigurácia:Konfigurácia:

<web-app><web-app><login-config><login-config>

<auth-method>FORM</auth-method><auth-method>FORM</auth-method><form-login-config><form-login-config>

<form-login-page>login.jsp</form-login-<form-login-page>login.jsp</form-login-page>page> <form-error-page>error.jsp</<form-error-page>error.jsp</form-error-page>form-error-page> </form-login-config></form-login-config>

</login-config></login-config>

</web-app></web-app>

Page 54: Bezpe čnosť informačných systémov

Použitie autentifikácie certifikátom Použitie autentifikácie certifikátom klientaklienta

Táto forma autentifikácie predstavuje Táto forma autentifikácie predstavuje bezpečnejšiu metódu, než dve bezpečnejšiu metódu, než dve predchádzajúce. Server a klient sa predchádzajúce. Server a klient sa autentifikujú pomocou verejných kľúčov autentifikujú pomocou verejných kľúčov certifikátu. Secure Socket Layer (SSL) certifikátu. Secure Socket Layer (SSL) poskytuje šifrovanie dát, autentifikáciu poskytuje šifrovanie dát, autentifikáciu servra, integritu správ voliteľnú servra, integritu správ voliteľnú autentifikáciu klienta pre TCP/IP spojenieautentifikáciu klienta pre TCP/IP spojenie

Page 55: Bezpe čnosť informačných systémov

Použitie obojstrannej autentifikáciePoužitie obojstrannej autentifikácie

Pri vzájomnej autentifikácii sa Pri vzájomnej autentifikácii sa autentifikujú navzájom server a autentifikujú navzájom server a aj klient. Sú dva typy tejto aj klient. Sú dva typy tejto autentifikácie:autentifikácie:

Založená na certifikátochZaložená na certifikátoch

Založená na mene a hesleZaložená na mene a hesle

Page 56: Bezpe čnosť informačných systémov

Autentifikácia založená na Autentifikácia založená na certifikátochcertifikátoch

Page 57: Bezpe čnosť informačných systémov

Autentifikácia založená na Autentifikácia založená na certifikátochcertifikátoch

Vyskytnú sa tieto kroky:Vyskytnú sa tieto kroky: Klient požiadá o prístup k chráneným Klient požiadá o prístup k chráneným

zdrojom.zdrojom. Web server doručí svoj certifikát Web server doručí svoj certifikát

klientoviklientovi Klient overí certifikát zo servraKlient overí certifikát zo servra Ak je správny, klient posiela certifikát Ak je správny, klient posiela certifikát

na serverna server Server kontroluje údaje klientaServer kontroluje údaje klienta Ak sú správne, server poskytne prístup Ak sú správne, server poskytne prístup

ku chráneným zdrojomku chráneným zdrojom

Page 58: Bezpe čnosť informačných systémov

Autentifikácia založená na Autentifikácia založená na mene a heslemene a hesle

Page 59: Bezpe čnosť informačných systémov

Autentifikácia založená na Autentifikácia založená na mene a heslemene a hesle

Kroky:Kroky: Klient požiada o prístup k chráneným zdrojom.Klient požiada o prístup k chráneným zdrojom. Web server doručí svoj certifikát klientovi.Web server doručí svoj certifikát klientovi. Klient overí došlý certifikát.Klient overí došlý certifikát. Ak je správny, odošle na server meno a heslo, Ak je správny, odošle na server meno a heslo,

ktorý overí ich platnosťktorý overí ich platnosť Ak overenie úspešne prebehlo, server zaručí Ak overenie úspešne prebehlo, server zaručí

prístup ku chráneným zdrojom.prístup ku chráneným zdrojom.

<web-app><web-app><login-config><login-config><auth-method>CLIENT-CERT</auth-method><auth-method>CLIENT-CERT</auth-method></login-config></login-config>

</web-app> </web-app>

Page 60: Bezpe čnosť informačných systémov

AutorizáciaAutorizácia

Autorizácia J2EE platformy je založená na koncepte Autorizácia J2EE platformy je založená na koncepte bezpečnostných rol. Bezpečnostná rola (bezpečnostných rol. Bezpečnostná rola (security security role) role) je logická skupina používateľov. Každá je logická skupina používateľov. Každá bezpečnostná rola je mapovaná na principal bezpečnostná rola je mapovaná na principal v prostredí umiestnenia. Bezpečnostná rola môže v prostredí umiestnenia. Bezpečnostná rola môže byť použitá s deklarovanou bezpečnosťou alebo byť použitá s deklarovanou bezpečnosťou alebo programovanou bezpečnosťou.programovanou bezpečnosťou.

Tento mechanizmus môže kontrolovať prístup na Tento mechanizmus môže kontrolovať prístup na základe URL alebo na základe podpisu volajúceho základe URL alebo na základe podpisu volajúceho kódu.kódu.

Volaný komponent má k dispozícii tzv. credential, Volaný komponent má k dispozícii tzv. credential, ktorý obsahuje informácie popisujúce volajúceho. ktorý obsahuje informácie popisujúce volajúceho. Tieto atribúty identifikujú volajúceho v danom Tieto atribúty identifikujú volajúceho v danom kontexte jedinečne a nazývajú sa bezpečnostné kontexte jedinečne a nazývajú sa bezpečnostné atribúty. atribúty.

Page 61: Bezpe čnosť informačných systémov

Deklaračná autorizáciaDeklaračná autorizácia

Pri kontrole prístupu založenej na kontajneri je táto Pri kontrole prístupu založenej na kontajneri je táto kontrola zabezpečená pomocou nástrojov na kontrola zabezpečená pomocou nástrojov na umiestnenie, ktoré mapujú aplikačný model povolení umiestnenie, ktoré mapujú aplikačný model povolení do bezpečnostných pravidiel, ktoré sa umiestnia do do bezpečnostných pravidiel, ktoré sa umiestnia do súboru deployment descriptor. súboru deployment descriptor.

Tento súbor definuje logické práva, Tento súbor definuje logické práva, security rolessecurity roles, , a asociuje ich a asociuje ich s s komponentamikomponentami

Deklarácia rolíDeklarácia rolí<security-role><security-role>

<description>Your description<description>Your description < </description/description>>

<role-name><role-name>Payroll-Chief<Payroll-Chief</role-name/role-name>>

</security-role></security-role>

Page 62: Bezpe čnosť informačných systémov

Deklarácia metódDeklarácia metód

Pri deklaračná bezpečnosti môžeme Pri deklaračná bezpečnosti môžeme definovať kontrolu prístupu k EJB metódam definovať kontrolu prístupu k EJB metódam špecifikovaním elementu method-permission špecifikovaním elementu method-permission v jeho deployment descriptore. v jeho deployment descriptore.

Element method-permission obsahuje Element method-permission obsahuje zoznam metód, ktoré môže volať daná zoznam metód, ktoré môže volať daná bezpečnostná rola. bezpečnostná rola.

Ak principal v danej bezpečnostnej role má Ak principal v danej bezpečnostnej role má umožnený prístup k metóde, potom môže umožnený prístup k metóde, potom môže vykonať túto metódu.vykonať túto metódu.

Page 63: Bezpe čnosť informačných systémov

Deklarácia metódDeklarácia metód

<<method-permissionmethod-permission>><<role-namerole-name>admin</role-name>>admin</role-name>

<<methodmethod>><<ejb-nameejb-name>TheOrder</ejb-name>>TheOrder</ejb-name>

<<method-namemethod-name>*</method->*</method-name>name> </</methodmethod>>

</</method-permissionmethod-permission>><method-permission><method-permission>

<role-name>customer</role-name><role-name>customer</role-name><method><method>

<<ejb-name>TheOrder</ejb-name> ejb-name>TheOrder</ejb-name>

<method-name>getDetails</method-name> <method-name>getDetails</method-name> </method></method> <method><method>......

</method-permission</method-permission

Page 64: Bezpe čnosť informačných systémov

Programovaná Programovaná bezpečnosťbezpečnosť

Pri programovanej bezpečnosti sa kontrola prístupu riadi Pri programovanej bezpečnosti sa kontrola prístupu riadi pomocou metód EJBContext.isCallerInRole alebo pomocou metód EJBContext.isCallerInRole alebo HttpServletRequest.isRemoteUserInRole.HttpServletRequest.isRemoteUserInRole.

Použitie metódy getCallerPrincipal()Použitie metódy getCallerPrincipal() Použitie metódy Použitie metódy getCallerPrincipal()getCallerPrincipal()umožňuje hlavne umožňuje hlavne

beanu verifikovať principalbeanu verifikovať principalPrincipal p = ctx.Principal p = ctx.getCallerPrincipalgetCallerPrincipal();();iif (p.getName().equalsIgnoreCase("payroll-admin"))f (p.getName().equalsIgnoreCase("payroll-admin"))// return the row for "payroll-admin"// return the row for "payroll-admin"else // unrecognized nameelse // unrecognized namethrow new MyApplicationException(p.getName() + " throw new MyApplicationException(p.getName() + "

invalid");invalid"); Bean vie získať indentitu volajúce pomocou Bean vie získať indentitu volajúce pomocou

EJBContext. „Payroll-Admin“ je principal.EJBContext. „Payroll-Admin“ je principal.

Page 65: Bezpe čnosť informačných systémov

Použitie metódy isCallerInRole()Použitie metódy isCallerInRole()

Táto metóda umožňuje rozpoznanie role Táto metóda umožňuje rozpoznanie role bez toho, aby bean sa pokúsil bez toho, aby bean sa pokúsil identifikovať principal.identifikovať principal.if (ctx.isCallerInRole("payroll-admin"))if (ctx.isCallerInRole("payroll-admin"))

// then allow editing of payroll info// then allow editing of payroll info else // you're not an administratorelse // you're not an administrator // allow viewing of data only// allow viewing of data only

Bean môže teda overiť, či je caller Bean môže teda overiť, či je caller členom nejakej role. „Payroll-Admin“ je členom nejakej role. „Payroll-Admin“ je deklarovaný ako referencia.deklarovaný ako referencia.

Page 66: Bezpe čnosť informačných systémov

Java PatternsJava Patterns

PatternPattern je pravidlo, ktoré vyjadruje vzťah je pravidlo, ktoré vyjadruje vzťah medzi istým kontextom, problémom medzi istým kontextom, problémom a riešením. Jednoducho povedané, a riešením. Jednoducho povedané, patterny umožňujú nájdenie známeho patterny umožňujú nájdenie známeho opakujúceho sa problému a jeho riešenia.opakujúceho sa problému a jeho riešenia.

Security PatternsSecurity Patterns poskytujú overené poskytujú overené techniky pre riešené známych problémov techniky pre riešené známych problémov pri programovaní. pri programovaní.

Tieto šablóny pracujú spoločne Tieto šablóny pracujú spoločne a vytvárajú množinu najlepších praktík, a vytvárajú množinu najlepších praktík, ktorých hlavným cieľom je podporiť ktorých hlavným cieľom je podporiť bezpečnostnú politiku organizácie.bezpečnostnú politiku organizácie.

Page 67: Bezpe čnosť informačných systémov

Výhody použitia Výhody použitia patternovpatternov Môžu byť použité a implementované Môžu byť použité a implementované

kedykoľvek na zlepšenie návrhu systémukedykoľvek na zlepšenie návrhu systému Málo skúsený programátor môže čerpať zo Málo skúsený programátor môže čerpať zo

skúsenosti omnoho skusenejších skúsenosti omnoho skusenejších programátorov a návrhárovprogramátorov a návrhárov

Použitie overených riešeníPoužitie overených riešení Poskytujú všeobecný jazyk pre návrh, Poskytujú všeobecný jazyk pre návrh,

testovanie a vývoj testovanie a vývoj Môžu byť ľahko kategorizované, vyhľadané Môžu byť ľahko kategorizované, vyhľadané

a použitéa použité Poskytujú znovupoužiteľné, opakovateľné Poskytujú znovupoužiteľné, opakovateľné

a zdokumentované bezpečnostné praktikya zdokumentované bezpečnostné praktiky

Page 68: Bezpe čnosť informačných systémov

KatalKatalóg šablónóg šablón

Page 69: Bezpe čnosť informačných systémov

Security patternSecurity pattern

Existuje niekoľko bezpečnostných Existuje niekoľko bezpečnostných vzorov pre tvorbu J2EE aplikácie:vzorov pre tvorbu J2EE aplikácie:

Single Access Point PatternSingle Access Point Pattern Check Point PatternCheck Point Pattern Role PatternRole Pattern

Page 70: Bezpe čnosť informačných systémov

Single Access Point Single Access Point PatternPattern

Táto šablóna popisuje system iba s jedným bodom Táto šablóna popisuje system iba s jedným bodom vstupu, vstupom, ktorý je spoločný pre všetky vstupu, vstupom, ktorý je spoločný pre všetky prichádzajúce žiadosti a je jedinou bránou prístupu do prichádzajúce žiadosti a je jedinou bránou prístupu do systému. Každý používateľ musí prejsť základnou systému. Každý používateľ musí prejsť základnou autentifikáciou. Ak by prišla neutorizovaná žiadosť autentifikáciou. Ak by prišla neutorizovaná žiadosť o chránený zdroj, táto žiadosť môže byť automaticky o chránený zdroj, táto žiadosť môže byť automaticky presmerovaná na prístupový bod kvôli overeniu.presmerovaná na prístupový bod kvôli overeniu.

Je zvyčajne reprezentovaná jednou žiadosťou o login Je zvyčajne reprezentovaná jednou žiadosťou o login do siete organizácie alebo na individuálny server. do siete organizácie alebo na individuálny server. Iným príkladom môže byť aplikácia poskytujúca jednu Iným príkladom môže byť aplikácia poskytujúca jednu login stránku namiesto rôznych pre každú službu.login stránku namiesto rôznych pre každú službu.

Implementácia je jednoduchá – deklaračne sa vo web Implementácia je jednoduchá – deklaračne sa vo web vrstve špecifikuje, ktoré web zdroje ( URL, http vrstve špecifikuje, ktoré web zdroje ( URL, http metódy...) majú chrániť. Ak sa anonymný používateľ metódy...) majú chrániť. Ak sa anonymný používateľ snaží pristúpiť k týmto zdrojom, web kontajner si snaží pristúpiť k týmto zdrojom, web kontajner si vyžiada autentifikáciu.vyžiada autentifikáciu.

Page 71: Bezpe čnosť informačných systémov

Check Point PatternCheck Point Pattern

Táto šablóna centralizuje a vynucuje Táto šablóna centralizuje a vynucuje autentifikáciu a autorizáciu. Úlohou tohto autentifikáciu a autorizáciu. Úlohou tohto mechanizmu je rozhodnúť, či má používateľ mechanizmu je rozhodnúť, či má používateľ dostatočné privilégia na prístup k zdrojom. Tým, dostatočné privilégia na prístup k zdrojom. Tým, že sa centralizuje táto logika, sa zabezpečí že sa centralizuje táto logika, sa zabezpečí jednoduchšia správa akplikačných práv jednoduchšia správa akplikačných práv a obchodných pravidiel. Môže byť použitá napr a obchodných pravidiel. Môže byť použitá napr pri systéme s viacerými bezpečnostnými pri systéme s viacerými bezpečnostnými úrovniami – Check Point garantuje prístup ku úrovniami – Check Point garantuje prístup ku všetkým zdrojom na danej úrovni.všetkým zdrojom na danej úrovni.

Väčšina tejto šablóny môže byť riešená pomocou Väčšina tejto šablóny môže byť riešená pomocou Java Authentication and Authorization Service Java Authentication and Authorization Service (JAAS).(JAAS).

Page 72: Bezpe čnosť informačných systémov

Role PatternRole Pattern

Táto šablóna popisuje priradenie k jednej alebo Táto šablóna popisuje priradenie k jednej alebo viacerým rolám, kde každá rola má nejaké viacerým rolám, kde každá rola má nejaké pravidlá (nie používateľ). Tento prístup má dve pravidlá (nie používateľ). Tento prístup má dve výhody:výhody:

ak sa zmení rola alebo priradenia používateľa ak sa zmení rola alebo priradenia používateľa k roliam, nie je potrebná zmena základných k roliam, nie je potrebná zmena základných objektov pre kontrolu prístupuobjektov pre kontrolu prístupu

povolenia sa riadia a prideľujú intuitívne, pretože povolenia sa riadia a prideľujú intuitívne, pretože rola reprezentuje časť organizačnej štruktúryrola reprezentuje časť organizačnej štruktúry

Implementácia v J2EE platforme je pomocou Implementácia v J2EE platforme je pomocou deklaračného bezpečnostného modelu deklaračného bezpečnostného modelu definovaním rolí v súboroch ejb-jar.xml definovaním rolí v súboroch ejb-jar.xml a web.xml. a web.xml.

Page 73: Bezpe čnosť informačných systémov

Zoznam literatúryZoznam literatúry

java.sun.com/security/java.sun.com/security/ Enterprise JavaBeans Programing, Sun Enterprise JavaBeans Programing, Sun

Microsystems, 2000Microsystems, 2000 Stephanie Bodoff, Dale Green, Eric Jendrock, Stephanie Bodoff, Dale Green, Eric Jendrock,

Monica Pawlan, Beth Stearns: The J2EE Monica Pawlan, Beth Stearns: The J2EE TutorialTutorial

Deepak Alur, John Crupi, Dan Malks Deepak Alur, John Crupi, Dan Malks : Core : Core J2EE Patterns – Best Practices and Design J2EE Patterns – Best Practices and Design StrategiesStrategies

Craig A. Berry, John Carnell, Matjaz B. Juric, Craig A. Berry, John Carnell, Matjaz B. Juric, Nadia Nashi: J2EE Design Patterns Applied, Nadia Nashi: J2EE Design Patterns Applied, Wrox PressWrox Press