Sunday, May 20, 2012

Security: PCI Compliance

The Payment Card Industry Data Security Standard (PCI DSS) is a set of requirements designed to ensure that all companies that process, store or transmit credit card information maintain a secure environment.


Merchant levels as defined by Visa:
1: Any merchant processing over 6M Visa transactions per year
2: Any merchant processing 1M to 6M Visa transactions per year.
3: Any merchant processing 20,000 to 1M Visa e-commerce transactions per year.
4: Any merchant processing fewer than 20,000 Visa e-commerce transactions per year and other merchants processing up to 1M Visa transactions per year


Best Practices
·       Process transactions immediately online or hand off the processing to your bank
·       Do not store any CC numbers, ever. If they must be stored, you must follow the PCI guidelines to the letter. 
·       If you are using a shared host for your site, you cannot comply with the PCI guidelines. You must have your own infrastructure to comply with the PCI guidelines.

If you do end up storing CC numbers:
  • Encrypt them.
  • follow merchant agreement.
  • for recurring payments, limit term to 1 year.
Other considerations:
  • PCI only allows presentation of first six ( the BIN) or last four digits.
  • Must nore store CCV etc.
  • Must patch system within 1 month of a patch becoming available.
  • reversals should be signed off by two distinct employees.
12 requirements of PCI-DSS if you are going to handle credit cards:


Build and maintain a secure network

  • Install and maintain a firewall configuration to protect data

  • Do not use vendor-supplied defaults for system passwords and other security parameters
Protect Cardholder Data
  • Protect stored data

  • Encrypt transmission of cardholder data and sensitive information across public networks
Maintain a Vulnerability Management Program
  • Use and regularly update anti-virus software

  • Develop and maintain secure systems and applications
Implement Strong Access Control Measures
  • Restrict access to data by business need-to-know

  • Assign a unique ID to each person with computer access

  • Restrict physical access to cardholder data
Regularly Monitor and Test Networks
  • Track and monitor all access to network resources and cardholder data

  • Regularly test security systems and processes
Maintain an Information Security Policy


  • Maintain a policy that addresses information security

PA-DSS Summary

  • Do not retain full magnetic stripe, card verification code or value (CAV2, CID, CVC2, CVV2), or PIN block data
  • Protect stored cardholder data 
  • Provide secure authentication features
  • Log payment application activity 
  • Develop secure payment applications  
  • Protect wireless transmissions  
  • Test payment applications to address vulnerabilities  
  • Facilitate secure network implementation  
  • Cardholder data must never be stored on a server connected to the Internet  
  • Facilitate secure remote access to payment application  
  • Encrypt sensitive traffic over public networks  
  • Encrypt all non-console administrative access  
  • Maintain instructional documentation and training programs for customers, resellers, and integrators

Sunday, May 6, 2012

Sarbanes Oxley (SOX)



SOX affects information security and the below are two specific sections of the act:

section 302: Corporate responsibility for financial reports

Section 302 states that the Chief Executive Officer (CEO) and Chief Financial  Officer (CFO) must personally certify that financial reports are accurate and complete. They must also assess and report on the effectiveness of internal controls around financial reporting.


section 404: Management assessment of internal controls


Section 404 states that a corporation must assess the effectiveness of its internal controls and report this assessment annually to the SEC. The assessment must
also be reviewed and judged by an outside auditing firm.


Public Company Accounting Oversight Board (PCAOB)

The role of PCOAB is to oversee and guide auditors as they assess a company’s compliance with SOX.
"Proposed Auditing Standards" provide more detailed guidance for assessing compliance with the intent of SOX. information technology (IT) general controls form the foundation for many other types of financial reporting controls and, therefore, must be assessed for SOX.

COSO & COBIT

For the purpose of internal control guidance, PCAOB has selected a control
framework created by the Committee of Sponsoring Organizations (COSO). The
COSO framework provides a structured and comprehensive set of guidelines for
creating and implementing internal controls.

The Information Technology Governance Institute (ITGI) is a group created to assist corporations with governing their IT and ensuring IT efficiently supports business mission and goals. ITGI has used COSO and COBIT to create a set of specific IT control objectives for SOX.

