Loading ...
Sorry, an error occurred while loading the content.
 

Re: [service-orientated-architecture] Todd on Governing Anonymous Service Consumers

Expand Messages
  • Todd Biske
    The actions I listed were ones that should be taken by a service provider, hence the comment about deploying on a platform that can adjust to the unknown
    Message 1 of 3 , Mar 31, 2009
      The actions I listed were ones that should be taken by a service provider, hence the comment about deploying on a platform that can adjust to the unknown demand accordingly. I agree that, in general, a service consumer should not have knowledge of the available capacity. Their concern should be that the provider actually provides the agreed level of availability (among other things) in the service contract.

      -tb

      Todd Biske
      Sent from my iPhone

      On Mar 31, 2009, at 4:24 PM, Michael Poulin <m3poulin@...> wrote:

      For last couple of years, after OASIS SOA RM identified service description and service contract, I posted a few times (even in one or two articles) the ideas very similar to Todd's ones. The only difference is that I have recognised from the beginning that service contract may be explicit and implicit. The former is a direct agreement between two or more parties performed via negotiation. The latter is agreement of one party with another party without negotiation. Example of an implicit contract is a contract with security service: if you disagree to use it, you do not get anywhere close to the service.

      For such cases, the only publicly available information about the service is the service description. This document can play the role of implicit contract for some types of services. It is usually known up-front if a service description would be used as a service contract, i.e. the description should be composed appropriately.

      Certainly, there is no absolute anonymity. Services as normal applications has to be protected from different types of attacks based on the communication channels used in the service interfaces, i.e. for Web-based interfaces - against Web and network attacks, for IIOP -based interfaces - against network attacks, and so on.

      I a little bit disagree with the words "The next thing you should do is leverage a platform with elasticity. That is, the available capacity should grow and shrink with the demand." Service consumers (demand) do not know about "available capacity", but they do know about availability. That is, a service can manage its availability to the consumers while capacity of handling different levels of availability is service internal thing. Nonetheless, I do understand what Todd said and agree with him in this too.

      - Michael


      From: Gervas Douglas <gervas.douglas@ gmail.com>
      To: service-orientated- architecture@ yahoogroups. com
      Sent: Tuesday, March 31, 2009 8:42:34 PM
      Subject: [service-orientated -architecture] Todd on Governing Anonymous Service Consumers

      <<On Friday, the SOA Chief (Tim Vibbert), Brenda Michelson, and I had a conversation on Twitter regarding SOA governance and anonymous service consumers. Specifically, how do you provide run-time governance for a service that is accessed anonymously?

      If you’ve read this blog or my book, you’ll know that my take on run-time SOA governance is the enforcement and/or monitoring of compliance with the policies contained within the service contract. Therein lies the biggest problem: if the service consumer is anonymous, is there a contract? There’s certainly the functional interface, which is part of the contract, but there isn’t any agreement on the allowed request rates, hours of usage, etc. So what do we do?

      The first thing to recognize is that while there may not be a formal contract that all consumers have agreed to, there should always be an implied contract. When two parties come to the table to establish an agreement, it’s likely that both sides comes with a contract proposal, and the final contract is a negotiation between the two. The same thing must be considered here. If someone starts using a service, they have some implicit level of service that they expect to receive. Likewise, the service provider knows both the capacity they currently can handle as well as what how they think a typical consumer will use the service. Unfortunately, these implied contracts can frequently be wrong. The advice here is that even if you are trying to lower the barrier for entry by having anonymous access, you still need to think about service contracts and design to meet some base level of availability.

      The second thing to do, which may seem obvious, is to avoid anonymous access in the first place. It’s very hard to enforce anything when you don’t know where it’s coming from. Your authorization policy can simply be that you must be an authenticated user to use the service. Even in an internal setting, having some form of identity on the message, even if there are no authentication or authorization policies, becomes critical when you’re trying to understand how the systems are interacting, perform capacity planning, and especially in a troubleshooting scenario. Even services with low barriers to entry, like the Twitter API, often require identity.

      The next thing you should do is leverage a platform with elasticity. That is, the available capacity should grow and shrink with the demand. If it’s anonymous, and new consumers can start using it simply by getting the URLs from someone else, you have no control over the rate at which usage will scale. If the implied level of availability is that the service is always available, you’ll need on-demand resources.

      Finally, you still need to protect your systems. No request is completely anonymous, and there are things you can do to ensure the availability of your service against rogue consumers. Requests will have source IP addresses on them, so you can look for bad behavior at that level. You can still do schema validation, look for SQL injection, etc. In other words, you still need to do DoS protection. You also should be looking at the usage metrics on a frequent basis to understand the demand curve, and making decisions accordingly.>>

      You can find Todd's blog at: http://www.biske. com/blog/

      Gervas


      n; }#ygrp-msg p span { color: #1E66AE; font-weight: bold; }div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts { font-family: Verdana; font-size: 10px; font-weight: normal; }#ygrp-msg p a { font-family: Verdana; font-size: 10px; }#ygrp-mlmsg a { color: #1E66AE; }div.attach-table div div a { text-decoration: none; }div.attach-table { width: 400px; }-->
    Your message has been successfully submitted and would be delivered to recipients shortly.