SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
AJAX in the Cloud

AJAX Database Programming




      Brent Hamby & Geoff Hendrey
            October 21st 2008
Agenda

In this talk we will cover 3 important questions:

1. What are today's options for cloud databases, and why can't
   they be easily accessed by pure JavaScript APIs?
2. What are the gaps between the Web 1.0 database security
   model, and the unforgiving JavaScript environment?
3. How can we create a new AJAX/RIA security paradigm for
   Database as a Service (DaaS)?
The Journey

Who we are
• From LBS industry
• Building mapping web apps in the old days
   o huge time and development costs
   o complex geographic information systems
   o poor user interfaces
• Google Maps: the inspiration of the AJAX revolution
   o Object Oriented JavaScript API's
   o Faster, Cheaper, Better apps
   o initial resistance from big GIS.
        haters
• Gave birth to the Mash-up application paradigm
Our mission


Apply lessons of the Google maps revolution to Database in the
cloud

Our project:

               NextDB.net : the hosted AJAX Database
The Cloud Computing Landscape

Establishing a vocabulary:

1. CLOUD SERVERS
2. CLOUD VOLUMES
3. CLOUD APPLICATION FRAMEWORKS
4. CLOUD DATABASES
Cloud Servers
General purpose operating systems and execution
environments
Trends:
 • virtualization
 • provisioning tools
 • elasticity (ability to add servers to respond in near real-time
   offered loads)
Examples:
 • GoGrid
 • EC2
 • Flexiscale

Conclusion: Hosted virtualized servers could be used to deploy
a database, but a virtual server is not a Cloud Database
Cloud Volumes

•   Behaves like a block device
•   Install filesystem on top of it
•   Survives indepently of the virtual server
•   Amazon Elastic Block Storage (EBS) is the primary example

Conclusion: hosted volumes could be used as storage for
database files, but the hosted volume is not in-and-of-itself
Cloud Database
Cloud Application Frameworks

A database systems coupled to an application framework.
Hosted App Frameworks Have been around forever
  -think Tomcat + MySQL Web Hosting
Why aren't they Cloud Application Frameworks?
  -maybe they are
  -but if they are not, it's because they lack SCALABILITY
  -limited to a slice of resources on a single server
Examples of new generation of Cloud Application Framework
  -Google App Engine
  -Combines Python Web 1.0 application scripting with
BigTable
  -Concusion: Not a Cloud Database, although your
application in the cloud can access a database in the cloud
Cloud Databases
databases with an API that can be accessed over the web

Amazon Simple Storage Service (S3)
  -provides a bucket service (e.g. hashmap)
  -can be accessed from any secure server that can sign its
request
Amazon SimpleDB
  -provides a structured data model
  -An Amazon SimpleDB domain is like a worksheet, items are like rows of data,
attributes are like column headers, and values are the data entered in each of the cells.
   -same security model as SimpleDB

Conclusion: S3 cannot be considered a database by most
modern definitions. SimpleDB is a Hierarchical Cloud
Database. Neither is a Relational Cloud Database.
Can I Access SimpleDB or S3 from an
AJAX/RIA?

• The AWS security model is based on Secret Keys and
  Digital Signatures
• The Secret Key is used to sign all messages sent from the
  client to the server, along with the key ID.
• The Server looks up its copy of the secret key using the Key
  ID, and checks the signature
• This model implicitly relies on the ability of the message
  signer to keep the key safe.
Secret Keys and Digital Signatures


Rule #1 of AWS security: Secrets must be ....secret
quot;Your Secret Access Key is a secret, which only you and AWS should know. It is
important to keep it confidential to protect your account. Store it securely in a safe
place...To provide proof that you truly are the sender of the request, you also
include a digital signature calculated using your Secret Access Key.quot;

Rule #1 of AJAX security: There are no secure AJAX clients

Nothing can possibly be digitially signed or hashed by a JS
application because the secret key itself would be
compromised
So how can I access SimpleDB or S3
 from a RIA/AJAX
You must build a serverside application to act as a secure
proxy between the client and AWS:
 1. formulate and sign AWS requests without compromising the
    key
 2. validate the identity (username/pwd) of your application end
    user via a query to SimpleDB or S3
 3. implement Web 1.0-style application logic to control
    application behavior based on user's identity established in
    step 2
Would the Google Maps Mash-up revolution have happened if you had to
write the server side component?
(no... obviously)
The Paradox

The RIA/AJAX paradigm relies on a Web 1.0 serverside
architecture for accessing secure resources such as a
database.

To understand how to move Cloud databases forward, and
eliminate the serverside application, we have to start by going
backward, to understand what is broken in the RDBMS security
model.
The RDBMS Security Model

The modern Relational Database Management System
(RDBMS) is knows as a quot;client-serverquot; database architecture
with a security model designed before the advent of the Web.

The notion of quot;clientquot; in this context was conceived under the
following constraints that DO NOT HOLD for AJAX/RIA:
 • clients are typically secured behind the same firewall, and
    reside on the same LAN (or virtual network) as the server
 • client are authenticated via the RDBMS's notion of users
    and roles (quot;scott/tigerquot;...anyone...anyone)
 • clients, in reality, are trusted applications
 • because clients are trusted applications, they are free to
    execute ad-hoc SQL