references

http://pcaobus.org

http://www.coso.org/default.htm
http://www.isaca.org/




Sunday, April 22, 2012

Threat Modelling




OWASP recognizes that the adoption of a Microsoft modeling process may be a controversial choice in some organizations. If STRIDE / DREAD is unacceptable due to unfounded prejudice, we recommend that every organization trial the various threat models against an existing application or design. This will allow the organization to determine which approach works best for them, and adopt the most appropriate threat modeling tools for their organization.
Performing threat modeling provides a far greater return than any control in this Guide. It is vital that threat modeling takes place.
Trike is a threat modeling framework with similarities to the Microsoft threat model process. However, Trike is differentiated by using a risk based approach with distinct implementation, threat and risk models, instead of using a mixed threat model (attacks, threats, and weaknesses) as represented by STRIDE / DREAD.
From the Trike paper, Trike aims to:
With assistance from the system stakeholders, ensure that the risk this system entails to each asset is acceptable to all stakeholders.
Be able to tell whether we have done this.
Communicate what we’ve done and its effects to the stakeholders.
Empower stakeholders to understand and reduce the risks to themselves and other stakeholders implied by their actions within their domains.
For more information, please review the “Further Reading” section below. The OWASP Guide 2.1 (due November 2005) will have more details on Trike.
Australian Standard / New Zealand Standard AS/NZS 4360, first issued in 1999, is the world’s first formal standard for documenting and managing risk, and is still one of the few formal standards for managing risk. It was updated in 2004.
AS/NZS 4360’s approach is simple (it’s only 28 pages long) and flexible, and does not lock organizations into any particular method of risk management as long as the risk management fulfils the AS/NZS 4360 five steps. It provides several sets of risk tables and allows organizations to adopt their own.
The five major components of AS/NZS 4360’s iterative approach are:
Establish the context – establish what is to be risk treated, i.e. which assets / systems are important
Identify the risks – within the systems to be treated, what risks are apparent?
Analyze the risks – look at the risks and determine if there are any supporting controls
Evaluate the risks – determine the residual risk
Treat the risks – describe the method to treat the risks so that risks selected by the business can be mitigated.
AS/NZS 4360 assumes that risk will be managed by an operational risk style of group, and that the organization has adequate skills in house, and risk management groups to identify, analyze, and treat the risks.

