Nothing Is Permanent Except Change - How Software Architects Can Embrace Change
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
![]()
Posted by Subra Kumaraswamy on Dec 07, 2011
Cloud application developers and devops have been successfully developing applications for IaaS (Amazon AWS, Rackspace, etc) and PaaS (Azure, Google App Engine, Cloud Foundry) platforms. These platforms provide basic security features including support for authentication, DoS attack mitigation, firewall policy management, logging, basic user and profile management but security concerns continue to be the number one barrier for enterprise cloud adoption. Cloud security concerns range from securely configuring virtual machines deployed on an IaaS platform to managing user privileges in a PaaS cloud.
Given that the cloud services can be delivered in many flavors i.e. in any combination of service delivery models, SaaS, PaaS and IaaS (SPI), and operational models, public, private and hybrid, the cloud security concerns and solutions are context (pattern) dependent. Hence, the solution architecture should match these concerns and build security safeguards (controls) into the cloud application architecture.
So what are the architectural frameworks and tools that cloud application architects and devops have at their disposal when developing applications for IaaS and PaaS platforms? In this article, I’ll discuss the approach to baking “adequate” security into your application deployed in IaaS and PaaS clouds .
First, let’s talk about the cloud security operational model. By definition, cloud security responsibilities in a public cloud are shared between the cloud customer (your enterprise) and the cloud service provider where as in a private cloud, the customer is managing all aspects of the cloud platform. Cloud service providers are responsible for securing the shared infrastructure including routers, switches, load balancers, firewalls, hypervisors, storage networks, management consoles, DNS, directory services and cloud API.
The figure below highlights the layers, within a cloud service, that are secured by the provider versus the customer.
(Click on the image to enlarge it)
Prior to signing up with a provider, it is important to perform a gap analysis on the cloud service capabilities. This exercise should benchmark the cloud platform’s maturity, transparency, compliance with enterprise security standards (e.g. ISO 27001) and regulatory standards such as PCI DSS, HIPAA and SOX. Cloud security maturity models can help accelerate the migration strategy of applications to the cloud. The following are a set of principles you can apply when evaluating a cloud service provider’s security maturity:
Does cloud computing exacerbate security threats to your application? Which emerging threats are relevant? Which traditional threats are amplified or muted? Answers to these questions are dependent on the combination of cloud service deployment and operational models in play. The following table illustrates the dependencies which should be taken into consideration when architecting security controls into applications for cloud deployments:
|
|
Public/Hybrid Cloud -Threats |
Private Cloud -Threats |
Mitigation |
|
IaaS |
· OWASP Top 10 · Data leakage (inadequate ACL) · Privilege escalation via management console misconfiguration · Exploiting VM weakness · DoS attack via API · Weak protection of privileged keys · VM Isolation failure |
· OWASP Top 10 · Data theft (insiders) · Privilege escalation via management console misconfiguration |
· Testing apps and API for OWASP Top 10 vulnerabilities · Hardening of VM image · Security controls including encryption, multi-factor authentication, fine granular authorization, logging · Security automation - Automatic provisioning of firewall policies, privileged accounts, DNS, application identity (see patterns below) |
|
PaaS |
[In addition to the above] · Privilege escalation via API · Authorization weakness in platform services such as Message Queue, NoSQL, Blob services · Vulnerabilities in the run time engine resulting in tenant isolation failure |
[In addition to the above] · Privilege escalation via API |
In addition to the aforementioned threats to information confidentiality and integrity, threats to service availability need to be factored into the design. Please remember that the basic tenets of security architecture are the design controls that protect confidentiality, integrity and availability (CIA) of information and services.
Threat to cloud service availability - Cloud services (SaaS, PaaS, IaaS) can be disrupted by DDoS attacks or misconfiguration errors by cloud service operators or customers. These errors have the potential to cascade across the cloud and disrupt the network, systems and storage hosting cloud applications. To achieve continuously availability, cloud applications should be architected to withstand disruptions to shared infrastructure located within a data center or a geographic region. This vulnerability is best illustrated by the recent Amazon outage when Elastic Block Storage (EBS) brought down customer applications deployed within a single availability zone in US east region. However, applications that were architected to tolerate faults within a region were largely shielded from this outage and continued to be available to the users. As a design principle, assume everything will fail in cloud and design for failure. Applications should withstand underlying physical hardware failure as well as service disruption within a geographic region. Loose coupling of applications and components can help in the latter case.
As a first step, architects need to understand what security capabilities are offered by cloud platforms (PaaS, IaaS). The figure below illustrates the architecture for building security into cloud services.
(Click on the image to enlarge it)
Security offerings and capabilities continue to evolve and vary between cloud providers. Hence you will often discover that security mechanisms such as key management and data encryption will not be available. For example: the need for a AES 128 bit encryption service for encrypting security artifacts and keys escrowed to a key management service. For such critical services, one will continue to rely on internal security services. A “Hybrid cloud” deployment architecture pattern may be the only viable option for such applications that dependent on internal services. Another common use case is Single Sign-On (SSO). SSO implemented within an enterprise may not be extensible to the cloud application unless it is a federation architecture using SAML 1.1 or 2.0 supported by the cloud service provider.
The following are cloud security best practices to mitigate risks to cloud services:
Every enterprise has different levels of risk tolerance and this is demonstrated by the product development culture, new technology adoption, IT service delivery models, technology strategy, and investments made in the area of security tools and capabilities. When a business unit within an enterprise decides to leverage SaaS for business benefits, the technology architecture should lend itself to support that model. Additionally the security architecture should be aligned with the technology architecture and principles. Following is a sample of cloud security principles that an enterprise security architect needs to consider and customize:
Architecting appropriate security controls that protect the CIA of information in the cloud can mitigate cloud security threats. Security controls can be delivered as a service (Security-as-a-Service) by the provider or by the enterprise or by a 3rd party provider. Security architectural patterns are typically expressed from the point of security controls (safeguards) – technology and processes. These security controls and the service location (enterprise, cloud provider, 3rd party) should be highlighted in the security patterns.
Security architecture patterns serve as the North Star and can accelerate application migration to clouds while managing the security risks. In addition, cloud security architecture patterns should highlight the trust boundary between various services and components deployed at cloud services. These patterns should also point out standard interfaces, security protocols (SSL, TLS, IPSEC, LDAPS, SFTP, SSH, SCP, SAML, OAuth, Tacacs, OCSP, etc.) and mechanisms available for authentication, token management, authorization, encryption methods (hash, symmetric, asymmetric), encryption algorithms (Triple DES, 128-bit AES, Blowfish, RSA, etc.), security event logging, source-of-truth for policies and user attributes and coupling models (tight or loose).Finally the patterns should be leveraged to create security checklists that need to be automated by configuration management tools like puppet.
In general, patterns should highlight the following attributes (but not limited to) for each of the security services consumed by the cloud application:
Here is a subset of the cloud security architecture pattern published by open security architecture group (opensecurityarchitecturegroup.org).
(Click on the image to enlarge it)
This pattern illustrates the actors (architect, end user, business manager, IT manager), interacting with systems (end point, cloud, applications hosted on the cloud, security services) and the controls employed to protect the actors and systems (access enforcement, DoS protection, boundary protection, cryptographic key & management, etc). Let’s look at details communicated by the pattern.
As per the pattern a cloud service provider is expected to provide security controls for DoS protection and protection of confidentiality and integrity for sessions originating from Mobile as well as PC. Typically these sessions initiated by browsers or client applications and are usually delivered using SSL/TLS terminated at the load balancers managed by the cloud service provider. Cloud service providers usually don’t share the DoS protection mechanisms as hackers can easily abuse it.
Security services such as user identification, authentication, access enforcement, device identification, cryptographic services and key management can be located either with the cloud service provider, within the enterprise data center or some combination of the two.
The second pattern illustrated below is the identity and access pattern derived from the CSA identity domain.
(Click on the image to enlarge it)
This pattern illustrates a collection of common cloud access control use cases such as user registration, authentication, account provisioning, policy enforcement, logging, auditing and metering. It highlights the actors (end user, enterprise business user, third party auditor, cloud service owner) interacting with services that are hosted in the cloud, in-house (enterprise) and in third party locations.
This pattern communicates the following:
The cloud hosts the following services:
In this pattern, a subset of the applications is hosted in the enterprise:
In this pattern, cloud applications rely on identity services offered by a third party and hosted at their location. These services offer support for third party users who will need access to cloud resources to perform business functions on behalf of the enterprise. For example backup and application monitoring services. In this model, user provisioning, authentication and access enforcement functions are delegated to the third party service.
By understanding what you can leverage from your cloud platform or service provider, one can build security into your application without reinventing the capability within your application boundary thus avoiding costly “bolt-on” safeguards. A good practice is to create security principles and architectural patterns that can be leveraged in the design phase. Architectural patterns can help articulate where controls are enforced (Cloud versus third party versus enterprise) during the design phase so appropriate security controls are baked into the application design. Keep in mind the relevant threats and the principle of “risk appropriate” when creating cloud security patterns. Ultimately a cloud security architecture should support the developer’s needs to protect the confidentiality, integrity and availability of data processed and stored in the cloud.
Subra Kumaraswamy is the chief security architect for eBay and leads the team with mission of making eBay the most trusted commerce market place. Prior to joining eBay, Subra was a Security Architect for Oracle's OnDemand Platform Service. Previously, he led various security initiatives including IT identity and securing cloud services at Sun Microsystems. Subra frequently speaks on the topics of identity, cloud and mobile security and is the co-author of the O'Reilly publication "Cloud Security and Privacy - An Enterprise Perspective on Risks and Compliance". Subra is a founding member of the Cloud Security Alliance and co-chair of the Identity and Access Mgmt work group. Subra co-founded Zingdata and Coolsync Inc which were acquired by Knowledge Networks and Blink.com respectively. Subra has held leadership roles at Accenture, Netscape, Lycos and Sun Microsystems.
Subra has a Masters degree in Computer Engineering from Clemson University. Subra is CISSP and CISM certified. Twitter: @subrak
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
Alex Russell talks about the shortcomings of the web platform and how it is evolving in order to adress them. He also explains about how browsers are improving and shares his vision on things to come.
Jeff Lindsay discusses creating distributed and concurrent systems using ZeroMQ – a lightweight message queue-, and gevent – a coroutine-based networking library.
Brian Ketelsen introduces Skynet, a platform for polyglot, distributed and composable services that communicate with each other over RPC/JSON.
Carin Meier tells the story of Alice discovering Monads, meeting three types of monads – Identity, Maybe, State-, and learning how to implement them in Clojure.
The need for agile, queryable, reliable, scalable storage without the pain of SQL schema migration is real. This article uses MongoDB to introduce NoSQL concepts to Java, PHP, and Python developers.
Jérôme Giraud introduces Wink Toolkit, an open source mobile JavaScript framework for HTML5 web or hybrid apps, showing widgets and interactions.
No comments
Watch Thread Reply