Can we apply the RDBMS client/server
model over the web?

NO!

• To apply the RDBMS client-server model, you need a trust
  relationship with every end-user of the application, and an
  associated user/role in the RDBMS. That's just ridiculous!
  (it's table-level security at best, not row-level security)
• Since you can't create an RDBMS user/role for application
  end users, you will get hacked:
   o Sensitive data will be stolen (SELECT * FROM USER)
   o Your system will get wiped out (DELETE FROM USERS)
Identity and Security

One of the cornerstones of the relational database model is the
concept of identity. “Identity” is a familiar concept to everyone
who owns a credit card (the credit card number is the card's
“identity”). Another for of identiy is a Social Security Number
(SSN) that identifies you as a United States Citizen. “Identity” is
simply a value that is used to keep track of data. Rows in a
database table typically have an identity defined by the row's
primary key (PK).

If your Social Security Number or credit card number is stolen it
can be impossible to “put the genie back in the bottle”.
Similarly, if a Primary Key is accessible to an application, or
malicious user, it can be saved and used for malicious
purposes, like changing the price of a product, or altering data
that should be secure.
The Role of the Primary Key

In a Web 1.0 serverside RDBMS application, primary keys act
as a common currency between the serverside application and
the database.

Primary keys and foreign keys form a relationship graph
connecting rows in the database.

Primary keys are a natural mechanism for traversing this graph:

SELECT * FROM ACCOUNT WHERE FK_TO_USER = 19
The dialog between the serverside
application and the database
app: quot;give me the primary key for USER
johndoe/abc123quot;(SELECT PK FROM USER WHERE      NAME='johndoe'
AND PWD='abc123')
database: quot;19quot;
app: quot;give me the account information corresponding to the
user identified by PK 19quot;
(SELECT * FROM ACCOUNT WHERE FK_TO_USER=19)

As we can see from the dialog above that the database will
blindly return the raw identity for the user (think SSN), for any
primary key. Therefore, the security/integrity of this dialog
cannot be maintained if the application code can be tampered,
or ad-hoc values can be sent to the database.
Primary Keys Won't Work For
AJAX/RIA
Primary Key is an insecure mechanism for identifying rows
between a server and an AJAX/RIA (or any browser-based
application).The following is to state the obvious.

primary keys are typically auto-incrementing surrogate keys
    o divulges hints about number of rows in a table
    o can be altered (primary key quot;mathquot;, like quot;pointer mathquot;) to
      affect malicious results
    o http://bank.com?action=viewbalance&accountPK=2359
    o hmm...how about I change 2359 to 2360? Will I see
      someone else's account balance?
For these reasons, nobody in their right mind would pass
primary keys back and forth between a web client and server.
So Are We Stuck With The Serverside
App?

No (as we will see later).

And there are many good ideas we should carry forward from
the relatively secure Web 1.0 style of programming:
 1. Never allow the client to formulate ad-hoc queries
 2. Prevent injection attacks by parameterizing queries
 3. Never return primary keys to the browser
The Missing Piece?

A Web-safe alternative to the primary key that:
1. is fundamentally secure in a web client-server architecture
2. preserves the semantics of quot;dialogquot; between client and
   server
3. is retrieved directly from the database
What we need is a Secure Unique Result Identifier (SURID).
Introducing the SURID
Nextdb.net's web-safe alternative the PK

One SURID is generated by the database for each row
returned to the AJAX/RIA client, according to this algorithm:

base64Encode(
    cipher(
        TABLENAME +
        PK +
        ACCESS_CONTROL+
        MESSAGE_DIGEST))

•  base64Encode function: converts binary to text for transport in
  JSON.
• ciper function: performs strong encryption using a private key
Anatomy of the SURID

• TABLENAME: the name of the table from which the row
  data was retrieved (in the case of data joined from multiple
  tables, multiple SURIDs are returned)
• PK: the actual primary key of the data
• ACCESS_CONTROL: dynamically generated rules which
  define if UPDATE or DELETE operations can be applied to
  data identified by a SURID
• MESSAGE_DIGEST: SHA-1 or MD5 digest (detects
  tampering)
Example using SURID

Considering the following rules for a hypothetical application:


1. A user may query his account profile
2. A user may update his account profile
3. A user may NOT delete his account profile
Dialog Between AJAX/RIA and DaaS
AJAX/RIA: quot;give me the ACCOUNT row and SURID for
jdoe/abc123quot;

DaaS:quot;here is the JSON for this USER
{nickName:quot;john doequot;, userName:quot;jdoequot;,
email:quot;jdoe234@gmail.comquot;
PK:quot;dj38f3cvcvrn3z4egr434b469rtg3sss3rewesquot;}quot;

AJAX/RIA: quot;UPDATE the nickName column to quot;johnnyBoyquot; for
PK:dj38f3cvcvrn3z4egr434b469rtg3sss3rewesquot;

DaaS: I decrypted the SURID and checked its digest. It is
valid, and its ACCESS_CONTROL allows UPDATE. I will
perform the requested operation.
Moving from dialog to actual JS code

var connection = new net.nextdb.Connection(quot;anAcctquot;, quot;aDBquot;);
var query = new net.nextdb.Query(quot;loginquot;);
query.params = {name:quot;jdoequot;, pwd=quot;abc123quot;};
connection.executeQuery(q, function(rows, error){
   alert(quot;login succeeded.quot;);
   var update = new net.nextdb.Update(quot;USER_TABLEquot;);
   update.setParameters(nickname:quot;johnnyboyquot;);
   update.setRowId(rows[0].TABLE1.PK);//use SURID
   conn.executeUpdate(update, function(key,error){
      alert(quot;update succeededquot;);
    });
 });
Important!

In the previous code snippet, there is NO serverside code
needed.

the SURID moves freely over the web, exchanged back and
forth between the AJAX app and the Daas without
compromising security.
Security Hole?

What prevents a hacker from inserting this code with a
debugger and violating rule 3, quot;A user may NOT delete his
account profilequot;?

var del = new net.nextdb.Delete(quot;USER_TABLE);
del.setRowId(rows[0].TABLE1.PK);
connection.executeDelete(del, function(key, error){
    if( ! error){
      alert(quot;My hack worked! I broke the rules!quot;);
    }else{
      alert(quot;My hack failed.quot;);
    }
});
SURID Access Control

The ACCESS_CONTROL bits encoded in a SURID are set
dynamically when the query executes.

a query named quot;PRIVATE_ACCOUNT_ACCESSquot; might be
parameterized with a username and password, and write FOR
UPDATE into the ACCESS_CONTROL bits.

a query named quot;PUBLIC_ACCOUNT_VIEWquot; would not be
parameterized with username and password, but would NOT
set the FOR UPDATE or FOR DELETE access control bits.

Conclusion: SURID allows the query to specify the security
model for results returned from the query.
What has characterized the architecture
of database computing
CLIENT/SERVER

Irony: why can't the client be web based? Who says the client
has to be a LAN client?
Let's look at some tools and live demos
Concluding remarks


1. What are today's options for cloud databases, and why can't
   they be easily accessed by pure JavaScript APIs?
    o today's cloud databases cannot be accessed from AJAX
      API's.
2. What are the gaps between the Web 1.0 database security
   model, and the unforgiving JavaScript environment?
    o The RDBMS security model cannot be applied to AJAX.
3. How can we create a new AJAX/RIA security paradigm for
   Database as a Service (DaaS)?
    o Introducing a paradigm shift in the security model, which
      is the goal of the NextDB.net project.

Más contenido relacionado

La actualidad más candente

List of Top Local Databases used for react native app developement in 2022
List of Top Local Databases used for react native app developement in 2022					List of Top Local Databases used for react native app developement in 2022
List of Top Local Databases used for react native app developement in 2022 Shelly Megan
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Datadeimos
 
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...DevOps for Enterprise Systems
 
CM WebClient for CA Plex
CM WebClient for CA PlexCM WebClient for CA Plex
CM WebClient for CA PlexCM First Group
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforcedeimos
 
CM WebClient Datasheet
CM WebClient DatasheetCM WebClient Datasheet
CM WebClient DatasheetCM First Group
 
CM WebClient CA Expo Mannheim Germany
CM WebClient CA Expo Mannheim Germany CM WebClient CA Expo Mannheim Germany
CM WebClient CA Expo Mannheim Germany CM First Group
 
Java enterprise paradise
Java enterprise paradiseJava enterprise paradise
Java enterprise paradiseAmr Salah
 
Building Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web AppsBuilding Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web AppsJames Pearce
 
Silverlight Document Search Engine
Silverlight Document Search EngineSilverlight Document Search Engine
Silverlight Document Search EngineMustata Bogdan
 
Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4Abhik Biswas
 
Identity Services Drilldown - TechEd NA 2009
Identity Services Drilldown - TechEd NA 2009Identity Services Drilldown - TechEd NA 2009
Identity Services Drilldown - TechEd NA 2009Jorgen Thelin
 
Aras Role Based Clients
Aras Role Based ClientsAras Role Based Clients
Aras Role Based ClientsProdeos
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise ArchitecturesBIOVIA
 
Mobile Portal Enabler With Content Creation Distribution Capabilities
Mobile Portal Enabler With Content Creation Distribution CapabilitiesMobile Portal Enabler With Content Creation Distribution Capabilities
Mobile Portal Enabler With Content Creation Distribution Capabilitiesgmitech
 
Google App Engine Update 2012
Google App Engine Update 2012Google App Engine Update 2012
Google App Engine Update 2012David Chandler
 
NewStar Software Services Service+Offerings
NewStar Software Services Service+OfferingsNewStar Software Services Service+Offerings
NewStar Software Services Service+Offeringsguest7f7cc9d
 

La actualidad más candente (20)

List of Top Local Databases used for react native app developement in 2022
List of Top Local Databases used for react native app developement in 2022					List of Top Local Databases used for react native app developement in 2022
List of Top Local Databases used for react native app developement in 2022
 
Frank Mantek Google G Data
Frank Mantek Google G DataFrank Mantek Google G Data
Frank Mantek Google G Data
 
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
z/OS Connect - Overview at the "z Systems Agile Enterprise Development Confer...
 
CM WebClient for CA Plex
CM WebClient for CA PlexCM WebClient for CA Plex
CM WebClient for CA Plex
 
Dave Carroll Application Services Salesforce
Dave Carroll Application Services SalesforceDave Carroll Application Services Salesforce
Dave Carroll Application Services Salesforce
 
CM WebClient Datasheet
CM WebClient DatasheetCM WebClient Datasheet
CM WebClient Datasheet
 
CM WebClient CA Expo Mannheim Germany
CM WebClient CA Expo Mannheim Germany CM WebClient CA Expo Mannheim Germany
CM WebClient CA Expo Mannheim Germany
 
Cloud & The Mobile Stack
Cloud & The Mobile StackCloud & The Mobile Stack
Cloud & The Mobile Stack
 
Java enterprise paradise
Java enterprise paradiseJava enterprise paradise
Java enterprise paradise
 
Gangadhar_Challa_Profile
Gangadhar_Challa_ProfileGangadhar_Challa_Profile
Gangadhar_Challa_Profile
 
Building Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web AppsBuilding Cloud-Based Cross-Platform Mobile Web Apps
Building Cloud-Based Cross-Platform Mobile Web Apps
 
Silverlight Document Search Engine
Silverlight Document Search EngineSilverlight Document Search Engine
Silverlight Document Search Engine
 
Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4Comm Gate Corporate Profile V0.4
Comm Gate Corporate Profile V0.4
 
Identity Services Drilldown - TechEd NA 2009
Identity Services Drilldown - TechEd NA 2009Identity Services Drilldown - TechEd NA 2009
Identity Services Drilldown - TechEd NA 2009
 
Aras Role Based Clients
Aras Role Based ClientsAras Role Based Clients
Aras Role Based Clients
 
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
(ATS3-GS02) Accelrys Enterprise Platform in Enterprise Architectures
 
Ideas for addictive series 40 web apps
Ideas for addictive series 40 web appsIdeas for addictive series 40 web apps
Ideas for addictive series 40 web apps
 
Mobile Portal Enabler With Content Creation Distribution Capabilities
Mobile Portal Enabler With Content Creation Distribution CapabilitiesMobile Portal Enabler With Content Creation Distribution Capabilities
Mobile Portal Enabler With Content Creation Distribution Capabilities
 
Google App Engine Update 2012
Google App Engine Update 2012Google App Engine Update 2012
Google App Engine Update 2012
 
NewStar Software Services Service+Offerings
NewStar Software Services Service+OfferingsNewStar Software Services Service+Offerings
NewStar Software Services Service+Offerings
 

Similar a Cloud Computing2

DEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVE
DEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVEDEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVE
DEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVEcscpconf
 
Technology Overview
Technology OverviewTechnology Overview
Technology OverviewLiran Zelkha
 
Aws serverless multi-tier_architectures
Aws serverless multi-tier_architecturesAws serverless multi-tier_architectures
Aws serverless multi-tier_architecturessonpro2312
 
Scaling Databricks to Run Data and ML Workloads on Millions of VMs
Scaling Databricks to Run Data and ML Workloads on Millions of VMsScaling Databricks to Run Data and ML Workloads on Millions of VMs
Scaling Databricks to Run Data and ML Workloads on Millions of VMsMatei Zaharia
 
Practical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter SvenssonPractical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter Svenssonrajivmordani
 
Privacy Issues of Cloud Computing in the Federal Sector
Privacy Issues of Cloud Computing in the Federal SectorPrivacy Issues of Cloud Computing in the Federal Sector
Privacy Issues of Cloud Computing in the Federal SectorLew Oleinick
 
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008codebits
 
Evolving your Data Access with MongoDB Stitch - Drew Di Palma
Evolving your Data Access with MongoDB Stitch - Drew Di PalmaEvolving your Data Access with MongoDB Stitch - Drew Di Palma
Evolving your Data Access with MongoDB Stitch - Drew Di PalmaMongoDB
 
Cloud economics design, capacity and operational concerns
Cloud economics  design, capacity and operational concernsCloud economics  design, capacity and operational concerns
Cloud economics design, capacity and operational concernsMarcos García
 
Docebo: history of a journey from legacy to serverless
Docebo: history of a journey from legacy to serverlessDocebo: history of a journey from legacy to serverless
Docebo: history of a journey from legacy to serverlessAWS User Group Italy
 
Understanding serverless architecture
Understanding serverless architectureUnderstanding serverless architecture
Understanding serverless architectureSeokchan Yoon
 
Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...
Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...
Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...Vlad Mihnea
 
What’s the big deal with Graph Databases?
What’s the big deal with Graph Databases?What’s the big deal with Graph Databases?
What’s the big deal with Graph Databases?Daniel Zivkovic
 
Schema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdf
Schema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdfSchema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdf
Schema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdfseo18
 
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션Amazon Web Services Korea
 
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azureCloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azureEduardo Castro
 
Fast Synchronization In IVR Using REST API For HTML5 And AJAX
Fast Synchronization In IVR Using REST API For HTML5 And AJAXFast Synchronization In IVR Using REST API For HTML5 And AJAX
Fast Synchronization In IVR Using REST API For HTML5 And AJAXIJERA Editor
 
IBM Hybrid Cloud Integration UCC Talk, 21st November 2018
IBM Hybrid Cloud Integration UCC Talk, 21st November 2018IBM Hybrid Cloud Integration UCC Talk, 21st November 2018
IBM Hybrid Cloud Integration UCC Talk, 21st November 2018Michael O'Sullivan
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computingwebscale
 
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)Amazon Web Services
 