Why you would use AS/NZS 4360:
AS/NZS 4360 works well as a risk management methodology for organizations requiring Sarbanes-Oxley compliance.
AS/NZS 4360 works well for organizations that prefer to manage risks in a traditional way, such as using just likelihood and consequence to determine an overall risk.
AS/NZS 4360 is familiar to most risk managers worldwide, and your organization may already have implemented an AS 4360 compatible approach
You are an Australian organization, and thus may be required to use it if you are audited externally on a regular basis, or justify why you are not using it. Luckily, the STRIDE / DREAD model referred to above is AS/NZS 4360 compatible.
Why you would not use AS/NZS 4360:
AS/NZS 4360’s approach works far better for business or systemic risks than technical risks
AS/NZS 4360 does not discuss methods to perform a structured threat risk modeling exercise
As AS/NZS 4360 is a generic framework for managing risk, it does not provide any structured method to enumerate web application security risks.
Although AS 4360 can be used to rank risks for security reviews, the lack of structured methods of enumerating threats for web applications makes it less desirable than other methods.
The US Department of Homeland Security (DHS) established the NIAC Vulnerability Disclosure Working Group, which incorporates input from Cisco, Symantec, ISS, Qualys, Microsoft, CERT/CC, and eBay. One of the outputs of this group is the Common Vulnerability Scoring System (CVSS).
Why you would use CVSS:
You have just received notification from a security researcher or other source that your product has a vulnerability, and you wish to ensure that it has a trustworthy severity rating so as to alert your users to the appropriate level of action required when you release the patch
You are a security researcher, and have found several exploits for a program. You would like to use the CVSS ranking system to produce reliable risk rankings, to ensure that the ISV will take the exploits seriously as compared to their rating.
The use of CVSS is recommended for use by US government departments by the working group – it is unclear if this is policy at the time of writing.
Why you would not use CVSS:
CVSS does not find or reduce attack surface area (i.e. design flaws), nor help enumerate possible risks from any arbitrary piece of code as it is not designed for that purpose.
CVSS is more complex than STRIDE / DREAD, as it aims to model the risk of announced vulnerabilities as applied to released software.
CVSS risk ranking is complex – a spreadsheet is required to calculate the risks as the assumption behind CVSS is that a single risk has been announced, or a worm or Trojan has been released targeting a small number of attack vectors.
The overhead of calculating the CVSS risk ranking is quite high if applied to a thorough code review, which may have 250 or more threats to rank.
Octave is a heavyweight risk Methodology approach from CMU’s Software Engineering Institute in collaboration with CERT. OCTAVE is targeted not at technical risk, but organizational risk.
OCTAVE consists of two versions: OCTAVE – for large organizations and OCTAVE-S for small organizations, both of which have catalogs of practices, profiles, and worksheets to document the OCTAVE outcomes. OCTAVE is popular with many sites.
OCTAVE is useful when:
Implementing a culture of risk management and control within an organization
Documenting and measuring business risk
Documenting and measuring overall IT security risk, particularly as it relates to whole of company IT risk management
Documenting risks surrounding complete systems
When an organization is mature, does not have a working risk methodology in place, and requires a robust risk management framework to be put in place
The downsides of Octave are:
OCTAVE is incompatible with AS 4360, as it forces Likelihood=1 (i.e. a threat will always occur). This is also inappropriate for many organizations. OCTAVE-S has an optional inclusion of probability, but this is not part of OCTAVE.
Consisting of 18 volumes, OCTAVE is large and complex, with many worksheets and practices to implement
It does not provide a list of out of the box practices for web application security risks
OWASP does not expect OCTAVE to be used by designers or developers of applications, and thus it misses the raison d’ĂȘtre of threat modeling – which is to be used during all stages of development by all participants to reduce the risk of the application becoming vulnerable to attack.

Comparing threat modeling approaches
Here is how roughly the CVSS measures up to STRIDE / DREAD:
Metric
Attribute
Description
Closest STRIDE / DREAD
CVSS Base Metrics
Access vector
Local or remote access?
~ Exploitability
CVSS Base Metrics
Access complexity
How hard to reproduce the exploit
Reproducibility
CVSS Base Metrics
Authentication
Anonymous or authenticated?
~ Exploitability
CVSS Base Metrics
Confidentiality impact
Impact of confidentiality breach
Information Disclosure
CVSS Base Metrics
Integrity impact
Impact of integrity breach
Tampering
CVSS Base Metrics
Availability impact
Impact of system availability breach
Denial of Service
CVSS Base Metrics
Impact bias
Bias equal for CIA, or biased towards one or more of CIA?
No equivalent
CVSS Temporal
Exploitability
How easy is the breach to exploit?
Exploitability
CVSS Temporal
Remediation Level
Is a fix available?
No equivalent
CVSS Temporal
Report confidence
How reliable is the original report of the vulnerability?
No equivalent
CVSS Environmental
Collateral Damage
How bad is the damage if the threat were realized?
Damage potential
CVSS Environmental
Target Distribution
How many servers are affected if the threat were realized?
Affected users (not directly equivalent)

Alternatively, here is how STRIDE / DREAD map to CVSS:
STRIDE attribute
Description
Closest CVSS attribute
Spoofing identity
How can users obviate controls to become another user or act as another user?
No direct equivalent
Tampering with data
Can data be tampered with by an attacker to get the application to obviate security controls or take over the underlying systems (eg SQL injections)
Integrity
Repudiation
Can users reject transactions due to a lack of traceability within the application?
No direct equivalent
Information disclosure
Can authorization controls be obviated which would then lead to sensitive information being exposed which should not be?
Confidentiality
Denial of service
Can an attacker prevent authorized users from accessing the system?
Availability
Elevation of privilege
Can an anonymous attacker become a user, or an authenticated user act as an administrator or otherwise change to a more privileged role?
No direct equivalent

