Comguard: Zabezpečení si nejdříve vyzkoušejte

10. 2. 2013

Sdílet

Autor: © Scanrail - Fotolia.com
Nevíte si rady s tím, jaký typ zabezpečovacích řešení je pro vaše potřeby vhodný? Nebo netušíte, co přesně nové bezpečnostní technologie poskytují? Využijte služeb kompetenčního centra. Jedno z největších ve střední Evropě, zaměřené na řešení různých dodavatelů, provozuje česká firma Comguard.

7Finanční tlaky dnešní doby jsou náročné na správné rozhodnutí. Jak ale najít vhodné bezpečnostní řešení splňující co nejpřesněji firemní požadavky? Jako velmi účinné se ukazuje využití služeb kompetenčních center. Ta poskytují komplexní prostředí pro testování navržených řešení či demonstraci možností jednotlivých produktů.

Služby s možností vyzkoušet si více nezávislých řešení a vybrat vhodnou variantu šitou na míru konkrétní firmy ale dosud nebyly v tuzemských podmínkách příliš časté. A to se rozhodla změnit společnost Comguard, která jedno takové centrum zprovoznila v Brně.

Co bylo na začátku?
Podle Karla Klumpnera, obchodního ředitele společnosti Comguard, každé nasazení nového bezpečnostního řešení pro oblast firemního IT s sebou přináší větší či menší riziko spojené se správnou investiční volbou, vhodným rozhodováním podle provozních a výrobních potřeb firmy a v neposlední řadě také podle jednoduchého, funkčního a srozumitelného ovládání. „Naším cílem bylo zájemcům ukázat bezpečnostní řešení v podmínkách blízkých reálnému provozu, a uživatelům tak usnadnit výběr správného distribuovaného řešení na základě jednotlivých požadavků,“ říká Klumpner.

„Centrum se vyplatí navštívit především proto, že se nezaměřuje pouze na jednoho výrobce bezpečnostních řešení. Naopak nabízíme možnost otestovat více zařízení se stejnou nebo podobnou funkcionalitou a po celkovém zhodnocení zvolit to, které nejlépe vyhovuje. Jako podpůrné technologie pro provoz Kompetenčního centra byly zvoleny produkty předních výrobců – chceme se co nejvíce přiblížit reálným podmínkám uživatelů,“ vysvětluje Klumpner.

Příklad z praxe
Kompetenční centrum řešilo problém zabezpečení lékařských dat nemocnice se stovkami zaměstnanců. Ta požadovala, aby byly chráněny především slovní popisy a fotodokumentace s diagnózami pacientů a aby úložiště dat bylo šifrované a centralizované s monitoringem pohybu, blokací a upozorněním v případě, že dojde k pokusu o kompromitaci.

Bylo navrženo řešení skládající se ze softwarových komponent instalovaných na spravovaná zařízení a doplněním infrastruktury o další prvky sledující data pro pokrytí dalších rizik, např. neznámý cizí systém v síti. Důraz byl přitom kladen na jednoduchost a centralizovanost správy zabezpečení.

„Síť byla doplněna o hardwarové zařízení DLP v kombinaci s e-mailovou a webovou bránou, které umožní sledovat „data v pohybu“, tedy vyhledat citlivá data na sdílených úložištích, databázích, portálech apod. i při komunikaci. Tak se pokryjí záměrné útoky na citlivá data stejně jako omyly typu odeslání diagnózy pacienta na špatně zadaný e-mail,“ podotýká Klumpner.

Cyber25


Na základě tohoto návrhu se pak v Kompetenčním centru připraví reálná simulace, kdy je vytvořeno diskové úložiště s daty odpovídajícími jak svou strukturou, tak typem, datům zdravotnického zařízení. Následně je provedeno testování všech situací, které mohou při manipulaci s daty vzniknout.


Takto připravené řešení si může zájemce vyzkoušet přímo v testovacím labu i vzdáleně prostřednictvím přístupu SSL VPN. Pro konzultace a prezentace řešení může být navíc využito videokonferenčního řešení.

'; document.getElementById('preroll-iframe').onload = function () { setupIframe(); } prerollContainer = document.getElementsByClassName('preroll-container-iframe')[0]; } function setupIframe() { prerollDocument = document.getElementById('preroll-iframe').contentWindow.document; let el = prerollDocument.createElement('style'); prerollDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:20px;right:25px}"; videoContent = prerollDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('PREROLL sound allowed'); // setUpIMA(true); videoContent.volume = 1; videoContent.muted = false; setUpIMA(); }).catch(function () { console.log('PREROLL sound forbidden'); videoContent.volume = 0; videoContent.muted = true; setUpIMA(); }); } } function setupDimensions() { prerollWidth = Math.min(iinfoPrerollPosition.offsetWidth, 480); prerollHeight = Math.min(iinfoPrerollPosition.offsetHeight, 320); } function setUpIMA() { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Preroll advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = prerollWidth; // adsRequest.linearAdSlotHeight = prerollHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. prerollDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( prerollDocument.getElementById('adContainer'), videoContent); } function unmutePrerollAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); prerollDocument.getElementById('adMuteBtn').innerHTML = ''; } } function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(prerollWidth, prerollHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } function onAdEvent(adEvent) { const ad = adEvent.getAd(); console.log('Preroll event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: if (!ad.isLinear()) { videoContent.play(); } prerollDocument.getElementById('adContainer').style.width = '100%'; prerollDocument.getElementById('adContainer').style.maxWidth = '640px'; prerollDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); if (ad.isLinear()) { intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } prerollDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (prerollLastError === 303) { playYtVideo(); } break; case google.ima.AdEvent.Type.COMPLETE: if (ad.isLinear()) { clearInterval(intervalTimer); } playYtVideo(); break; } } function onAdError(adErrorEvent) { console.log(adErrorEvent.getError()); prerollLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { playYtVideo(); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoPrerollPosition.remove(); playPrerollAd(); } else { return false; } adVolume = 1; return true; } function onContentPauseRequested() { videoContent.pause(); } function onContentResumeRequested() { videoContent.play(); } function onActiveView() { if (prerollContainer) { const containerOffset = prerollContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (prerollPaused) { adsManager.resume(); prerollPaused = false; } return true; } else { if (!prerollPaused) { adsManager.pause(); prerollPaused = true; } } } return false; } function playYtVideo() { iinfoPrerollPosition.remove(); youtubeIframe.style.display = 'block'; youtubeIframe.src += '&autoplay=1&mute=1'; } }