KSEM WETI PG May 11, 2015
Co to jest chmura obliczeniowa? obliczeniowa - pojęcie abstrakcyjne w rozproszonym przetwarzaniu danych Cechy: Współdzielenie zasobów (Multitenancy) Wysoka skalowalność (Massive scalability) - skalowanie działania dla wielu systemów oraz wykorzystania zasobów Elastyczność - użytkownik może zwiększać lub zmniejszać swoje zasoby obliczeniowe na żądanie Pay as you go - użytkownik płaci za zasoby (i czas) rzeczywiście wykorzystane Samozaopatrzenie (Self-provisioning) w zasoby - użytkownik sam decyduje o zasobach, których potrzebuje Od kolektywnej mocy połączonych komputerów odróżnia ją fakt, że istnieje nie po to, by rozwiązać problem, lecz po to, by zaspokoić potrzeby użytkowników, którzy np. chcą mieć dostęp do swoich danych i narzędzi z dowolnego miejsca na świecie.
Outline
Framework SPI SPI - akronim trzech podstawowych rodzajów usług w chmurze obliczeniowej: software-as-a-service (SaaS), platform-as-a-service (PaaS), infrastructure-as-a-service (IaaS). źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather Publisher, O Reilly Media, Inc. Release Date: September 2009
Software-As-a-Service Model SaaS: użytkownik wypożycza oprogramowanie w ramach subskrypcji lub płacąc za każde użycie (operational expense, OpEx). w niektórych przypadkach usługi są bezpłatne użytkownik korzysta z aplikacji za pomocą każdego urządzenia, które potrafi się autoryzować (posiada przeglądarkę) Tradycyjne podejście: instalacja oprogramowania na własnej maszynie i zapłata za licencję (capital expense, CapEx) opłata za support użytkownik sam dba o kompatybilność systemu operacyjnego i zgodność z warunkami licencji
Platform-As-a-Service Model PaaS: użytkownik (programista) korzysta ze środowiska wytwarzania aplikacji w chmurze Zalety: narzędzia standardy kanały dystrybucji i płatności szybkie rozpowszechnianie produktów, niski koszt wytwarzania aplikacji i wejścia na rynek. programista buduje aplikacje bez instalowania narzędzi na własnych maszynach programista nie musi być ekspertem! PaaS to odmiana SaaS - wypożyczaną usługą jest środowisko wytwarzania aplikacji (a w nim predefiniowane bloki kodu, z których użytkownik składa własne aplikacje)
Platform-As-a-Service PaaS dostarcza: serwer aplikacji bazę danych wirtualną maszynę miejsce przechowywania danych PaaS narzuca: logikę biznesową framework do tworzenia aplikacji
Infrastructure-As-a-Service Model IaaS: użytkownik płaci za ilość mocy obliczeniowej, miejsce na dysku i inne rzeczywiście zużywane zasoby użytkownik nie musi dbać o szczegóły infrastruktury: lokalizację, zarządzanie danymi, skalowanie, bezpieczeństwo, backup. Cechy modelu Iaas: skalowalność: wykorzystywane zasoby mogą się zmieniać w zależności od bieżących wymagań, niemal w czasie rzeczywistym pay-as-you-go: użytkownik kupuje dokładnie taką ilość zasobów infrastruktury, jaką aktualnie potrzebuje best-of-breed: dostęp do najlepszych technologii za ułamek kosztów
Framework SPI źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather Publisher, O Reilly Media, Inc. Release Date: September 2009
- zalety Niski koszt inwestycji i utrzymania produktu (również - zakończenia produkcji) Niski koszt złej estymacji zasobów wymaganych w fazie tworzenia, testowania i produkcji Otwarte standardy. Open source = oprogramowanie podlegające licencji publicznej, pozwalającej użytkownikowi zarówno na użycie jak i na modyfikację oprogramowania. Konsekwencją jest ciągły rozwój rozwiązań open source. Stabilność. Właściciele chmur inwestują duże ilości ludzkiej pracy i pieniędzy w rozwój wysoce stabilnego środowiska. Użytkownik może ufać, że chmura ma: ograniczoną liczbę błędów, wysoką odporność dzięki klastrom, zdolność ciągłego rozwoju rozwiązań zapewniających stabilność.
Kto korzysta z chmur obliczeniowych? Użytkownicy indywidualni przechowywanie poczty, zdjęć, muzyki przechowywanie informacji (personalnych) w sieciach społecznościowych mapy, nawigacja GPS tworzenie stron www współpraca (np. Google Sites) Użytkownicy biznesowi rozwój aplikacji biznesowych rozwój stron internetowych (reklama) sprzedaż poprzez dedykowane serwisy (ebay) reklamy w wyszukiwarkach internetowych zarządzanie finansami w bankowości internetowej narzędzia biurowe
Kto korzysta z chmur obliczeniowych? Start-up y, małe przedsiębiorstwa outsourcing insfrastruktury IT, kluczowej dla wprowadzenia produktu na rynek skalowalność w wielu przypadkach - pionierskie wykorzystanie chmur obliczeniowych Duże przedsiębiorstwa/korporacje narzędzia wspierania produktywności pracowników (wyszukiwarki wiedzy, travel service ) narzędzia wspierania działów HR i oceny pracowników narzędzia wspierania kluczowych działów: sprzedaży, zarządzania dokumentacją, pozyskiwania surowców, logistyki (dane wrażliwe!)
Własność i kontrola w chmurze źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather Publisher, O Reilly Media, Inc. Release Date: September 2009
Przykład - Google Google App Engine - platform-as-a-service (PaaS) budowa i hosting aplikacji internetowych w infrastrukturze Google obsługiwane języki programowania: Python i Java. usługa jest darmowa, dopóki aplikacja nie korzysta z zasobów Google powyżej limitu (objętość danych, przepływność, cykle CPU) Google Apps - software-as-a-service (SaaS) korzystanie z aplikacji biurowych: Gmail, Google Calendar, Talk, Docs i inne. wersja standardowa jest darmowa (jak konto Gmail)
Google - przypadki użycia Use case: Komunikacja opis: firmowa poczta i kalendarz bez tworzenia infrastruktury wewnątrz firmy usługa: Gmail, Google Calendar Use case: Bezpieczna poczta opis: zabezpieczenie instniejącego systemu pocztowego bez tworzenia infrastruktury wewnątrz firmy; filtracja spamu, wirusów i innych zagrożeń usługa: Google Email Security Use case: przechowywanie poczty i legal discovery for existing email systems Organizations can leverage Google Apps for managing email retention with a searchable archive so that they can locate email quickly in the event of legal discovery without the investment and maintenance of hardware and software. usługa: Google Email Archiving and Discovery
Google - przypadki użycia Use case: Współpraca opis: wspólny dostęp do narzędzi i dokumentów biurowych bez instalacji dodatkowego oprogramowania na lokalnych maszynach lub serwerach usługa: Google Docs, Google Drive, Google Sites Use case: Tworzenie aplikacji opis: tworzenie aplikacji w języku Java lub Python bez inwestowania w infrastrukturę (programową i sprzętową) na maszynach lokalnych usługa: Google App Engine
Outline
- architektura zorientowana na usługi (Service-Oriented Architecture) koncepcja tworzenia systemów informatycznych, w której główny nacisk stawia się na definiowanie usług, które spełnią wymagania użytkownika. obejmuje zestaw metod organizacyjnych i technicznych mający na celu powiązanie biznesowej strony organizacji z jej zasobami informatycznymi. logika biznesowa jest rozbita pomiędzy wiele rozproszonych komponentów usługowych, koordynowanych przez centralną aplikację sterującą. komponenty usługowe są implementowane i udostępniane przez niezależne podmioty, nazywane dostawcami usług (Service Providers). Łączność pomiędzy aplikacją sterującą a komponentami usługowymi odbywa się za pośrednictwem sieci Internet.
Web Services Usługa internetowa (ang. web service) Realizowana programistycznie usługa świadczona poprzez sieć telekomunikacyjną, a w tym sieć komputerową, w szczególności przez Internet. Składnik oprogramowania, niezależny od platformy sprzętowej oraz implementacji, dostarczający określonej funkcjonalności. Komunikacja pomiędzy aplikacjami w środowiskach heterogenicznych i rozproszonych. Web serwisy oferują - w różnym stopniu - ujednolicenie komunikacji bez względu na zastosowane w aplikacji technologie. Dane przekazywane są zazwyczaj za pomocą protokołu HTTP i z wykorzystaniem XML.
Web Services Sposby realizacji: zdefiniowana za pomocą języka opisu usług (WSDL). Dokument WSDL (Web Service Description Language) zawiera wszelkie informacje niezbędne do wykorzystania danej usługi webowej, w tym listę dostępnych operacji, ich parametry oraz stosowane typy danych opublikowana i wyszukana w rejestrze usług za pomocą standardowego mechanizmu, np. UDDI wywołana zdalnie przez zdefiniowany interfejs jest częścią innych usług internetowych
Web Services źródło: http://www.cs.put.poznan.pl/mzakrzewicz/pubs/ploug06ws.pdf
P P (Simple Object Access Protocol) protokół komunikacyjny, wykorzystujący XML do kodowania wywołań i (najczęściej) protokołów HTTP do ich przenoszenia (metoda POST). Zorientowany na obiekty. Zapytanie klienta źródło: http://www.cs.put.poznan.pl/mzakrzewicz/pubs/ploug06ws.pdf Odpowiedź źródło: http://www.cs.put.poznan.pl/mzakrzewicz/pubs/ploug06ws.pdf
REST REST (REpresentational State Transfer) - styl architektury oprogramowania; zbiór zaleceń i najlepszych praktyk do tworzenia skalowalnych usług sieciowych. Alternatywa dla P Przedstawiony w roku 2000 przez jednego z twórców protokołu HTTP - Roya Fieldinga REST = zasób (obiekt/resource, URL) + reprezentacja (URI - Uniform Resource Identifier) Każdy zasób (lub dowolny podzbiór) może znajdować się na innym hoście Zasób może być reprezentowany jako wynik typu XML, JSON, Image i inne. RESTful Webservices (RESTful web API) - usługi sieciowe zaimplementowane na bazie protokołu HTTP i głównych zasad wzorca REST. Metody HTTP: GET, POST, PUT, DELETE
REST vs P źrodło: http://www.pwc.com/us/en/technologyforecast/2012/issue2/features/feature-consumerization-apis.jhtml
Outline
Elementy chmury Urządzenia dostępowe - domowe PC, firmowe PC, urządzenia przenośne, systemy wbudowane (w tym sprzęt RTV/AGD) Przeglądarki internetowe - dostęp do informacji i aplikacji Szybkie łącze, szerokopasmowy dostęp do internetu Centra danych i farmy serwerów (data centers and server farms) Urządzenia przechowujące dane (storage devices) - DASD (direct access storage device) zostały zastąpione SAN (storage area networks). Oprogramowanie SAN (DASD) zarządza wieloma urządzeniami do przechowywania danych i udostępnia potrzebną ilość miejsca na żądanie. Techniki wirtualizacji - abstrakcja zasobów obliczeniowych (CPU, dysk, pamięć, sieć, baza danych, stos aplikacji); writualizuje się: systemy operacyjne (VMware, Xen, DropBox, Docker), systemy przechowywania danych (NAS, SAN) bazy danych i aplikacje (Apache Tomcat, JBoss, Oracle App Server, WebSphere).
Technologie - API API (application programming interface) - umożliwia użytkownikowi programową kontrolę nad zasobami i usługami w chmurze źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather Publisher, O Reilly Media, Inc. Release Date: September 2009
Technologie - API Do komunikacji w architekturze REST wystarczą zapytania protokołu HTTP: GET, POST, PUT, i DELETE API definiuje: format danych przesyłanych w zapytaniach (np. JSON) listę poleceń wysyłanych do chmury i spodziewanych odpowiedzi Każda chmura ma swoje własne, unikatowe API -> aplikacje (klienci chmury) nie są przenośne między chmurami Serializacja - przekształcenie obiektów (instancji klas) do postaci strumienia bajtów, z zachowaniem aktualnego stanu obiektu. Serializowany obiekt może zostać utrwalony w pliku dyskowym, przesłany do innego procesu lub innego komputera poprzez sieć. Deserializacja = proces odwrotny
API - JSON JSON - JavaScript Object Notation - tekstowy format wymiany danych, bazujący na języku JavaScript. Pomimo nazwy JSON jest formatem niezależnym od konkretnego języka. Wiele języków programowania obsługuje format JSON przez dodatkowe pakiety lub biblioteki (m.in. C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby) Dane w formacie JSON są pobierane z serwera jako tekst (kodowany za pomocą UTF-8) przy wykorzystaniu obiektu XMLHttpRequest języka JavaScript, a następnie przekształcane w obiekt.
API - JSON
API - JSON Komunikat JSON - literał obiektu języka Javascript (tablica asocjacyjna). Wszystkie dane są zmiennymi (nie stanowią kodu wykonywalnego) a nazwy składników (właściwości) obiektów są otoczone cudzysłowami. Możliwe wartości: string (napis otoczony cudzysłowem), number (liczba typu double), stała: false, null, true, tablica złożona z powyższych elementów obiekt Obiekty i tablice mogą być dowolnie zagnieżdżane. Przykład:
- IAM IAM = Identity and Access Management źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather Publisher, O Reilly Media, Inc. Release Date: September 2009
Uwierzytelnianie Uwierzytelnianie (authentication) - czy użytkownik jest tym, za kogo się podaje? Proces składa się z dwóch etapów: Identyfikacja (identification) podmiot deklaruje swoją tożsamość (identity). w rozmowie telefonicznej z centrum obsługi banku klient deklaruje swoje dane (bank jest stroną ufającą); w procesie logowania do serwera użytkownik wpisuje nazwę (login) (serwer jest stroną ufającą); podczas połączenia przeglądarki z serwerem SSL, ten ostatni przedstawia certyfikat X.509 zawierający jego nazwę (przeglądarka jest stroną ufającą).
Uwierzytelnianie Uwierzytelnianie właściwe strona ufająca stosuje odpowiednią technikę uwierzytelniania (authentication mechanism) w celu weryfikacji zadeklarowanej wcześniej tożsamości. personel banku prosi o podanie ustawionego wcześniej hasła telefonicznego, daty urodzenia, nazwiska panieńskiego matki; suma poprawnych odpowiedzi daje wysokie prawdopodobieństwo, że dana osoba jest tą, za którą się podaje; serwer prosi użytkownika o wpisanie hasła (lub wskazanie pliku klucza) i weryfikuje jego zgodność z wcześniej ustawioną wartością; przeglądarka weryfikuje podpis cyfrowy złożony pod certyfikatem serwera przez urząd certyfikacji, któremu ufa. Lightweight Directory Access Protocol [LDAP] - weryfikuje listy uwierzytelniające (credentials) klienta, w których występuje unikalny identyfikator użytkownika (Client ID), przypisany do niego jako pracownika lub klienta chmury.
Metody uwierzytelniania Dokumenty papierowe podpisy, pieczęcie, parafowanie, znak wodny (metody), poświadczenie notarialne (protokół); Osoby i inne istoty żywe zabezpieczenie biometryczne, dokument tożsamości, hasło, karta elektroniczna (smart card), biochip, token (generator kodów); Wiadomości i dokumenty elektroniczne - podpis cyfrowy, kod uwierzytelniania wiadomości (message authentication code); Podmioty w komunikacji elektronicznej metody oparte na dowodzie posiadania hasła (kryptografia symetryczna) lub klucza prywatnego (kryptografia asymetryczna), hasło jednorazowe.
Metody uwierzytelniania Funkcjonalna klasyfikacja metod uwierzytelniania coś co wiesz (something you know) informacja będąca w wyłącznym posiadaniu uprawnionego podmiotu, na przykład hasło lub klucz prywatny; coś co masz (something you have) przedmiot będący w posiadaniu uprawnionego podmiotu, na przykład klucz (do zamka) lub token (generator kodów); coś czym jesteś (something you are) metody biometryczne.
Autoryzacja Autoryzacja (authorization) proces nadawania podmiotowi uprawnień do danych System operacyjny sprawdza uprawnienia zalogowanego (uwierzytelnionego) użytkownika do pliku na podstawie jego atrybutów w systemie plików Użytkownik bankowości internetowej, który zalogował się (uwierzytelnił) za pomocą loginu i hasła, autoryzuje przelew za pomocą podpisu cyfrowego składanego za pomocą hasła jednorazowego Zapora sieciowa równocześnie uwierzytelnia i autoryzuje dostęp do portu serwera na podstawie adresu IP klienta
Standardy i specyfikacje IAM - SAML SAML - Security Assertion Markup Language protokół zatwierdzony przez OASIS (Organization for the Advancement of Structured Information Standards) język do wymiany danych weryfikacyjnych i autoryzacyjnych pomiędzy domenami wykorzystywany do pośredniczenia w uwierzytelnianiu i automatycznego przekazywania między systemami i aplikacjami informacji o uprawnieniach użytkowników bazuje na standardzie XML klienci - firmy i organizacje rozwiązuje problem: jak uniknąć duplikowania tożsamości? (wielokrotnego logowania do stron www)
Standardy i specyfikacje IAM - SAML Figure: źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather Publisher, O Reilly Media, Inc. Release Date: September 2009
Standardy i specyfikacje IAM - SAML Przykład: 1. Użytkownik chce sie połączyć z Gmail 2. Google generuje żądanie uwierzytelnienia SAML 3. Google wysyła przekierowanie do przeglądarki użytkownika. URL zawiera zakodowane żądanie uwierzytelnienia SAML 4. Firmowa usługa ldp dekoduje żądanie SAML i uwierzytelnia użytkownika (prosi o list uwierzytelniający lub sprawdza ciasteczka). 5. ldp generuje zakodowaną odpowiedź SAML zawierającą nazwę użytkownika (username) i podpisuje ją kluczem publicznym oraz prywatnym. 6. ldp przekazuje odpowiedź SAML do przeglądarki użytkownika a ta przekierowuje ją do Google Assertion Consumer Service (ACS) 7. Google ACS weryfikuje odpowiedź SAML kluczem publicznym. Jeśli weryfikacja jest pozytywna, ACS przekierowuje przeglądarkę użytkownika do docelowego adresu (Gmail). 8. Użytkownik loguje się do Gmail.
Standardy i specyfikacje IAM - SPML SPML - Service Provisioning Markup Language protokół zatwierdzony przez OASIS (Organization for the Advancement of Structured Information Standards) wykorzystywany do automatycznego przekazywania między systemami informacji o koncie użytkownika bazuje na standardzie XML klienci - firmy i organizacje rozwiązuje problem: jak przekazywać informację o koncie użytkownika między chmurami? umożliwia automatyczne tworzenie kont nowych użytkowników w czasie rzeczywistym
Standardy i specyfikacje IAM - XACML XACML - exensible Access Control Markup Language zatwierdzony przez OASIS język opisu kontroli dostępu. bazuje na XML klienci - firmy i organizacje definiuje model polityki kontroli dostępu oraz protokół żądań i odpowiedzi w komunikacji podmiotu z jednostką decyzyjną umożliwia jednolitą politykę kontroli dostępu dla różnych platform i usług rozwiązuje problem: jak przekazywać informację o uprawnieniach użytkowników między chmurami?
Standardy i specyfikacje IAM - XACML źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather
Standardy i specyfikacje IAM - oauth oauth - standard uwierzytelniania i autoryzacji rozwiązuje problem: jak autoryzować dostęp usługi X do danych w usłudze Y bez ujawniania listów uwierzytelniających (credentials), np. loginu i hasła? pozwala użytkownikom dzielić swoje prywatne zasoby (np. zdjęcia, filmy, kontakty) przechowywane na jednej stronie z inną stroną bez konieczności zagłębiania się w obsługę ich poświadczeń, dostarczając zazwyczaj nazwę użytkownika oraz token (hasło jednorazowe). Token taki pozwala na dostęp do określonej strony dla konkretnych zasobów oraz na określony czas. umożliwia to użytkownikowi na udzielenie dostępu stronom trzecim do informacji przechowywanych u innego dostarczyciela usług bez konieczności współdzielenia praw dostępu, bądź udzielenia pełnego dostępu do danych. protokoł otwarty
Standardy i specyfikacje IAM - OpenID OpenID - otwarty standard rozproszonego uwierzytelnienia i dystrybucji tożsamości użytkowników w usługach webowych. OpenID rozwiązuje problem dystrybucji składników tożsamości użytkownika pomiędzy wieloma serwisami webowymi. Zamiast zakładać niezależne konta w każdym z serwisów, użytkownik zakłada jedno konto na serwerze OpenID, zapisując tam swoje dane osobowe i uzyskując identyfikator OpenID. OpenID używany jest przez klientów indywidualnych; niemal nie funkcjonuje w firmach i instytucjach
Google GData Google opracowała hybrydową wersję OpenID i OAuth (GData API), redukując liczbę akcji potrzebnych do uwierzytelnienia i autoryzacji źródło: Cloud Security and Privacy, Shahed Latif, Subra Kumaraswamy, Tim Mather Publisher, O Reilly Media, Inc. Release Date: September 2009
Google Data 1. Aplikacja webowa prosi usługę Google Authorization o token dla usługi Google 2. Google sprawdza, czy aplikacja jest zarejstrowana i zwraca nieautoryzowany token 3. Aplikacja webowa kieruje użytkownika na stronę autoryzacyjną Google, przekazując nieautoryzowany token 4. Użytkownik loguje się do konta Google i zgadza się (bądź nie) na ograniczony dostęp aplikacji webowej do usługi Google (poprzez jego konto) 5. Jeśli użytkownik zgodził się, usługa Google Authorization przekierowuje go na stronę aplikacji webowej (wraz z autoryzowanym tokenem). 6. Aplikacja webowa wysyła do Google Authorization żądanie wymiany autoryzowanego tokena na token dostępu. 7. Google Authorization weryfikuje żądanie i zwraca token dostępu. 8. Aplikacja webowa wysyła do usługi Google zapytanie podpisane tokenem dostepu. 9. Usługa Google ropoznaje token i udziela dostępu do danych.
Gdata-python-client Google Data (Gdata) - Biblioteka Python do komunikacji z dyskiem Google źródło: https://code.google.com/p/gdata-python-client/downloads/list instalacja: cd gdata 2.0.18 sudo python setup.py install przykład - obsługa arkusza kalkulacyjnego Google (Google Sheet) cd gdata 2.0.18/samples/spreadsheets spreadsheetexample.py
Gdata-python-client 1. Instrukcja rejestracji nowego klienta (projektu) w Google Developers Console: https://developers.google.com/api-clientlibrary/python/samples/samples 2. Autoryzacja: http://stackoverflow.com/questions/26925125/accesstokenrefresherrorgoogle-spreadsheet-api-with-oauth-2-0-service-accounto?noredirect=1#comment42398164_26925125 Potrzebne biblioteki Python: httplib2: https://code.google.com/p/httplib2/downloads/list google.appengine.api: https://cloud.google.com/appengine/downloads pakiety: python-memcache, oauth2client