Similar a Cloud Computing2 (20)

DEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVE
DEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVEDEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVE
DEVELOPING APPLICATION FOR CLOUD – A PROGRAMMER’S PERSPECTIVE
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
 
Aws serverless multi-tier_architectures
Aws serverless multi-tier_architecturesAws serverless multi-tier_architectures
Aws serverless multi-tier_architectures
 
Scaling Databricks to Run Data and ML Workloads on Millions of VMs
Scaling Databricks to Run Data and ML Workloads on Millions of VMsScaling Databricks to Run Data and ML Workloads on Millions of VMs
Scaling Databricks to Run Data and ML Workloads on Millions of VMs
 
Practical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter SvenssonPractical Thin Server Architecture With Dojo Peter Svensson
Practical Thin Server Architecture With Dojo Peter Svensson
 
Privacy Issues of Cloud Computing in the Federal Sector
Privacy Issues of Cloud Computing in the Federal SectorPrivacy Issues of Cloud Computing in the Federal Sector
Privacy Issues of Cloud Computing in the Federal Sector
 
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008Practical Thin Server Architecture With Dojo Sapo Codebits 2008
Practical Thin Server Architecture With Dojo Sapo Codebits 2008
 
Evolving your Data Access with MongoDB Stitch - Drew Di Palma
Evolving your Data Access with MongoDB Stitch - Drew Di PalmaEvolving your Data Access with MongoDB Stitch - Drew Di Palma
Evolving your Data Access with MongoDB Stitch - Drew Di Palma
 