DREAD attribute
Description … if the threat is realized
Closest CVSS attribute
Damage potential
What damage may occur?
Collateral damage
Reproducibility
How easy is it for a potential attack to work?
~ Access complexity
Exploitability
What do you need (effort, expertise) to make the attack work?
Exploitability
Affected users
How many users would be affected by the attack?
Target distribution
Discoverability
How easy is for it attackers to discover the issue?
No direct equivalent

In general, CVSS is useful for released software and the number of realized vulnerabilities is small. CVSS should produce similar risk rankings regardless of reviewer, but many of the biases built into the overall risk calculation are subjective (i.e. local and remote or which aspect of the application is more important), and thus there may disagreement of the resulting risk ranking.
STRIDE/DREAD is useful to reduce attack surface area, improve design, and eliminate vulnerabilities before they are released. It can also be used by reviewers to rank and enumerate threats in a structured way, and produce similar risk rankings regardless of reviewer.

In the few previous pages, we have touched on the basic principles of web application security. Applications that honor the underlying intent of these principles will be more secure than their counterparts who are minimally compliant with specific controls mentioned later in this Guide. 


Saturday, January 28, 2012

Apache CXF WS-Security, WS-policy links

I will come up with a brief post on how to achieve a basic "customizable" web service client that can understand ws-policy, ws-security to interact with a web server. Also it will cover how to customize the signature process etc.

A few links I find useful....
http://www.jroller.com/gmazza/entry/web_service_links_4_december

http://peterarockiaraj.wordpress.com/2009/09/04/developing-cxf-ws-security-with-signaturecertificates/

http://distributedsenses.blogspot.com/2008/09/configuring-cxf-for-web-service.html

Open source security( has useful posts on WS-Trust, STS, CXF etc):
http://coheigea.blogspot.com/

another one:
http://www.dankulp.com/blog/ 


Saturday, January 14, 2012

Do we need software architects?

I have been thinking about finding the answer to this question ever since someone in my organization remarked, "aren't we all architects?" Not that I principally disagree with that statement, I don't think all of us can be effective architects. There is definitely a need to have specialized architects but what exactly are those needs?

Here are a few:

Without an architect, the project doesn't choose the best solution. 

Purely from a software development point of view, our main desire is to get things "working". The thought always is to have something working which we can later refine. While, this could  be a very good way to begin things, the problem is that we usually end up not wanting to change that initial implementation because it's too disruptive.

Since Architects (usually) don't have the immediate task to code, they come up with the best solution with the sole aim that the solution in itself is the best one and not necessarily because it can be coded by someone in the team. This sometimes does lead to a problem where the solution is too abstract or is simply not feasible but that can be discovered early by enforcing a tighter working relationship between the architect and the programmer.

Without an architect, the project lacks technical innovation. 

This is highly subjective but most architects I know are always up to date with the latest technology and have a desire to use that technology to solve the particular problem that the technology was intended to solve. Without an architect,:

  • you either don't have someone that well informed 
  • or you don't understand what the exact problem that can be solved by a particular technology 
  • or you don't know how to use a particular technology to solve future problems.


Without an architect, the product/project is not future proof.

Architects bring a lot to the table but if a product/project doesn't have an architect(let's say has a lot of senior developers), then in most cases they wouldn't even know what they are missing. As per the team the development is going as per plan, they are progressing and the milestones are being met.

The problem is discovering (hopefully early) that the product/project

  • is too rigid
  • lacks adequate support for non-functional requirements
  • progressively becomes harder to implement complex features
  • discovering problems becomes very difficult. 

This probably summarizes my main points and being an architect, gives me some satisfaction....

Saturday, December 31, 2011

SaaS (Software as a Service) and Multi-Tenancy

