<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Hogg Blog : Grid</title><link>http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx</link><description>Tags: Grid</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>SOA Symposium: SOA, Software + Services and Cloud Computing</title><link>http://blogs.msdn.com/thehoggblog/archive/2009/10/23/soa-symposium-soa-software-services-and-cloud-computing.aspx</link><pubDate>Fri, 23 Oct 2009 09:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9911966</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/9911966.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=9911966</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=9911966</wfw:comment><description>&lt;P&gt;I am presenting a discussion on SOA, S+S and Cloud computing later today at &lt;A href="http://soasymposium.com/soasymposium2009/profile/profile_jason_hogg.php" mce_href="http://soasymposium.com/soasymposium2009/profile/profile_jason_hogg.php"&gt;SOA Symposium&lt;/A&gt;. I have included the abstract for the talk and the slides that will be used in the presentation for anyone interested.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Organizations evaluating&amp;nbsp;Software + Services and Cloud Computing offerings must first have a well thought-out SOA strategy in order to maximize the return on their investment. They must further understand how the Software + Services platform and the related emerging platforms can be shaped with SOA principles in order to establish a sound and standardized services eco-system that can build up on and extend service-oriented architecture implementations. This presentation will describe the relationship between these various paradigms, including detailed discussions of topics relevant to enterprise architects, software architects and infrastructure architects.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911966" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/thehoggblog/attachment/9911966.ashx" length="1401040" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/S_2B00_S/default.aspx">S+S</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SOA/default.aspx">SOA</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Cloud/default.aspx">Cloud</category></item><item><title>SOA Symposium: Understanding SOA Security Patterns</title><link>http://blogs.msdn.com/thehoggblog/archive/2009/10/23/soa-symposium-understanding-soa-security-patterns.aspx</link><pubDate>Fri, 23 Oct 2009 09:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9911963</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/9911963.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=9911963</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=9911963</wfw:comment><description>&lt;P&gt;I presented a discussion on SOA Security Patterns at the &lt;A href="http://soasymposium.com/soasymposium2009/profile/profile_jason_hogg.php" mce_href="http://soasymposium.com/soasymposium2009/profile/profile_jason_hogg.php"&gt;SOA Symposium&lt;/A&gt; today in Rotterdam. The abstract fro the talk is included below and the PPT is attached for anyone interested. &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Service-oriented solutions are distributed applications and therefore rely on many of the established security controls, practices, and technologies. However, there are distinct characteristics that make services and service compositions special. For example, designing distributed systems that will with greater frequency span organizational boundaries requires architects to understand threats associated with exposing such functionality on potentially hostile networks. This presentation walks through a number of the SOA design patterns that are specific to services, processes, and SOA security in general. In this talk we will introduce and explain these patterns and discuss how they can be applied to establish a secure foundation to service-oriented systems. &lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911963" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/thehoggblog/attachment/9911963.ashx" length="2363246" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Design+Patterns/default.aspx">Design Patterns</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/S_2B00_S/default.aspx">S+S</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SOA/default.aspx">SOA</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Cloud/default.aspx">Cloud</category></item><item><title>Microsoft Azure cloud OS announced at PDC2008</title><link>http://blogs.msdn.com/thehoggblog/archive/2008/10/27/microsoft-azure-announced-at-pdc2008.aspx</link><pubDate>Mon, 27 Oct 2008 20:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9018647</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/9018647.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=9018647</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=9018647</wfw:comment><description>&lt;P&gt;I am here at the PDC in Los Angeles having just watched Ray Ozzie and Bob Muglia finally present the next generation of Microsoft's Cloud Services / Software plus Services strategy with the release of our new operating system for the cloud "Azure"!&lt;/P&gt;
&lt;P&gt;Windows Azure was designed from the ground up for the needs of cloud based computing models. It includes capabilities such as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Scalable hosting - from a fraction of a server to many servers&lt;/LI&gt;
&lt;LI&gt;Automated service management - fabric controller manages the health and lifetime of deployed services according to a services model&lt;/LI&gt;
&lt;LI&gt;High-availability - replicated backend storage&lt;/LI&gt;
&lt;LI&gt;Rich developer experience &lt;/LI&gt;
&lt;LI&gt;Open platform - Command line interfaces, REST protocols, WS, Web… &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;As I watched the presentation it dawned on me some of the parallels between how existing operating systms are designed and the functions that will now be fulfilled by Azure. The diagram below shows a conceptual view of the core layers in existing operating systems, which are typically split between kernel mode and user mode where user applications are designed to be run. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG src="http://blogs.msdn.com/photos/jason_hogg/images/9018628/500x176.aspx" mce_src="http://blogs.msdn.com/photos/jason_hogg/images/9018628/500x176.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Logically Azure follows a similar model having the Azure OS providing the equivalent of the kernel exept now running in the cloud managing a potentially limitless number of CPU's, memory and disk storage all hosted in the cloud. &lt;/P&gt;
&lt;P&gt;Moving up a level we have the Microsoft Azure Services Platform. As with the executive in an OS taking responsibility for security, storage, I/O and IPC; Azure provides a host of similar capabilities. At the lowest level the Azure Services Platform includes support for .Net Services including a Service Bus, Access Control and Workflow Services. It also includes SQL Services. At a higher level the Azure Services Platform includes support for Live Services, Sharepoint Services and Dynamics CRM Services.&lt;/P&gt;
&lt;P&gt;In terms of how applications can be designed to run on in this new cloud based paradigm the great news is that it is all through our existing tools and languages - Visual Studio and .NET. At the highest level in the stack where traditionally applications like Office would run, we now have online extensions to these products including: Windows Live, Office Live, Exchange Online, Sharepoint Online and Dynamics CRM Online.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Anyway, this post should introduce you to some key concepts and technologies that I believe are going to be critical to consider as you design distributed applications moving forward. I personally think this announcement and the associated announcements that you will continue to hear over the course of this week is the most significant change in our industry since the release of .NET.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9018647" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/PDC2008/default.aspx">PDC2008</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/S_2B00_S/default.aspx">S+S</category></item><item><title>Sample declarative access control policy</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/08/28/sample-declarative-access-control-policy.aspx</link><pubDate>Wed, 29 Aug 2007 02:29:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4620131</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/4620131.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=4620131</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=4620131</wfw:comment><description>&lt;P&gt;In my previous &lt;A class="" href="http://blogs.msdn.com/thehoggblog/archive/2007/08/26/parser-for-secpal-simplified-english-grammar-now-available.aspx" mce_href="http://blogs.msdn.com/thehoggblog/archive/2007/08/26/parser-for-secpal-simplified-english-grammar-now-available.aspx"&gt;post&lt;/A&gt; I mentioned that we have now released a parser for SecPAL that allows policies to be written in a human readable simplified English grammar. I thought it might be worth including an example - based on the scenario that was used in the GridToday post on &lt;A class="" href="http://www.gridtoday.com/grid/1546527.html" mce_href="http://www.gridtoday.com/grid/1546527.html"&gt;Access Control in Grid Computing Environments&lt;/A&gt; which (funnily enough) is very similar to the two pages of F# available &lt;A class="" href="http://blogs.msdn.com/thehoggblog/archive/2007/06/15/writing-secpal-assertions-in-f.aspx" mce_href="http://blogs.msdn.com/thehoggblog/archive/2007/06/15/writing-secpal-assertions-in-f.aspx"&gt;here&lt;/A&gt; and very similar to the C# sample AttributeScenario solution included inside the &lt;A class="" href="http://research.microsoft.com/research/downloads/details/81e28b29-10be-4551-9ede-1690f32e1581/details.aspx" mce_href="http://research.microsoft.com/research/downloads/details/81e28b29-10be-4551-9ede-1690f32e1581/details.aspx"&gt;v1.1&lt;/A&gt; release of SecPAL. &lt;/P&gt;
&lt;P&gt;The sample shows the policies being specified in C# using a similar approach to that you might use to specify dynamic SQL. Such policies could just as easily be read from a file etc.&amp;nbsp;&amp;nbsp;In the future I will provide some more advanced samples - including more discussion about each of the samples - but for now just remember that another of SecPAL's strengths&amp;nbsp;is its ability to create generic access control policies through the use of variables. In the simplified English grammar variables are prefixed by&amp;nbsp;% signs. Variables are substituted for concrete values during evaluation. Enjoy... &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Collections.Generic;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; System.Text;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; Microsoft.Research.SecPal.Authorization;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;using&lt;/FONT&gt;&lt;FONT size=2&gt; Microsoft.Research.SecPal.Parser;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;namespace&lt;/FONT&gt;&lt;FONT size=2&gt; DeclarativeTest&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;class&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Program&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; Main(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt;[] args)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000 size=2&gt;// Input policies &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// 1. Policy restricting access to a resource to those principals possessing a valid email address&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; resourceAccessPolicy = &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#a31515 size=2&gt;"LA says %p can read digitalContent:'file://public/' "&lt;/FONT&gt;&lt;FONT size=2&gt; +&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;" if %p possesses %a"&lt;/FONT&gt;&lt;FONT size=2&gt; +&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;" where %a matches rfc822Name:'.*@microsoft.com' "&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// 2. Policy delegating the rights to an STS to make statements about possession of email attributes&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; trustPolicy = &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#a31515 size=2&gt;"LA says K-STS can say %p possesses %a"&lt;/FONT&gt;&lt;FONT size=2&gt; +&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;" where %a matches rfc822Name:'.*@microsoft.com' "&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// 3. Identity assertion that would normally be included inside a token when the user requests access to a resource&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; identityPolicy = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"K-STS says K-JAHOGG possesses rfc822Name:'jahogg@microsoft.com' "&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Authorization Query&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Query created based on the specifics of the resource access request&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; authzQuery = &lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"LA says K-JAHOGG can read digitalContent:'file://public/foo.txt' "&lt;/FONT&gt;&lt;FONT size=2&gt;;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;// Error - keyholder principals are getting recreated each time&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Assertion&lt;/FONT&gt;&lt;FONT size=2&gt; a1 = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Interpretor&lt;/FONT&gt;&lt;FONT size=2&gt;.parseAssertion(resourceAccessPolicy);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Assertion&lt;/FONT&gt;&lt;FONT size=2&gt; a2 = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Interpretor&lt;/FONT&gt;&lt;FONT size=2&gt;.parseAssertion(trustPolicy);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Assertion&lt;/FONT&gt;&lt;FONT size=2&gt; a3 = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Interpretor&lt;/FONT&gt;&lt;FONT size=2&gt;.parseAssertion(identityPolicy);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Assertion&lt;/FONT&gt;&lt;FONT size=2&gt;[] assertionList = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Assertion&lt;/FONT&gt;&lt;FONT size=2&gt;[3] { a1, a2, a3 };&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;AuthorizationQuery&lt;/FONT&gt;&lt;FONT size=2&gt; aq = &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Interpretor&lt;/FONT&gt;&lt;FONT size=2&gt;.parseAuthQuery(authzQuery);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Console&lt;/FONT&gt;&lt;FONT size=2&gt;.WriteLine(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Authorization result"&lt;/FONT&gt;&lt;FONT size=2&gt;);&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// Make an authorization decision &lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;IList&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;Answer&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt; answers =&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;AuthorizationEngine&lt;/FONT&gt;&lt;FONT size=2&gt;.MakeAuthorizationDecision(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;LocalAuthorityPrincipal&lt;/FONT&gt;&lt;FONT size=2&gt;(),&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertionList,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aq,&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;List&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;AuditRule&lt;/FONT&gt;&lt;FONT size=2&gt;&amp;gt;());&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#2b91af size=2&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;Console&lt;/FONT&gt;&lt;FONT size=2&gt;.WriteLine(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Answer was "&lt;/FONT&gt;&lt;FONT size=2&gt; + (answers.Count &amp;gt; 0));&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4620131" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>Parser for SecPAL simplified English grammar now available! </title><link>http://blogs.msdn.com/thehoggblog/archive/2007/08/26/parser-for-secpal-simplified-english-grammar-now-available.aspx</link><pubDate>Mon, 27 Aug 2007 00:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4579556</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/4579556.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=4579556</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=4579556</wfw:comment><description>&lt;DIV class=wikidoc&gt;One of the great strengths of SecPAL is its unique support for multiple representations of a security policy; XML for interoperability; and a simplified English grammar for human readbility. The SecPAL v1.1 Research Release (available from http://research.microsoft.com/projects/secpal) allows SecPAL assertions to be created using the rich and flexible.NET object model or deserialized from (or serialized into XML) XML according to the SecPAL Schema Specification (also available at the aforementioned URL). &lt;BR&gt;&lt;BR&gt;We have now also created a sample parser that allows SecPAL policies and authorization queries to be specified using a simplified English grammar and then translated into the SecPAL object model. This allows policies to be specified declaratively in a human readable form. The parser is written using F# and uses the Lexx and Yacc tools that accompany F#. Full source code is included - so if you are looking for a good project to start learning F# - or if you want to see a complete parser implementation developed using F# and the accompanying tools then this is a great place to start. &lt;/DIV&gt;
&lt;DIV class=wikidoc&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=wikidoc&gt;I really enjoyed working on this sample as it gave me an opportunity to learn a lot more about F#&amp;nbsp;- so over the next couple of posts I will share a lot more information on how the sample works including some tips about F# that I have learned. I will also start posting additional additional access control patterns specified declaratively - hopefully making the samples much easier to follow than the more length samples written purely in C# or F#. &lt;/DIV&gt;
&lt;DIV class=wikidoc&gt;&lt;BR&gt;The parser sample is available from here: &lt;A class=externalLink href="http://www.codeplex.com/secpal/Release/ProjectReleases.aspx?ReleaseId=6667"&gt;http://www.codeplex.com/secpal/Release/ProjectReleases.aspx?ReleaseId=6667&lt;SPAN class=externalLinkIcon&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4579556" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>A Java implementation of SecPAL?</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/08/08/a-java-implementation-of-secpal.aspx</link><pubDate>Thu, 09 Aug 2007 02:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4300587</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/4300587.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=4300587</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=4300587</wfw:comment><description>&lt;P&gt;Panos, from the University of Newcastle just dropped me a note to say that he is making progress with his Java based SecPAL implementation - which is very exciting. I noticed that he has moved away from XSB and has decided instead to create his own custom datalog implementation - which is very cool - I am sure that took a coulple of very late nights! If you are interested in learning more take a look at Panos' &lt;A class="" href="http://www.periorellis.com/BLOG/archives/00000134.html" mce_href="http://www.periorellis.com/BLOG/archives/00000134.html"&gt;blog&lt;/A&gt;. &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4300587" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>The IEEE Computer Security Foundations Conference</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/07/07/the-ieee-computer-security-foundations-conference.aspx</link><pubDate>Sun, 08 Jul 2007 03:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3755062</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/3755062.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=3755062</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=3755062</wfw:comment><description>&lt;P&gt;The 20th IEEE &lt;A class="" href="http://www.dsi.unive.it/CSF20/" mce_href="http://www.dsi.unive.it/CSF20/"&gt;Computer Security Foundations &lt;/A&gt;conference is underway in Venice at the moment, and our friends from Microsoft Research in Cambridge (Moritz Y. Becker, Cedric Fournet and Andrew D. Gordon)&amp;nbsp;presented the first paper of the conference - based on their formal design for SecPAL. The paper "Design and Semantics of a Decentralized Authorization Language" is of course available from &lt;A class="" href="http://research.microsoft.com/projects/secpal/" mce_href="http://research.microsoft.com/projects/secpal/"&gt;here&lt;/A&gt;. I have also included a photo of Moritz presenting which Andy just sent us. &lt;/P&gt;
&lt;P&gt;&lt;IMG title="Mo Presenting" style="WIDTH: 500px; HEIGHT: 375px" height=375 alt="Mo Presenting" src="http://blogs.msdn.com/photos/jason_hogg/images/3754776/500x375.aspx" width=500 mce_src="http://blogs.msdn.com/photos/jason_hogg/images/3754776/500x375.aspx"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3755062" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>Access Control Requirements for Grid Computing Environments</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/07/03/access-control-requirements-for-grid-computing-environments.aspx</link><pubDate>Tue, 03 Jul 2007 20:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3673402</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/3673402.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=3673402</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=3673402</wfw:comment><description>&lt;P&gt;One question I hear a lot is "How does SecPAL compare with [InsertRandomSecurityTechnologyAcronymHere]?". Well the good news is that&amp;nbsp;&lt;A class="" href="http://www.cs.virginia.edu/~humphrey/" mce_href="http://www.cs.virginia.edu/~humphrey/"&gt;Marty Humphrey&lt;/A&gt;, Sang-Min Park, Jun Feng, Norm Beekwilder and Glenn Wasson from the Department of Computer Science at the University of Virginia have been studying just this question using real requirements from their grid network as the basis for this evaluation. The results of their study have been published in a paper called &lt;A class="" href="http://www.cs.virginia.edu/~humphrey/papers/GridFTP_SecPAL_2007.pdf" mce_href="http://www.cs.virginia.edu/~humphrey/papers/GridFTP_SecPAL_2007.pdf"&gt;Fine Grained Access Control for GridFTP using SecPAL&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;They have identified and categorized a number of requirements and then performed an in-depth analysis evaluating the extent to which SecPAL (and other security technologies) meet these requirements. They also consider six specific data access use-cases that have been problematic in today’s Grids: attribute-based access, role-based access, “role-deny” access, impersonation-based access, delegation-based access, and capability-based access and show actual SecPAL policies that they used to solve these use-cases.&lt;/P&gt;
&lt;P&gt;One of the reasons why I think this paper is so important is that&amp;nbsp;the UVa folks started their evaluation with a thorough understanding of their requirements - and documented them. So if you are in the process of evaluating a new access control solution (or perhaps building a custom access control solution) you will definitely gain by using the requirements in this paper as a starting point for your work. &lt;/P&gt;
&lt;P&gt;All in all a really great paper - and the best news is that the paper has officially been accepted for &lt;A class="" href="http://www.grid2007.org/" mce_href="http://www.grid2007.org/"&gt;Grid2007&lt;/A&gt; - so if you are interested in hearing more hopefully you will be able to watch the presentation at Grid2007 in Austin Texas. &lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3673402" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>SecPAL Query Editor Now Available</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/06/21/secpal-query-editor-now-available.aspx</link><pubDate>Fri, 22 Jun 2007 01:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3449384</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/3449384.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=3449384</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=3449384</wfw:comment><description>&lt;P&gt;A couple of people have remarked to us that they like the flexibility that SecPAL provides, but feel that it is difficult for people to get to grips with the API's when they first start evaluating SecPAL. &lt;/P&gt;
&lt;P&gt;For this reason Lonnie Wall (a consultant from &lt;A class="" href="http://www.rdacorp.com/" mce_href="http://www.rdacorp.com/"&gt;RDA Corp&lt;/A&gt;) has just released some sample C# source code for a SecPAL query editor and released it on our &lt;A class="" href="http://www.codeplex.com/secpal/Release/ProjectReleases.aspx?ReleaseId=5122" mce_href="http://www.codeplex.com/secpal/Release/ProjectReleases.aspx?ReleaseId=5122"&gt;SecPAL CodePlex &lt;/A&gt;workspace. In addition to providing a GUI based interface to our samples*, the query editor also includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;A series of task specific wizards for performing tasks such as establishing trust relationships, protecting resources and writing queries. &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;The ability to review security policies and tokens using our new simplified English grammar.&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;The ability to load / save your authorization context into XML based on our &lt;A class="" href="http://research.microsoft.com/projects/secpal/downloadSecPALSpecification.aspx" mce_href="http://research.microsoft.com/projects/secpal/downloadSecPALSpecification.aspx"&gt;SecPAL Schema&lt;/A&gt;.&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;A graphical interface for reviewing query results - including direct access to the graphical proof graph viewer. &lt;/LI&gt;
&lt;LI&gt;The ability to review the samples source code from within the editor.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;The code is of course just sample, and although it only touches on the surface of SecPAL's capabilities I think it should hopefully provide a good starting point for people evaluating SecPAL. More importantly, it should also demonstrate one approach in which SecPAL could be integrated into products - hiding the complexity of our API's from end users.&lt;/P&gt;
&lt;P&gt;The query editor functions best with our v1.1 release, so if you haven't already installed v1.1 download it from &lt;A class="" href="http://research.microsoft.com/research/downloads/details/81e28b29-10be-4551-9ede-1690f32e1581/details.aspx" mce_href="http://research.microsoft.com/research/downloads/details/81e28b29-10be-4551-9ede-1690f32e1581/details.aspx"&gt;here&lt;/A&gt;. We are definitely looking for feedback, so if you have any comments / suggestions post them on the workspace. Also, if there are other examples of UI's that you like (or dislike) post some pointers to our workspace so other people can also comment.&lt;/P&gt;
&lt;P&gt;* If you haven't had a chance to check our samples out yet - take this opportunity to review them. The samples include common access control patterns such as: establishing trust relationships, audit logging, unconstrained delegation (impersonation), constrained delegation, role exclusion, exists quantification, revocation, role based security, role exculusion, multi-level delegation, two man scenario, user and application scenario and much much more... &amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3449384" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>Writing SecPAL Assertions In F# - Contd</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/06/20/writing-secpal-assertions-in-f-contd.aspx</link><pubDate>Wed, 20 Jun 2007 19:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3427769</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/3427769.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=3427769</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=3427769</wfw:comment><description>&lt;P&gt;In my earlier &lt;A class="" href="http://blogs.msdn.com/thehoggblog/archive/2007/06/15/writing-secpal-assertions-in-f.aspx" mce_href="http://blogs.msdn.com/thehoggblog/archive/2007/06/15/writing-secpal-assertions-in-f.aspx"&gt;post&lt;/A&gt; I showed how SecPAL could be used to grant access to a particular user based on a token issued by an STS that we explicitly established a trust relationship with using the SecPAL "canSay" predicate. Now I am going to show you something that I think is really cool&amp;nbsp;- and something that demonstrates the advantage of our underlying &lt;A class="" href="http://en.wikipedia.org/wiki/Datalog" mce_href="http://en.wikipedia.org/wiki/Datalog"&gt;Datalog&lt;/A&gt; engine. We are going to make three small changes to the code I showed you in the earlier post to demonstrate how instead of an authorization query being used to determine whether a particualr user can access a resource, we are going to ask who all the users are that can possibly access a resouce based on the policies we have defined. &lt;/P&gt;
&lt;P&gt;This kind of query is simple for SecPAL. We simply change our authorization query from including a concreate value (&lt;EM&gt;LA says jason can read &lt;/EM&gt;&lt;A href="file://public/foo.txt"&gt;&lt;EM&gt;file://public/foo.txt&lt;/EM&gt;&lt;/A&gt;) to a query that includes a variable (&lt;EM&gt;LA says %p can read &lt;/EM&gt;&lt;A href="file://public/foo.txt"&gt;&lt;EM&gt;file://public/foo.txt&lt;/EM&gt;&lt;/A&gt;) at which point Datalog will evaluate what all the possible principals are that can read this resource and will then return a list of substitutions. In addition to the substitutions it will also include proof graphs for each possible substitution showing exactly why it is that a particular user could access this resource. Anyone who has used Prolog in the past will likely realize that this is similar to how Prolog works and this is in fact because Datalog is in a subset of Prolog!&lt;/P&gt;
&lt;P&gt;Now &lt;STRONG&gt;before&lt;/STRONG&gt; you run this code take a look at this and the original resource access policy and decide which of our users will in fact be granted access to read this file. Not all of them will be... and it should hopefully be obvious which one will not be granted access.&lt;/P&gt;
&lt;P&gt;In order to make this change three pieces of code need to change:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Create additional users &lt;/STRONG&gt;- We will create five additional users, four of which are actually the SecPAL developers, and the fifth is not.&lt;/P&gt;&lt;PRE&gt;// Define the users within the simple scenario
let User1 = KeyHolderPrincipal(new RSACryptoServiceProvider(), "John")
let User2 = KeyHolderPrincipal(new RSACryptoServiceProvider(), "Greg")
let User3 = KeyHolderPrincipal(new RSACryptoServiceProvider(), "Jason")
let User4 = KeyHolderPrincipal(new RSACryptoServiceProvider(), "Larry")
let User5 = KeyHolderPrincipal(new RSACryptoServiceProvider(), "Fred")

&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;2. Issue tokens for the additional users&lt;/STRONG&gt; - For this example I am being lazy and simply putting all the claims about possession of attributes in one token. In reality each user would normally be issued their own token. &lt;/P&gt;&lt;PRE&gt;// Create a Token to identify our Users with 
let token = Token(issuer=PrincipalIssuer(STS),
                  claims=[ Claim(fact=PossessFact(User1, 
                                                  new SecPALAttribute(AttributeType.rfc822Name,@"john@microsoft.com")));
                           Claim(fact=PossessFact(User2, 
                                                  new SecPALAttribute(AttributeType.rfc822Name,@"greg@microsoft.com")));
                           Claim(fact=PossessFact(User3, 
                                                  new SecPALAttribute(AttributeType.rfc822Name,@"jason@microsoft.com")));
                           Claim(fact=PossessFact(User4, 
                                                  new SecPALAttribute(AttributeType.rfc822Name,@"larry@microsoft.com")));
                           Claim(fact=PossessFact(User4, 
                                                  new SecPALAttribute(AttributeType.rfc822Name,@"fred@hotmail.com")))
                                                  ]) 

let tokens = [ token ]

&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;3. Modify our authorization query&lt;/STRONG&gt; - We now change the authorization query so that we leave a variable in the query. SecPAL will then determine all the valid users are for this this variable can be unified. &lt;/P&gt;&lt;PRE&gt;// Create our Authorization Query 
//		LA says %p can read &lt;A href="file://public/foo.txt?let"&gt;file://public/foo.txt?
let&lt;/A&gt; query = AuthorizationQuery
               (expression=AssertionExpression
                   (assertion=AtomicAssertion
                       (principal=ResourceGuard, 
                        fact=ActionFact(PrincipalVariable("p"), ActionVerbs.read, 
                                        Resource(ResourceType.digitalContent, 
                                                 System.Uri(@"file://public/foo.txt"))))))


&lt;/PRE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3427769" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>Writing SecPAL assertions in F#</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/06/15/writing-secpal-assertions-in-f.aspx</link><pubDate>Sat, 16 Jun 2007 02:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3323346</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/3323346.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=3323346</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=3323346</wfw:comment><description>&lt;P&gt;I figured I would try to learn F# over this summer - and thought what better way to start than create a couple of SecPAL samples in F#. I thought this might help people that are interested in learning more about &lt;A class="" href="http://research.microsoft.com/fsharp/fsharp.aspx" mce_href="http://research.microsoft.com/fsharp/fsharp.aspx"&gt;F#&lt;/A&gt;, or potentially F# users that are interested in learning more about how &lt;A class="" href="http://blogs.msdn.com/thehoggblog/archive/2007/04/20/secpal-access-control-for-grid-computing-environments.aspx" mce_href="http://blogs.msdn.com/thehoggblog/archive/2007/04/20/secpal-access-control-for-grid-computing-environments.aspx"&gt;SecPAL&lt;/A&gt; can be used for access control scenarios. The sample below is simplified version of our classic multi-domain scenario (see &lt;A class="" href="http://www.gridtoday.com/grid/1546527.html" mce_href="http://www.gridtoday.com/grid/1546527.html"&gt;here &lt;/A&gt;for a complete description). In short we have three parties: A resource guard that is responsible for protecting access to a resource, an STS that is trusted to issue claims about users, and a user that wants to access a file.&lt;/P&gt;
&lt;P mce_keep="true"&gt;In order to support this scenario we have the following assertions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;SecPAL policies&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Resource access policy - &lt;EM&gt;LA &lt;STRONG&gt;says&lt;/STRONG&gt; %p read file://public/ &lt;STRONG&gt;if&lt;/STRONG&gt; %p possesses %a &lt;STRONG&gt;where&lt;/STRONG&gt; %a match &lt;/EM&gt;&lt;A href="mailto:.*@microsoft.com"&gt;&lt;EM&gt;.*@microsoft.com&lt;/EM&gt;&lt;/A&gt; &lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Trust policy - &lt;EM&gt;LA &lt;STRONG&gt;says&lt;/STRONG&gt; STS &lt;STRONG&gt;canSay&lt;/STRONG&gt; %p possesses %a &lt;STRONG&gt;where&lt;/STRONG&gt; %a match &lt;/EM&gt;&lt;A href="mailto:.*@microsoft.com"&gt;&lt;EM&gt;.*@microsoft.com&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; &lt;/EM&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;SecPAL token&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;EM&gt;STS &lt;STRONG&gt;says&lt;/STRONG&gt; User possesses rfc822Name:&lt;/EM&gt;&lt;A href="mailto:jason@microsoft.com"&gt;&lt;EM&gt;jason@microsoft.com&lt;/EM&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;SecPAL authorization query&lt;/DIV&gt;&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;EM&gt;LA &lt;STRONG&gt;says&lt;/STRONG&gt; Jason can read &lt;/EM&gt;&lt;A href="file://public/foo.txt"&gt;&lt;EM&gt;file://public/foo.txt&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;?&lt;/EM&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;When run the code will output a textual proof graph illustrating exactly what the chain of deductions were that lead to this authorization decision being approved. If you want to use our graphical proof graph viewer take a look at this &lt;A class="" href="http://www.codeplex.com/secpal/Thread/View.aspx?ThreadId=11187" mce_href="http://www.codeplex.com/secpal/Thread/View.aspx?ThreadId=11187"&gt;post&lt;/A&gt;. You will have to add an audit policy but that is really straight forward.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The F# code for this scenario is included below. In the my next few blog posts I will show you how to modify this code to do some extra cool things... In the mean time let me know if you have any questions, or if there are any scenarios you would like me to demonstrate.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Thanks to &lt;A class="" href="http://blogs.msdn.com/dsyme/" mce_href="http://blogs.msdn.com/dsyme/"&gt;Don Syme&lt;/A&gt; and Can Erton of the F-Sharp team for reviewing my code before I released it! &lt;BR&gt;&lt;/P&gt;&lt;PRE&gt;// Title: Simple SecPAL security scenario (F#)
#light
// Update the pointer below to your SecPAL DLL (The SecPAL .NET implementation is available from &lt;A href="http://research.microsoft.com/projects/secpal"&gt;http://research.microsoft.com/projects/secpal&lt;/A&gt;) &lt;/PRE&gt;&lt;PRE&gt;#I "C:\Users\jahogg\Documents\Microsoft SecPal Research Release\Bin\Microsoft.Research.SecPal.dll"
#r "Microsoft.Research.SecPal.dll"

open Microsoft.Research.SecPal.Authorization 
open System.Security.Cryptography
open System.Collections.Generic
type SecPALAttribute = Microsoft.Research.SecPal.Authorization.Attribute

// Define the users within the simple scenario
let User = KeyHolderPrincipal(new RSACryptoServiceProvider(), "Jason")
let STS = KeyHolderPrincipal(new RSACryptoServiceProvider(), "STS")
let ResourceGuard = LocalAuthorityPrincipal("ResourceGuard") // ResouceGuard == LocalAuthority == LA

// Define Resource Access Policy 
//		LA says %p read file://public/ if %p possesses %a where %a match ".*@microsoft.com" 					
let claims = [Claim(fact=ActionFact(PrincipalVariable("p"),
                                    ActionVerbs.read,
                                    Resource(ResourceType.digitalContent,
                                             System.Uri(@"file://public/"))),
                    condition=PossessFact(PrincipalVariable("p"),
                                          AttributeVariable("a")),
                    constraint=AttributeMatchConstraint("a",AttributeType.rfc822Name, @".*@microsoft\.com"));
              // LA says STS canSay %p possesses %a where %a match ".*@microsoft.com" 					
              Claim(fact=CanSayFact(STS,
                                    fact=PossessFact(PrincipalVariable("p"),
                                                     AttributeVariable("a"))),
                    constraint=AttributeMatchConstraint("a",AttributeType.rfc822Name, @".*@microsoft\.com")) ]

let policy = Policy(PrincipalIssuer(ResourceGuard), claims)
let policies = [ policy ]

// Create a Token to identify our User with 
//		STS says User possesses rfc822Name:"jahogg@microsoft.com"
let token = Token(issuer=PrincipalIssuer(STS),
                  claims=[ Claim(fact=PossessFact(User, 
                                                  new SecPALAttribute(AttributeType.rfc822Name,@"jason@microsoft.com")))]) 

let tokens = [ token ]

// Create our Authorization Query 
//		LA says Jason can read file://public/foo.txt?

let query = AuthorizationQuery
               (expression=AssertionExpression
                   (assertion=AtomicAssertion
                       (principal=ResourceGuard, 
                        fact=ActionFact(User, ActionVerbs.read, 
                                        Resource(ResourceType.digitalContent, 
                                                 System.Uri(@"file://public/foo.txt"))))))

// Perform our Authorization Query using the Authorization Engine		
let answers = AuthorizationEngine.MakeAuthorizationDecision(ResourceGuard, tokens, policies, query) 
 
// Determine if access was granted
let results = (if (answers.Count &amp;lt; 1) then "Denied" else "Authorized") 

// Print out the results
printf "The result is %s \n" results
printf "Answer count = %i \n\n" answers.Count

// Iterate over the Proofs
for answer in answers do
    // Output variable substitutions
    let subs = answer.Substitution 
    for sub in subs do
        System.Console.WriteLine ("Name " + sub.Key.Name + " = " + sub.Value.ToString());
    // Output proof graphs
    let proofs = answer.ProofGraphs 
    for proof in proofs do
        System.Console.Write("Expression = ")
        System.Console.WriteLine(proof.Expression)
        System.Console.WriteLine("Graph = ")
        System.Console.WriteLine(proof.ProofRoot)

// Press any key to continue (Homer "Where's the any key?")
System.Console.ReadLine()

&lt;/PRE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3323346" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>SecPAL v1.1 Now Available</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/06/13/secpal-v1-1-now-available.aspx</link><pubDate>Thu, 14 Jun 2007 03:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3278734</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/3278734.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=3278734</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=3278734</wfw:comment><description>&lt;P&gt;Just a quick note to let everyone know that we have just released a minor update to our SecPAL library. In addition to a couple of minor bug fixes there are two features which I think you are really going to like. The first is an update to our grammar - making it much clearer what conditions and constraints are. The second (which was actually a bug fix) is that our graphical proof graphs now work. &lt;/P&gt;
&lt;P&gt;The diagram below shows an example of a (very simple) proof graph which graphically demonstrates the chain of deducations supporting an authorization decision. This is of course very valuable information for your audit logs to support requirements such as compliance etc. &lt;/P&gt;
&lt;P&gt;&lt;IMG title="Graphical Proof Graph" style="WIDTH: 640px; HEIGHT: 406px" height=406 alt="Graphical Proof Graph" src="http://blogs.msdn.com/photos/jason_hogg/images/3278663/640x406.aspx" width=640 align=middle mce_src="http://blogs.msdn.com/photos/jason_hogg/images/3278663/640x406.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Anyway, you might find the following links interesting:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The download is available from here: &lt;A href="http://research.microsoft.com/projects/secpal"&gt;http://research.microsoft.com/projects/secpal&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Summary of changes: &lt;A href="http://www.codeplex.com/secpal/Wiki/View.aspx?title=ResearchRelease1.1&amp;amp;referringTitle=Home"&gt;http://www.codeplex.com/secpal/Wiki/View.aspx?title=ResearchRelease1.1&amp;amp;referringTitle=Home&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Summary of how to write to the event log, use the event log viewer, and the graphical proof graph viewer: &lt;A href="http://www.codeplex.com/secpal/Thread/View.aspx?ThreadId=11187"&gt;http://www.codeplex.com/secpal/Thread/View.aspx?ThreadId=11187&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I have also been working on a couple of F# samples to demonstrate how to call SecPAL from F#, which I will post those in the next day or two. These will also include examples of the new grammar etc.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3278734" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>Extending Visual Studio - Made Easy</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/05/28/extending-visual-studio-made-easy.aspx</link><pubDate>Tue, 29 May 2007 08:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2959564</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/2959564.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=2959564</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=2959564</wfw:comment><description>&lt;P&gt;One thing that always amazes me as I talk to scientists and researchers at shows like the recent Open Grid Forum or the last Super Computing conference is the extent to which they have managed to extend Eclipse to provide intuitive interfaces to their work. Up until very recently similar extensions for Visual Studio has required a significant investment in time to learn the VSIP extension API's which many researchers just don't have time to spare, however &lt;A class="" title="Pablo Galiano" href="http://www.clariusconsulting.net/blogs/pga/archive/2007/05/16/24848.aspx" mce_href="http://www.clariusconsulting.net/blogs/pga/archive/2007/05/16/24848.aspx"&gt;Pablo Galiano&lt;/A&gt;&amp;nbsp;(Pablo has worked on many P&amp;amp;P projects including most recently the Service Factory) has changed that with the release of his VSIP Factory. &lt;/P&gt;
&lt;P&gt;At the highest level, the &lt;A class="" title="VSIP Factory" href="http://www.codeplex.com/vsipfactory" mce_href="http://www.codeplex.com/vsipfactory"&gt;VSIP Factory&lt;/A&gt;&amp;nbsp;supports authoring, testing, and deploying (using WIX or standard VS setup projects) VSIP extensions. I sat in on a demo of this work last week and I guarantee you will be impressed. In less than one hour Pablo demonstrated how to create a brand new VSIP package, including several custom forms, wiring them up to menu's and appropriate events within VS, integrating them into the existing VS toolbars (including supporting docking behavior) and even modifying the VS splash screen, all using self-explanatory wizards. Then for the creme de la creme Pablo also shows how to build a similar package using a DSL based designer that he has worked on... &lt;/P&gt;
&lt;P mce_keep="true"&gt;As anyone who has tried to do this with Visual Studio using the VSIP extensions surely knows - this is amazing stuff. So for anyone that is interested in extending Visual Studio I definitely recommend you take a look at Pablo's latest CTP. Enjoy....&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2959564" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Service+Factory/default.aspx">Service Factory</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>SecPAL In The News</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/05/07/secpal-in-the-news.aspx</link><pubDate>Mon, 07 May 2007 16:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2463071</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/2463071.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=2463071</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=2463071</wfw:comment><description>&lt;P&gt;In my last&amp;nbsp;post I promised to walk through a demonstration of SecPAL using a scenario that is challenging to implement using current technologies - but simple to implement using SecPAL. As timing would have it, rather than walking through the scenario in this blog, I can instead point you to an article that was posted today in the magazine GridToday. Look here for more information &lt;A class="" title="Access Control in Grid Computing Environments" href="http://www.gridtoday.com/grid/1546527.html" mce_href="http://www.gridtoday.com/grid/1546527.html"&gt;Access Control in Grid Computing Environments&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;A couple of other good articles have also been written that you might also be interested in. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Apr 30, 2007 &lt;/EM&gt;Linux Insider &lt;A class="" title="Microsoft Invites Collaboration With Grid Computing Research" href="http://www.linuxinsider.com/story/sjtdPLOzASp203/Microsoft-Invites-Collaboration-With-Grid-Computing-Research.xhtml" mce_href="http://www.linuxinsider.com/story/sjtdPLOzASp203/Microsoft-Invites-Collaboration-With-Grid-Computing-Research.xhtml"&gt;Microsoft Invites Collaboration With Grid Computing Research&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Sept 13,2006 &lt;/EM&gt;eWeek article &lt;A class="" title="Microsoft Building Security Language for Grids" href="http://www.eweek.com/article2/0,1895,2015846,00.asp" mce_href="http://www.eweek.com/article2/0,1895,2015846,00.asp"&gt;Microsoft building Security Language for Grids&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;This timing on this article was perfectly timed as OGF 20 has just kicked off today in Manchester UK, so hopefully this will generate additional interest. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2463071" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item><item><title>SecPAL - Access Control for Grid Computing Environments</title><link>http://blogs.msdn.com/thehoggblog/archive/2007/04/20/secpal-access-control-for-grid-computing-environments.aspx</link><pubDate>Sat, 21 Apr 2007 00:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2212235</guid><dc:creator>Jason Hogg</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/thehoggblog/comments/2212235.aspx</comments><wfw:commentRss>http://blogs.msdn.com/thehoggblog/commentrss.aspx?PostID=2212235</wfw:commentRss><wfw:comment>http://blogs.msdn.com/thehoggblog/rsscomments.aspx?PostID=2212235</wfw:comment><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;It has probably been around 9 months since my last blog release where I described the release of our ASMX Service Factory. A lot has obviously happened since then - including the release of both WCF and the WCF Service Factory. So what have I been doing since that time? &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;Well, around 9 months ago I was offered the opportunity to work on a project called SecPAL (SecPAL stands for the Security Policy Assertion Language) within a research and incubation team inside Craig Mundie’s organization. SecPAL is a policy language that has been developed to support the complex access control requirements of large scale grid computing environments. &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;So what kinds of challenges are we focusing on? Here is a partial-list of some of the challenges that SecPAL addresses:&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;How does an organization establish a fine-grained trust relationship with another organization across organizational boundaries?&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;How does a user delegate a subset of a user’s rights (constrained delegation) to another user residing either in the same organization or in a different organization? &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;How can access control policy be authored and reviewed in a manner that is human readable - allowing auditors and non-technical people to understand such policies? &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;How does an organization support compliance regulations requiring that a system be able to demonstrate exactly why it was that a user was granted access to a resource? &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;How can policies be authored, composed and evaluated in a manner that is efficient, deterministic and tractable?&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;If any of these challenges seem familiar, or if you are interested in learning more about SecPAL and how SecPAL solves these challenges you should take a look at our Microsoft Research home page which is located at: &lt;A href="http://research.microsoft.com/projects/secpal" mce_href="http://research.microsoft.com/projects/secpal"&gt;http://research.microsoft.com/projects/secpal&lt;/A&gt;. The SecPAL Research homepage includes links to the following papers which describe the architecture of SecPAL at varying levels of abstraction. &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;SecPAL Formal Model ("Design and Semantics of a Decentralized Authorization Language") – Formal description of the abstract types, language semantics and evaluation rules that support deterministic evaluation in efficient time. &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;SecPAL Schema Specification – Specification describing a practical XML based implementation of the formal model targeted at supporting access control requirements of distributed applications&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;.NET Research Implementation of SecPAL – C# implementation, C# samples for common authz patterns, and comprehensive developer documentation and a getting started tutorial&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;The .NET Research Implementation and SecPAL Schema Specifications were posted recently - just prior to TechFest. The .NET implementation is deliberately labeled a “research” release because we are interested in collaborating with security researchers and security thought leaders as they evaluate SecPAL against their access control requirements. This research release is definitely not intended to be viewed or used as product.&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;If you are interested in learning more about SecPAL I encourage you to first take a look at the whitepaper entitled “A Unified Approach to Trust, Delegation, and Authorization in Large-Scale Grids” also located on our research homepage, and then download our .NET Research Implementation and evaluate SecPAL against your requirements. &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;The .NET Research Implementation includes substantial developer documentation, including both a getting started tutorial as well as 15 common authorization patterns along with SecPAL implementations. If you don’t see something that meets you requirements, or you have suggestions or comments we would love to hear from you on community workspace. See &lt;A href="http://www.codeplex.com/secpal" mce_href="http://www.codeplex.com/secpal"&gt;www.codeplex.com/secpal&lt;/A&gt;. &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;Over the next couple of weeks I will also create some additional blog entries walking you through some of the authorization patterns that we have developed, hopefully providing more insight into how SecPAL works.&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2212235" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/SecPAL/default.aspx">SecPAL</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Web+Service+Security/default.aspx">Web Service Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/thehoggblog/archive/tags/Grid/default.aspx">Grid</category></item></channel></rss>