Cloud economics design, capacity and operational concerns
Cloud economics  design, capacity and operational concernsCloud economics  design, capacity and operational concerns
Cloud economics design, capacity and operational concerns
 
Docebo: history of a journey from legacy to serverless
Docebo: history of a journey from legacy to serverlessDocebo: history of a journey from legacy to serverless
Docebo: history of a journey from legacy to serverless
 
Understanding serverless architecture
Understanding serverless architectureUnderstanding serverless architecture
Understanding serverless architecture
 
Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...
Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...
Ymens - Bouncing off clouds - Rapid Development for Cloud Ready Applications...
 
What’s the big deal with Graph Databases?
What’s the big deal with Graph Databases?What’s the big deal with Graph Databases?
What’s the big deal with Graph Databases?
 
Schema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdf
Schema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdfSchema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdf
Schema-based multi-tenant architecture using Quarkus & Hibernate-ORM.pdf
 
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
윈도 닷넷 개발자를 위한 솔루션 클라우드 데브옵스 솔루션
 
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azureCloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
 
Fast Synchronization In IVR Using REST API For HTML5 And AJAX
Fast Synchronization In IVR Using REST API For HTML5 And AJAXFast Synchronization In IVR Using REST API For HTML5 And AJAX
Fast Synchronization In IVR Using REST API For HTML5 And AJAX
 