SaaS
SaaS can be defined as:
"software deployed as a hosted service and provided over the internet". 


   It is becoming an increasingly popular word, one that Software Vendors can ill-afford to ignore. It is opening up markets and segments that were previously inaccessible to vendors but it is also throwing up challenges like never before. 
    SaaS allows an application to scale to (theoretically) unlimited number of customers. It is typically achieved by on-demand horizontal and vertical scaling behind the scenes to provide a seamless experience to the user. 
    The practice of Application architecture has to adjust to account for SaaS and to Architect and Design applications for SaaS. Support for Multi-Tenancy is the approach some SaaS vendors follow to effectively address the SaaS challenges and this article will attempt to address the different aspects of Multi-Tenancy. So...


What is Multi-Tenancy
Multitenancy refers to a principle in software architecture where a single instance of the software runs on a server, serving multiple client organizations (tenants).


Why Multi-tenancy?
  • Great and Easy deployment. There is a single system to manage.
  • Cost savings associated with less hardware(or Virtualized Hardware)
  • Less software licenses to buy.

Multi-Tenancy Issues
  • Security testing has to be extensively done.
  • Expensive hardware to buy. Increased cost associated with big rack hardware.
  • Not easy to convert an existing application/software to Multi-tenant. 
  • Requires schema change to existing apps. 
  • Pure Multi-tenancy requires applications and infrastructure to scale-up to address demand.
  • Single point of failure issues. Which is the weakest link?
  • Multiple tenant metadata is difficult to manage.
  • Down time issues. What happens if the Database has to be brought down for maintenance?
  • Access control. This could be managed and configured at diff customers and less control over issues surrounding this.
  • Extensions to data model are tricky and sometimes impact all customers.
  • What about architecture that relies on communication between components in SaaS world and ones behind the firewall ?

Muti-tenancy versus Virtualization
Virtualization to a limited extent seems to be a good alternative for Multi-tenancy. However there are drawbacks. Would virtualization be profitable if there were 1000 customers deployments? How would you deploy and manage such an environment? Also what would we do if the Customers are "on-demand"? Which means they may want to use the system for brief periods of time and then be gone for days/weeks/months. How do you keep a Virtualization solution profitable?


But this is not to say that it just can't be done profitably. There are solutions out there that are using Virtualization to achieve Multi-Tenancy especially If the customer deployments are in single or very low double digits.Virtualization might (better) provide the following benefits:

  • Data Isolation.
  • Security. Both at the PaaS layer and at the Virtualized layer.
  • Performance ( one client can't directly impact the other's performance).

Designing for Multi-tenancy


Key points of Multi-Tenancy
  • Flexibility
  • Share-ability
  • Maintainability
  • Customizability

Architectural Constraints
  • Maintain a single code base to ease deployments and upgrades.
  • Share the data resources to have a consistent view of the Schema.
  • Components must be customizable at every possible level.
  • The Application Tier must be as stateless as possible to allow Scalability.

Trade offs
  • Complexity versus Time to market. What do the customers want and when?
  • Resource sharing vs Security/Availability. Who is my customer? Legal or SLA considerations?
  • Customize-ability vs Maintainability. A myriad of customizable options. Which one was chosen when this issue occurred? How do we fix this without affecting everyone else?

Interfaces
Multi-Tenant applications should expose (and consume) standard based interfaces like
  • REST
  • WS-*
Configurable
The application has to be configurable. In a traditional MVC style of application, the following would have to be extensively configurable:
Model: Allow schema extensions.
Controller: Allow new business logic to be plugged in or existing ones to be enhanced. Allow modification/customization of security policy.
View: Allow look and feel changes, changing of display items, screen order, messages etc. This does assume that there is a metadata somewhere that allows the configuration options and allows the particular view to be "instantiated" based on the metadata.



Security
Security includes, secure the SaaS model as whole and has an application level security architecture and a Data level security architecture. Data level Security is addressed in the next section. Application level security could involve either storing all user accounts with the SaaS provider and/or federating authentication to  trusted STSs ( Security Token Services) or trusted Identity Providers.
The SaaS application can also provide configurable Identity Management modules that either do the authentication/authorization themselves or federate as noted above. If the Authentication is federated, then we need some kind of a mapping service to map roles from Trusted servers to the roles/policies defined in the SaaS application.


