**Editor’s Note: For Part I of this article, please click here: http://www.ebizq.net/hot_topics/soa/features/6535.html
Routing: ESB Security at the Transport Layer
The ESB has the responsibility to preserve the transport layer security of an incoming message. It follows that in cases where the threats to the ESB are from unauthorized access only, it may mean that the ESB does not do any additional security processing on an incoming request. In other cases the ESB may offer a mediation which validates that the transport protocol underneath the request is part of a trust relationship. Included in this level of mediation are “typical” transport layer security techniques such as virtual private networks (VPNs) and (mutually authenticated) SSL used to validate the trust relationship between invoker and service. The ESB, as a trusted component within a service-oriented architecture, then must be able to provide transport layer security, and establish a trust relationship, between the origin of the request and the ESB entry point for services.
Allowing the ESB node to mediate transport level security and trust relationships establishes the ESB as a component in the security model. The ESB then supplies a service, that brokers or mediates security for all the services on the bus, removing the need for each service to independently manage and evaluate trust relationships with every possible service invoker.
ESB Security at the Message Layer
As part of the routing of a message, an ESB can offer an additional mediation that will ensure that messages are routed to trusted (or un-trusted) endpoints as required. This level of security may be very coarse-grained, meaning that all requests associated with a particular trust relationship (transport level security evaluation) are routed to service instance A. This ESB-brokered message level security may be very fine-grained, meaning that a request is routed to service instance A if the requestor, acting within a trust relationship, has attributes X and Y and to service instance B if the requestor has attribute Z, or to service instance C if the request is for a operation Q.
Fine-grained security requires that the ESB be able to provide identification and authentication services beyond the transport layer. Recall that techniques such as mutually authenticated SSL can be used to authenticate a requestor at the transport level. This is typically associated with the component that has negotiated the SSL, where this component is typically an edge component at a partner’s site. This transport layer security may be applied to many requests, including requests by many different requestors. Fine-grained security requires that the ESB be able to differentiate the requestors within a trust relationship. This level of differentiation is typically provided through the inclusion of security tokens that refer to the explicit requestor and that bind that requestor to the request itself.