IBM Hybrid Cloud Integration UCC Talk, 21st November 2018
IBM Hybrid Cloud Integration UCC Talk, 21st November 2018IBM Hybrid Cloud Integration UCC Talk, 21st November 2018
IBM Hybrid Cloud Integration UCC Talk, 21st November 2018
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
AWS re:Invent 2016: ↑↑↓↓←→←→ BA Lambda Start (SVR305)
 

Más de rajivmordani

Web 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With JsfWeb 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With Jsfrajivmordani
 
X Aware Ajax World V1
X Aware Ajax World V1X Aware Ajax World V1
X Aware Ajax World V1rajivmordani
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5arajivmordani
 
Tripit Ajaxworld V5
Tripit Ajaxworld V5Tripit Ajaxworld V5
Tripit Ajaxworld V5rajivmordani
 
Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081rajivmordani
 
Sue Googe Spice Up Ux
Sue Googe Spice Up UxSue Googe Spice Up Ux
Sue Googe Spice Up Uxrajivmordani
 
Social Networking Intranet
Social Networking IntranetSocial Networking Intranet
Social Networking Intranetrajivmordani
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascriptrajivmordani
 
Slow Cool 20081009 Final
Slow Cool 20081009 FinalSlow Cool 20081009 Final
Slow Cool 20081009 Finalrajivmordani
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax Wrajivmordani
 
I Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor FinalI Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor Finalrajivmordani
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpinrajivmordani
 
Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008rajivmordani
 
Mike Grushin Developing Ugc Sites That Scale
Mike Grushin    Developing Ugc Sites That ScaleMike Grushin    Developing Ugc Sites That Scale
Mike Grushin Developing Ugc Sites That Scalerajivmordani
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1rajivmordani
 
Good Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas CrockfordGood Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas Crockfordrajivmordani
 
Flying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy ChoneFlying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy Chonerajivmordani
 

Más de rajivmordani (20)

Web 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With JsfWeb 2 0 Data Visualization With Jsf
Web 2 0 Data Visualization With Jsf
 
X Aware Ajax World V1
X Aware Ajax World V1X Aware Ajax World V1
X Aware Ajax World V1
 
The Beauty Of Java Script V5a
The Beauty Of Java Script V5aThe Beauty Of Java Script V5a
The Beauty Of Java Script V5a
 
Tripit Ajaxworld V5
Tripit Ajaxworld V5Tripit Ajaxworld V5
Tripit Ajaxworld V5
 
Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081Turbo Enterprise Web 2.0 Ajax World 20081
Turbo Enterprise Web 2.0 Ajax World 20081
 
Sue Googe Spice Up Ux
Sue Googe Spice Up UxSue Googe Spice Up Ux
Sue Googe Spice Up Ux
 
Social Networking Intranet
Social Networking IntranetSocial Networking Intranet
Social Networking Intranet
 
Ssjs Presentation
Ssjs PresentationSsjs Presentation
Ssjs Presentation
 
Jsf Ajax
Jsf AjaxJsf Ajax
Jsf Ajax
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
 
Ria Enterprise
Ria EnterpriseRia Enterprise
Ria Enterprise
 
Slow Cool 20081009 Final
Slow Cool 20081009 FinalSlow Cool 20081009 Final
Slow Cool 20081009 Final
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax W
 
I Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor FinalI Phone Dev Summit Prezo Guy Naor Final
I Phone Dev Summit Prezo Guy Naor Final
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpin
 
Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008Laird Best Practices Ajax World West2008
Laird Best Practices Ajax World West2008
 
Mike Grushin Developing Ugc Sites That Scale
Mike Grushin    Developing Ugc Sites That ScaleMike Grushin    Developing Ugc Sites That Scale
Mike Grushin Developing Ugc Sites That Scale
 
Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1Java Fx Ajaxworld Rags V1
Java Fx Ajaxworld Rags V1
 
Good Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas CrockfordGood Parts of JavaScript Douglas Crockford
Good Parts of JavaScript Douglas Crockford
 
Flying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy ChoneFlying Pixels Ent Apps Jeremy Chone
Flying Pixels Ent Apps Jeremy Chone
 