Multi-Tenant Data Architecture
  • Separate Database 
    • Easy to Maintain
    • Customizable ( with probable issues later on)
    • Secure
    • Upgradable
    • Higher costs
  • Shared Database with separate Schema
    • Easier to Maintain
    • Customizable ( with probable issues later on)
    • More Secure
    • Upgradable but complex
    • lower costs
  • (Truly) Shared Database. This is the ideal scenario and the one most touted by purists. However the risk is that the different tenant data could inadvertently be mixed resulting in legal, compliance or contract issues. Also there are issues around Database sizes and multiple strategies including Partitioning and Segmentation have to be used to manage the Database. We won't go into details as there is more than adequate literature around these topics.
    • Complex Upgrade process
    • Impacts Multiple customers
    • Data Security at Data Access Layer.
    • Low Cost ( not assuming cost of design, development etc).


Which approach to choose?
Chose the Shared Database option if the number of tenants are higher to justify initial investment. However if number of users per tenant or database size per tenant or per tenant customizations are greater then choose the isolated model. 



Data-Security
Security strategies for shared database could include having views that filter the data visible to a tenant, using access control to the database itself and encryption at the data layer ( decryption at the DAC using tenant specific keys). 

Data-Extensibility
Multiple options are available including using name-value pairs to store data. Traditional data-extensibility approaches include have predefined fields and allowing extensions through metadata tables.

Data-Scalability
Data partitioning as noted in the above sections can aid in horizontal scaling of the Database.



Refer Multi-Tenant Data Architecture for further details.


Conclusion
Achieving the most optimum "degree" of multi-tenancy is something that the organization has to strive for. It could start with the Multi-Tenancy at the Infrastructure layer (IaaS), and the Platform layer (PaaS), move on to SaaS clusters that can provide some degree of Multi-Tenancy and then finally move on to the complete Multi-Tenancy at the Software layer (SaaS). 


Resources
  1. Wikipedia- Multitenancy
  2. Many degrees of Multi-tenancy is an excellent blog post that outlines the current debate and approaches for Multi-tenancy. 
  3. Multi-Tenant Data Architecture is an excellant resource that talks about Data design patterns for Multi-Tenancy.
The opinions and statements in this communication are my own and do not necessarily reflect the opinions or policies of CA.

Saturday, December 10, 2011

Cloud Computing

OK. I made up my mind. Let's cover Cloud Computing before we talk about SaaS and Multi-Tenancy.


Maybe explaining the below terms will be better than trying to come up with a technical definition of cloud Computing.


IaaS(Infrastructure as a Service)
IaaS provides data center, infrastructure hardware and software services over the web. One example is Amazon EC2. This is probably the most dominant form of Cloud Computing that we see today.


PaaS ( Platform as a Service)
PaaS is the next level of abstraction and provides the platform to build software services or products. For instance it may provide a Database, Web Server etc. Example is Salesforce.com's force.com.


SaaS (Software as a Service)
In SaaS, applications are provided as hosted services over the web.Probably the most widely used model of Cloud Computing.


So you could define Cloud Computing as "some service provided over the internet". It could be a computer server, a virtual server, a pre-configured OS, a hosted environment(Middleware), web based apps ( Google Apps), Web Services (Gmail ) etc. The three characteristics of a cloud service are:

  • Elasticity
  • Self-Service access
  • Quick response.

Cloud Computing versus Grid Computing
Grid Computing typically relies on a batch scheduling mechanism to fan-out the task to multiple nodes and then accumulate the results. So Grid computing doesn't necessarily deal with getting processing capacity right now and instead focuses on some mechanism that is predefined and allows the "batch-job" to schedule jobs across these Grid nodes.


One could argue that Cloud Computing is more evolved version of Grid Computing, Virtualization is important for Cloud Computing because it is on-demand and is a key difference versus Grid Computing. However there are ways of achieving this by using Multi-Tenancy (Salesforce.com?) without Virtualization and we need to talk about those reference models.


If I haven't confused you already, then let me try some more. What about Grid Computing that is available in the Cloud? :-)


Public, Private, Hybrid and Community Clouds
Location is not important here but the ownership is. Who "owns" the facility? If the facility is shared by multiple public clients then it's a public cloud. If the facility is co-located within the enterprise ( it could be managed by a third party provider) then it's a private cloud. Hybrid clouds, ofcourse combine elements from both public and private clouds. Community clouds have multiple owners and are shared across those communities.



Cloud Computing benefits
Faster processing by making use of better/faster infrastructure available at much cheaper rates.
Minimize infrastructure bottlenecks by delegating the scalability and on-demand handling to the provider.
Low barrier to entry by allowing SMBs to participate in provinding solutions irrespective of the size of their data center.


In spite of the benefits, we do have to consider the network bandwidth requirements forced by servicing clients. Is it sufficient to meet the clients demands? What is the latency?



So, how do you use the Cloud?
OCCI is working towards standardizing the "API" to access the cloud but unfortunately, it is not completely implemented at vendors yet. Not sure if the major vendors like Amazon and SalesForce.com are part of it, so Customers hoping for interoperability between cloud providers will be disappointed. However it is still a useful resource to keep track of.


Architecture specific focus


Application architectures now have to consider a few extra things in addition to traditional issues such loose-coupling, distributed deployment. They now have to focus on delivering the entire application architecture as a set of composable services. If it can be virtualized, composed and assembled programmatically and quickly then it falls into the perfect category of Cloud applications.


The following are key for successful cloud applications:
Horizontal Scaling is the key to having a successful cloud application. If we can deploy the application components in a distributed fashion and provision additional deployments if the demand increases, we would be able to serve additional requests. Surge computing can be utilized as well to procure the computing needs from public clouds in case we are running in a private one. Horizontal scaling assumes we have Parallelization at some level. Without Parallelization, the nodes would depend on each other or on some other common service which would become the bottleneck.


Security, Compliance are important topics that we can't cover in detail in this post but should be handled in any cloud architecture. Concern or doubts regarding these two are perhaps the main reason why cloud is not adopted in large corporations. They deserve a separate and a detailed post.



IBM cloud reference architecture
Not sure how much detail I would be able to go into but the majority of "fluff" around the IBM cloud reference architecture can be ignored. Most enterprises don't embark on providing IaaS, PaaS and SaaS in the same breath. It's mostly a business decision and what makes economic sense. However, here is what you can take away from it:


Common Cloud Management Platform (CCMP) consists of Operational Support Services (OSS) and Business Support Services (BSS)

  • Business Support Services represents the business-related services involving pricing, metering, billing, account etc
  • Operational Support Services represents the technical-related services involving, provisioning, Ticket Management, Virtualization Management etc.

Qos (Quality of Service) in CCRA
The non-functional aspects like Security, Resiliency, Performance & Consumability are cross-cutting aspects of QoS spanning the hardware infrastructure and Cloud Services and must be viewed from an end-to-end perspective including the structure of CCRA by itself, the way the hardware infrastructure is set up (e.g., in terms of isolation, disaster recovery, etc.) and how the cloud services are implemented. The major aspects of QoS are:
  • Governance and Policy.
  • Threat and Vulnerability Management
  • Data Protection
  • Availability & Continuity Management
  • Ease of doing business
  • Simplified Operations

Summary

  • It's a starting point. If Cloud Architecture seems daunting then this is a good starting point.
  • It's a good "best practices" document. It does define the collective experience of IBM experiences across various cloud solutions. There's got to be something useful here. :-)
  • It does define four architectural principles(referred as ELEG) of which atleast three seem to of value.


    • Efficiency. Basically means we need to increase utilization of cloud services.
    • Lightweightness. Basically use some form of Virtualization or other technique to avoid "heavy" management of IT. 
    • Economies of Scale. The idea is to have common management services that can be shared across cloud flavors.
    • Genericity. No clue what the message here was! Please read the document and help me! :-) 

Three and Four seem similar and not sure what the differentiating factors are. Maybe we need to get some kind of context around the IBM doc to fully appreciate the message because it will come up in discussions and it will be important to explain the best points of this and avoid the unnecessary details. I think I will get back to this someday...


There are other Reference models out there. NIST has one and so does DMTF. Again, I will get to them someday... :-)