Último

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Último (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Cloud Computing2

  • 1. AJAX in the Cloud AJAX Database Programming Brent Hamby & Geoff Hendrey October 21st 2008
  • 2. Agenda In this talk we will cover 3 important questions: 1. What are today's options for cloud databases, and why can't they be easily accessed by pure JavaScript APIs? 2. What are the gaps between the Web 1.0 database security model, and the unforgiving JavaScript environment? 3. How can we create a new AJAX/RIA security paradigm for Database as a Service (DaaS)?
  • 3. The Journey Who we are • From LBS industry • Building mapping web apps in the old days o huge time and development costs o complex geographic information systems o poor user interfaces • Google Maps: the inspiration of the AJAX revolution o Object Oriented JavaScript API's o Faster, Cheaper, Better apps o initial resistance from big GIS.  haters • Gave birth to the Mash-up application paradigm
  • 4. Our mission Apply lessons of the Google maps revolution to Database in the cloud Our project: NextDB.net : the hosted AJAX Database
  • 5. The Cloud Computing Landscape Establishing a vocabulary: 1. CLOUD SERVERS 2. CLOUD VOLUMES 3. CLOUD APPLICATION FRAMEWORKS 4. CLOUD DATABASES
  • 6. Cloud Servers General purpose operating systems and execution environments Trends: • virtualization • provisioning tools • elasticity (ability to add servers to respond in near real-time offered loads) Examples: • GoGrid • EC2 • Flexiscale Conclusion: Hosted virtualized servers could be used to deploy a database, but a virtual server is not a Cloud Database
  • 7. Cloud Volumes • Behaves like a block device • Install filesystem on top of it • Survives indepently of the virtual server • Amazon Elastic Block Storage (EBS) is the primary example Conclusion: hosted volumes could be used as storage for database files, but the hosted volume is not in-and-of-itself Cloud Database
  • 8. Cloud Application Frameworks A database systems coupled to an application framework. Hosted App Frameworks Have been around forever -think Tomcat + MySQL Web Hosting Why aren't they Cloud Application Frameworks? -maybe they are -but if they are not, it's because they lack SCALABILITY -limited to a slice of resources on a single server Examples of new generation of Cloud Application Framework -Google App Engine -Combines Python Web 1.0 application scripting with BigTable -Concusion: Not a Cloud Database, although your application in the cloud can access a database in the cloud
  • 9. Cloud Databases databases with an API that can be accessed over the web Amazon Simple Storage Service (S3) -provides a bucket service (e.g. hashmap) -can be accessed from any secure server that can sign its request Amazon SimpleDB -provides a structured data model -An Amazon SimpleDB domain is like a worksheet, items are like rows of data, attributes are like column headers, and values are the data entered in each of the cells. -same security model as SimpleDB Conclusion: S3 cannot be considered a database by most modern definitions. SimpleDB is a Hierarchical Cloud Database. Neither is a Relational Cloud Database.
  • 10. Can I Access SimpleDB or S3 from an AJAX/RIA? • The AWS security model is based on Secret Keys and Digital Signatures • The Secret Key is used to sign all messages sent from the client to the server, along with the key ID. • The Server looks up its copy of the secret key using the Key ID, and checks the signature • This model implicitly relies on the ability of the message signer to keep the key safe.
  • 11. Secret Keys and Digital Signatures Rule #1 of AWS security: Secrets must be ....secret quot;Your Secret Access Key is a secret, which only you and AWS should know. It is important to keep it confidential to protect your account. Store it securely in a safe place...To provide proof that you truly are the sender of the request, you also include a digital signature calculated using your Secret Access Key.quot; Rule #1 of AJAX security: There are no secure AJAX clients Nothing can possibly be digitially signed or hashed by a JS application because the secret key itself would be compromised
  • 12. So how can I access SimpleDB or S3 from a RIA/AJAX You must build a serverside application to act as a secure proxy between the client and AWS: 1. formulate and sign AWS requests without compromising the key 2. validate the identity (username/pwd) of your application end user via a query to SimpleDB or S3 3. implement Web 1.0-style application logic to control application behavior based on user's identity established in step 2 Would the Google Maps Mash-up revolution have happened if you had to write the server side component? (no... obviously)
  • 13. The Paradox The RIA/AJAX paradigm relies on a Web 1.0 serverside architecture for accessing secure resources such as a database. To understand how to move Cloud databases forward, and eliminate the serverside application, we have to start by going backward, to understand what is broken in the RDBMS security model.
  • 14. The RDBMS Security Model The modern Relational Database Management System (RDBMS) is knows as a quot;client-serverquot; database architecture with a security model designed before the advent of the Web. The notion of quot;clientquot; in this context was conceived under the following constraints that DO NOT HOLD for AJAX/RIA: • clients are typically secured behind the same firewall, and reside on the same LAN (or virtual network) as the server • client are authenticated via the RDBMS's notion of users and roles (quot;scott/tigerquot;...anyone...anyone) • clients, in reality, are trusted applications • because clients are trusted applications, they are free to execute ad-hoc SQL
  • 15. Can we apply the RDBMS client/server model over the web? NO! • To apply the RDBMS client-server model, you need a trust relationship with every end-user of the application, and an associated user/role in the RDBMS. That's just ridiculous! (it's table-level security at best, not row-level security) • Since you can't create an RDBMS user/role for application end users, you will get hacked: o Sensitive data will be stolen (SELECT * FROM USER) o Your system will get wiped out (DELETE FROM USERS)
  • 16. Identity and Security One of the cornerstones of the relational database model is the concept of identity. “Identity” is a familiar concept to everyone who owns a credit card (the credit card number is the card's “identity”). Another for of identiy is a Social Security Number (SSN) that identifies you as a United States Citizen. “Identity” is simply a value that is used to keep track of data. Rows in a database table typically have an identity defined by the row's primary key (PK). If your Social Security Number or credit card number is stolen it can be impossible to “put the genie back in the bottle”. Similarly, if a Primary Key is accessible to an application, or malicious user, it can be saved and used for malicious purposes, like changing the price of a product, or altering data that should be secure.
  • 17. The Role of the Primary Key In a Web 1.0 serverside RDBMS application, primary keys act as a common currency between the serverside application and the database. Primary keys and foreign keys form a relationship graph connecting rows in the database. Primary keys are a natural mechanism for traversing this graph: SELECT * FROM ACCOUNT WHERE FK_TO_USER = 19
  • 18. The dialog between the serverside application and the database app: quot;give me the primary key for USER johndoe/abc123quot;(SELECT PK FROM USER WHERE NAME='johndoe' AND PWD='abc123') database: quot;19quot; app: quot;give me the account information corresponding to the user identified by PK 19quot; (SELECT * FROM ACCOUNT WHERE FK_TO_USER=19) As we can see from the dialog above that the database will blindly return the raw identity for the user (think SSN), for any primary key. Therefore, the security/integrity of this dialog cannot be maintained if the application code can be tampered, or ad-hoc values can be sent to the database.
  • 19. Primary Keys Won't Work For AJAX/RIA Primary Key is an insecure mechanism for identifying rows between a server and an AJAX/RIA (or any browser-based application).The following is to state the obvious. primary keys are typically auto-incrementing surrogate keys o divulges hints about number of rows in a table o can be altered (primary key quot;mathquot;, like quot;pointer mathquot;) to affect malicious results o http://bank.com?action=viewbalance&accountPK=2359 o hmm...how about I change 2359 to 2360? Will I see someone else's account balance? For these reasons, nobody in their right mind would pass primary keys back and forth between a web client and server.
  • 20. So Are We Stuck With The Serverside App? No (as we will see later). And there are many good ideas we should carry forward from the relatively secure Web 1.0 style of programming: 1. Never allow the client to formulate ad-hoc queries 2. Prevent injection attacks by parameterizing queries 3. Never return primary keys to the browser
  • 21. The Missing Piece? A Web-safe alternative to the primary key that: 1. is fundamentally secure in a web client-server architecture 2. preserves the semantics of quot;dialogquot; between client and server 3. is retrieved directly from the database What we need is a Secure Unique Result Identifier (SURID).
  • 22. Introducing the SURID Nextdb.net's web-safe alternative the PK One SURID is generated by the database for each row returned to the AJAX/RIA client, according to this algorithm: base64Encode( cipher( TABLENAME + PK + ACCESS_CONTROL+ MESSAGE_DIGEST)) • base64Encode function: converts binary to text for transport in JSON. • ciper function: performs strong encryption using a private key
  • 23. Anatomy of the SURID • TABLENAME: the name of the table from which the row data was retrieved (in the case of data joined from multiple tables, multiple SURIDs are returned) • PK: the actual primary key of the data • ACCESS_CONTROL: dynamically generated rules which define if UPDATE or DELETE operations can be applied to data identified by a SURID • MESSAGE_DIGEST: SHA-1 or MD5 digest (detects tampering)
  • 24. Example using SURID Considering the following rules for a hypothetical application: 1. A user may query his account profile 2. A user may update his account profile 3. A user may NOT delete his account profile
  • 25. Dialog Between AJAX/RIA and DaaS AJAX/RIA: quot;give me the ACCOUNT row and SURID for jdoe/abc123quot; DaaS:quot;here is the JSON for this USER {nickName:quot;john doequot;, userName:quot;jdoequot;, email:quot;jdoe234@gmail.comquot; PK:quot;dj38f3cvcvrn3z4egr434b469rtg3sss3rewesquot;}quot; AJAX/RIA: quot;UPDATE the nickName column to quot;johnnyBoyquot; for PK:dj38f3cvcvrn3z4egr434b469rtg3sss3rewesquot; DaaS: I decrypted the SURID and checked its digest. It is valid, and its ACCESS_CONTROL allows UPDATE. I will perform the requested operation.
  • 26. Moving from dialog to actual JS code var connection = new net.nextdb.Connection(quot;anAcctquot;, quot;aDBquot;); var query = new net.nextdb.Query(quot;loginquot;); query.params = {name:quot;jdoequot;, pwd=quot;abc123quot;}; connection.executeQuery(q, function(rows, error){ alert(quot;login succeeded.quot;); var update = new net.nextdb.Update(quot;USER_TABLEquot;); update.setParameters(nickname:quot;johnnyboyquot;); update.setRowId(rows[0].TABLE1.PK);//use SURID conn.executeUpdate(update, function(key,error){ alert(quot;update succeededquot;); }); });
  • 27. Important! In the previous code snippet, there is NO serverside code needed. the SURID moves freely over the web, exchanged back and forth between the AJAX app and the Daas without compromising security.
  • 28. Security Hole? What prevents a hacker from inserting this code with a debugger and violating rule 3, quot;A user may NOT delete his account profilequot;? var del = new net.nextdb.Delete(quot;USER_TABLE); del.setRowId(rows[0].TABLE1.PK); connection.executeDelete(del, function(key, error){ if( ! error){ alert(quot;My hack worked! I broke the rules!quot;); }else{ alert(quot;My hack failed.quot;); } });
  • 29. SURID Access Control The ACCESS_CONTROL bits encoded in a SURID are set dynamically when the query executes. a query named quot;PRIVATE_ACCOUNT_ACCESSquot; might be parameterized with a username and password, and write FOR UPDATE into the ACCESS_CONTROL bits. a query named quot;PUBLIC_ACCOUNT_VIEWquot; would not be parameterized with username and password, but would NOT set the FOR UPDATE or FOR DELETE access control bits. Conclusion: SURID allows the query to specify the security model for results returned from the query.
  • 30. What has characterized the architecture of database computing CLIENT/SERVER Irony: why can't the client be web based? Who says the client has to be a LAN client?
  • 31. Let's look at some tools and live demos
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. Concluding remarks 1. What are today's options for cloud databases, and why can't they be easily accessed by pure JavaScript APIs? o today's cloud databases cannot be accessed from AJAX API's. 2. What are the gaps between the Web 1.0 database security model, and the unforgiving JavaScript environment? o The RDBMS security model cannot be applied to AJAX. 3. How can we create a new AJAX/RIA security paradigm for Database as a Service (DaaS)? o Introducing a paradigm shift in the security model, which is the goal of the NextDB.net project.