<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Software Design</title><link>http://blogs.wankuma.com/tyappi/category/1495.aspx</link><description>Software Design</description><managingEditor>ちゃっぴ (tyappi@wankuma.com)</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>JRE の配布について</title><link>http://blogs.wankuma.com/tyappi/archive/2010/06/13/190110.aspx</link><pubDate>Sun, 13 Jun 2010 16:09:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2010/06/13/190110.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/190110.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2010/06/13/190110.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/190110.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/190110.aspx</trackback:ping><description>&lt;p&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2010/06/13/190108.aspx"&gt;dynaTrace AJAX Edition&lt;/a&gt; で同時に JRE が install されると書きましたが、これってどうなんだろ。&lt;/p&gt; &lt;p&gt;確かに JRE を同梱することにより JRE を別途 install する必要が無くなるので、便利かもしれない。だけど、JRE の普及率はかなり高く、この blog への閲覧の統計でも 92 % は &lt;a href="http://www.java.com/"&gt;Java&lt;/a&gt; を support しているという現実があります。つまり、JRE を同梱した場合、大多数の user は同一端末内で複数の JRE を管理しなければならず管理負荷が増大します。&lt;/p&gt; &lt;p&gt;もっとも、&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; に代表されるように開発で利用するものについては複数 version を使い分けることが必要になる場合があるので、容易に差し替えられるようにすることも考慮に入れなければならないかもしれない。しかし、既定で利用するものは既に install されているものを利用して欲しい。昔は update まで指定して動作保障を限定するなんてことありましたが、さすがに今は無いでしょうから。&lt;/p&gt; &lt;p&gt;なお、ここ一年ばかり猛威を奮っている Gumblar の攻撃方法の内、もっとも攻撃が成功しやすい方法は下記記事によると JRE を狙ったものであるそうだ。&lt;/p&gt; &lt;p&gt;&lt;a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20100601/348706/"&gt;いま一番危ないぜい弱性は何だ？&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;もっとも、application に同梱した JRE の利用は Web browser から利用されるわけではないため、攻撃を受ける可能性は相当低いと思われますが用心するに越したことないでしょう。&lt;/p&gt; &lt;p&gt;なお、この手の同梱の問題は他にもいろいろあって、array controller の管理用 interface が &lt;a href="http://tomcat.apache.org/"&gt;Tomcat&lt;/a&gt; を利用した Web application で作成されているとか。昔はかなり放置気味な気がしていましたが、最近はどうなのだろう？&lt;/p&gt; &lt;p&gt;Application を提供する方はその application のみの保守で設計するのはやめて、全体としての保守運用の最小化まで意識して設計を行っていただきたいです。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/190110.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>VB 6.0 の生産性</title><link>http://blogs.wankuma.com/tyappi/archive/2009/02/27/168968.aspx</link><pubDate>Fri, 27 Feb 2009 23:32:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/02/27/168968.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/168968.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/02/27/168968.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/168968.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/168968.aspx</trackback:ping><description>&lt;P&gt;酷評する人が多いと思いますが、VB 6.0 それほど捨てたものではないと思うんですよ。&lt;/P&gt;
&lt;P&gt;というのは、.NET Framework ではならの問題点がいくつか存在するからです。&lt;/P&gt;
&lt;P&gt;もっとも大きな理由としては COM に対する扱いが厄介なこと。&lt;/P&gt;
&lt;P&gt;In process な COM であれば深刻な問題はそれほど生じませんが、.NET Framework で out process な COM server を扱うとなると途端に問題になります。&lt;/P&gt;
&lt;P&gt;.NET Framework&amp;nbsp; で out process な COM server を扱うとなるとどうしても COM の解放処理を意識しないといけません。ぶっちゃけた話、.NET Framework で out process な COM server を扱うとなると開発生産性が VB 6.0 に比べて著しく低下すると思っています。&lt;/P&gt;
&lt;P&gt;正直な話、out process な COM server を利用するのであればいろいろ制限はありますけど、VB 6.0 が生産性の面において一番効率的だと思っています。&lt;/P&gt;
&lt;P&gt;まあ、もっとも VB 6.0&amp;nbsp; 自体開発環境の support が切れていますから、将来性という面に於いて著しく不利なのは言うまでもありませんけれど。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/168968.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>VB 6.0 runtime support</title><link>http://blogs.wankuma.com/tyappi/archive/2009/02/27/168963.aspx</link><pubDate>Fri, 27 Feb 2009 22:53:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/02/27/168963.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/168963.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/02/27/168963.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/168963.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/168963.aspx</trackback:ping><description>&lt;p&gt;&lt;A href="http://blogs.wankuma.com/naka/archive/2009/02/26/168847.aspx"&gt;VB6の呪縛がWindows7でも&lt;/A&gt;&lt;BR&gt;&lt;A href="http://blogs.wankuma.com/chaosgate/archive/2009/02/26/168848.aspx"&gt;【VB6】VB6のランタイムがWindows 7でもサポートされるようです&lt;/A&gt;&lt;/p&gt;
&lt;P&gt;正直な話、当然な話というのが感想です。&lt;/P&gt;
&lt;P&gt;というのは、VBScript および VBA が現役だからです。VB6.0 の support を切ったからいって、現状では VBScript および VBA が今もって現役ですから VB6.0 をつぶしたところで、現実的に有効な費用対効果を得ることは難しいでしょう。ぶっちゃけた話、VB 6.0 を消したところで、VBScript および VBA を suppprt するのであれば、保守費用それほど変わらないと思いますし。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/168963.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>すべての user で扱う file の配置場所</title><link>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167574.aspx</link><pubDate>Fri, 06 Feb 2009 04:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167574.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/167574.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/02/06/167574.aspx#Feedback</comments><slash:comments>121</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/167574.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/167574.aspx</trackback:ping><description>&lt;P&gt;FAQ な質問にすべての user で扱う file はどこに配置すべき？ というのがあります。この質問は目にするたび、user がその file を直接指定することがないのであれば、下記に配置するべきだと書いています。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;OS&lt;/TH&gt;
&lt;TH&gt;Path&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Vista&lt;/TD&gt;
&lt;TD&gt;%PROGRAMDATA%&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;XP&lt;/TD&gt;
&lt;TD&gt;%ALLUSERPROFILE%\Application Data&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Vista 以降限定であれば、環境変数一つで定義されているので環境変数を利用してもよいですが、Vista より以前が対象に含まれる場合にはこれではまずいです。上記の場所は registry に設定されており、それを扱う API が整備されているので必ずそれを利用しましょう。&lt;/P&gt;
&lt;TABLE width=2&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Library type&lt;/TH&gt;
&lt;TH&gt;Function&lt;/TH&gt;
&lt;TH&gt;Argument&lt;/TH&gt;
&lt;TH&gt;Minimum OS&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Win32&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762181.aspx"&gt;SHGetFolderPath&lt;/A&gt;&lt;BR&gt;&lt;DEL&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762204.aspx"&gt;SHGetSpecialFolderPath&lt;/A&gt;&lt;/DEL&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762494.aspx"&gt;CSIDL_COMMON_APPDATA&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Win32&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762188.aspx"&gt;SHGetKnownFolderPath&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd378457.aspx"&gt;FOLDERID_ProgramData&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;Vista&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;COM&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb761738.aspx"&gt;IKnownFolderManager::GetFolder&lt;/A&gt;&lt;/TD&gt;
&lt;TD width=61&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/dd378457.aspx"&gt;FOLDERID_ProgramData&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;Vista&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;.NET&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/ja-jp/library/system.environment.getfolderpath.aspx"&gt;System.Environment.GetFolderPath&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/ja-jp/library/system.environment.specialfolder.aspx"&gt;CommonApplicationData&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Automation&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb774085.aspx"&gt;Shell.Namespace&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb762494.aspx"&gt;CSIDL_COMMON_APPDATA&lt;/A&gt;&lt;BR&gt;(&amp;amp;h23)&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;なお、対象 folder の ACL は Windows Vista では既定で下記のように構成されています。&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TH&gt;Type&lt;/TH&gt;
&lt;TH&gt;Name&lt;/TH&gt;
&lt;TH&gt;Permission&lt;/TH&gt;
&lt;TH&gt;Inheritance&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;NT AUTHORITY\System&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_ALL_ACCESS&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;BUILTIN\Administrators&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_ALL_ACCESS&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;CREATOR OWNER&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;GENERIC_ALL&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;INHERIT_ONLY_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;BUILTIN\Users&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;GENERIC_READ&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;GENERIC_EXECUTE&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;OBJECT_INHERIT_ACE&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;Allow&lt;/TD&gt;
&lt;TD&gt;BUILTIN\Users&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_DATA&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_APPEND_DATA&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_EA&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa364399.aspx"&gt;FILE_WRITE_ATTRIBUTES&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa374924.aspx"&gt;CONTAINER_INHERIT_ACE&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;上記 DACL を簡単に説明すると、制限 user はすべての file を開いたり実行でき、 file を新規作成できるが、自分が作った file じゃないと更新や削除ができないということになります。実によく考えられてますね。&lt;/P&gt;
&lt;P&gt;これが嫌なら、DACL を変更することになります。&lt;/P&gt;
&lt;P&gt;ただ、安易に複数 user で共有する場所に配置するのは考え物です。その file が本当に複数 user 間で共有する必要があるか今一度考慮すべきでしょう。その file を直接指定することなく、すべての user で共有する必要があり、かつすべての user が更新する必要があるものって相当少ないと思いますよ。&lt;/P&gt;
&lt;P&gt;また、対象の file の内容はすべての user が扱う必要があるもののみ格納されているでしょうか？ すべての user が扱う必要の無いものが含まれているのであれば、それは分離し個々の user profile に格納するべきでしょう。&lt;/P&gt;
&lt;P&gt;なお、user が直接その file を指定することがあるのであれば、"%ALLUSERPROFILE%" ("%PUBLIC%") 配下の "Documents", &amp;nbsp;"Downloads", "Music", "Pictures", "Videos" とかに格納すべきです。それぞれ対応した &lt;A href="http://msdn.microsoft.com/en-us/library/dd378457.aspx"&gt;KNOWNFORDERID&lt;/A&gt; (&lt;A href="http://msdn.microsoft.com/en-us/library/bb762494.aspx"&gt;CSIDL&lt;/A&gt;) があるので、環境変数など使わずに API で取得しましょう。&lt;/P&gt;
&lt;P&gt;ちなみに、こちらは "NT AUTHORITY\INTERACTIVE" に十分な権限が与えられているので更新等で問題が生じることはほぼないでしょう。逆に厳しくしたいという要件が結構あるかも。&lt;/P&gt;
&lt;P&gt;&amp;lt;参考&amp;gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://support.microsoft.com/kb/310294/"&gt;Visual C++ 2005 または Visual C++ .NET を使用して、ユーザーとアプリケーションのデータを適切な場所に格納する Windows XP アプリケーションを記述する方法&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/167574.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Components はどのように分割するべきか？</title><link>http://blogs.wankuma.com/tyappi/archive/2009/01/12/166171.aspx</link><pubDate>Mon, 12 Jan 2009 01:14:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/01/12/166171.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/166171.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/01/12/166171.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/166171.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/166171.aspx</trackback:ping><description>&lt;p&gt;大規模な projects だと設計時にどこで components を分割するか検討すると思います。&lt;/p&gt; &lt;p&gt;その多くは大きな機能の括りである sub system 単位で分割すればいいということで終わっていたりしないでしょうか？&lt;/p&gt; &lt;p&gt;個人的にはこれでは不十分だと思います。以下その理由。&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Scalability を考慮すると現状でもまだまだ scale out が有効だが、sub system 単位ではその負荷までを考慮しきれていない&lt;/li&gt; &lt;li&gt;Security を考慮すると、security 境界が必要な部分で components を分割することが非常に有効&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;個人的には、これらのことを総合的に評価して初めて分割を決定するべきだと思います。&lt;/p&gt; &lt;p&gt;なお、前者は負荷が問題となるまで顕在化しませんが、後者は潜在的な問題があるだけで問題ですね。&lt;/p&gt; &lt;p&gt;ということで、個人的な components の分割基準としては、&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Security&lt;/li&gt; &lt;li&gt;Performance&lt;/li&gt; &lt;li&gt;機能&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;という優先順位になると思います。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/166171.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Administrators group に所属するか否かで判断するのがよろしくない理由</title><link>http://blogs.wankuma.com/tyappi/archive/2009/01/12/166167.aspx</link><pubDate>Mon, 12 Jan 2009 00:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/01/12/166167.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/166167.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/01/12/166167.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/166167.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/166167.aspx</trackback:ping><description>&lt;P&gt;そういえば、&lt;A href="http://blogs.wankuma.com/tyappi/archive/2007/12/09/112231.aspx"&gt;Administrators に所属するか調査する方法&lt;/A&gt; で &amp;#8220;Administrators&amp;#8221; group に所属しているか否かで判断するのはやめるべきだとは書きましたが、明確な理由を書いていなかったので。&lt;/P&gt;
&lt;P&gt;その最大の理由は委任ができなくなることです。&lt;/P&gt;
&lt;P&gt;Secure OS の基本的な考えですが、管理者が全権を持ってはいけないという考え方があります。&lt;/P&gt;
&lt;P&gt;そういう状況を想定してみてください。Application 側で &amp;#8220;Administrators&amp;#8221; group に所属していることを前提とした coding を行った場合、その処理を &amp;#8220;Administrators&amp;#8221; group に所属していない user では実行できなくなります。&lt;/P&gt;
&lt;P&gt;&amp;#8220;Administrators&amp;#8221; group に所属させたくないが、特定の機能をある user には実行させたいという要件は、ごく自然に発生します。というのは、本当の全権を与えるということはどんな監査すら意味なくする権限を有するということですから。&lt;/P&gt;
&lt;P&gt;制限かけるならば、built-in group ではなく、SQL Server のような専用の group を作成し利用するべきでしょう。もしくは、柔軟な制御はできなくなりますが、role-base access control を利用する方法もあります。&lt;/P&gt;
&lt;P&gt;管理者のみ実行可能というのは非常にわかりやすいので、思わずそれで制限を掛けてしまいたくなりますが正直この方法はとるべきではないと思います。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/166167.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Service security identifier</title><link>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166087.aspx</link><pubDate>Sat, 10 Jan 2009 14:21:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166087.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/166087.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166087.aspx#Feedback</comments><slash:comments>757</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/166087.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/166087.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/tyappi/archive/2007/04/11/70900.aspx"&gt;%Windows% に対し cacls.exe を打ってみる&lt;/A&gt; に&amp;nbsp;&lt;A href="http://blogs.wankuma.com/shannon/"&gt;&lt;FONT color=#669966&gt;aetos&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;氏より comment もらっていたので。&lt;/P&gt;
&lt;BLOCKQUOTE cite=http://blogs.wankuma.com/tyappi/archive/2007/04/11/70900.aspx#165533&gt;
&lt;P&gt;ドメイン部が NT Service になっていますね。 &lt;BR&gt;これは、Vista から導入されたサービスアカウントです。 &lt;BR&gt;サービス プロセスを実行するユーザーアカウントだと粒度が粗すぎるってんで、サービス単位に ACE を持てるようになりました。 &lt;BR&gt;で、TrustedInstaller ってのは、Windows Modules Installer っていうサービスですね。&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;ご指摘の通り、Windows Vista から導入された &lt;A href="http://msdn.microsoft.com/en-us/library/ms685987.aspx"&gt;service security identifier&lt;/A&gt; ですね。ただ、"サービスアカウント" というのはちょっと引っかかるかな。&lt;/P&gt;
&lt;P&gt;このことについては「&lt;A href="http://msdn.microsoft.com/ja-jp/magazine/cc164252.aspx#S5"&gt;サービスのデータを保護する&lt;/A&gt;」で説明されています。&lt;/P&gt;
&lt;P&gt;とはいえわかりにくい部分があるので、実際にどんな風になっているか見てみましょう。調査対象は Windows Search (省略名: WSearch, process name: SearchIndexer.exe) です。&lt;/P&gt;
&lt;P&gt;&lt;A href="http://tyappi.wankuma.com/images/Servicesecurityidentifier_C9E5/WSearchAccessToken.png"&gt;&lt;IMG title=WSearchAccessToken style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=244 alt=WSearchAccessToken src="http://tyappi.wankuma.com/images/Servicesecurityidentifier_C9E5/WSearchAccessToken_thumb.png" width=189 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;起動している user は service の起動 account である "NT AUTHORITY\SYSTEM" です。ただ、group に "NT SERVICE\WSearch" が含まれていますね。これが &lt;A href="http://msdn.microsoft.com/en-us/library/ms685987.aspx"&gt;service security identifier&lt;/A&gt; です。&lt;/P&gt;
&lt;P&gt;これを利用することにより、同じ service&amp;nbsp;account を利用しても、特定の service のみ許可、もしくは特定の service のみ拒否するといった &lt;A href="http://msdn.microsoft.com/en-us/library/aa374868.aspx"&gt;ACE&lt;/A&gt; を記述することが可能です。&lt;/P&gt;
&lt;P&gt;以後蛇足。&lt;/P&gt;
&lt;P&gt;Privilege をみると結構な数の特権が削除されていることがわかります。これは、&lt;A href="http://blogs.wankuma.com/tyappi/admin/Restricted%20Token"&gt;restricted token&lt;/A&gt; を利用することによって実現されています。必要最小限となる serivce account の選定と &lt;A href="http://blogs.wankuma.com/tyappi/admin/Restricted%20Token"&gt;restricted token&lt;/A&gt; を利用した token の制限は service の security を保つ上で非常に重要です。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/166087.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Interface, method での access 制御の必要性</title><link>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166055.aspx</link><pubDate>Sat, 10 Jan 2009 00:58:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166055.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/166055.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166055.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/166055.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/166055.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/tyappi/archive/2009/01/10/166053.aspx"&gt;Access を制御しているように見えても強度は異なる&lt;/a&gt; の続き&lt;/p&gt; &lt;p&gt;新たなものを導入するためには、現状では不十分である理由を示さなければなりません。&lt;/p&gt; &lt;p&gt;確かに、多層防御が必要というのは一理あるでしょう。理想論としては、多層防御を行えば行うほど security level は高まりますので。&lt;/p&gt; &lt;p&gt;ところで、今回の議題は interface や method での access 制御です。これを行うことによる security の向上はどの程度期待できるでしょうか？&lt;/p&gt; &lt;p&gt;正直、劇的に変わらないんじゃないかと思います。&lt;/p&gt; &lt;p&gt;ぶっちゃけた話、一部の例外を除き interface ましてや method で access 制御を行う必要性が思い浮かばないんですよ。そんなことするくらいなら、process 分けるとかする方が簡潔でかつ確実な access 制御できますから。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/166055.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Access を制御しているように見えても強度は異なる</title><link>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166053.aspx</link><pubDate>Sat, 10 Jan 2009 00:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166053.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/166053.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/01/10/166053.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/166053.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/166053.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/tyappi/archive/2009/01/08/165961.aspx"&gt;Access を制御するものはどこに置くべき？&lt;/a&gt; の続き&lt;/p&gt; &lt;blockquote site="http://blogs.wankuma.com/tyappi/archive/2009/01/08/165961.aspx"&gt; &lt;p&gt;&lt;a href="http://indori.blog32.fc2.com/"&gt;インドリ&lt;/a&gt;氏の書き込みより&lt;/p&gt; &lt;p&gt;セキュリティ階層についてですが、ボクは多層防御の必要性を感じています。 &lt;br&gt;その辺がちゃぴさんと相容れないのかもしれませんが、より一層の多段防御をするほうが良いのではないでしょうか？&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;これについては説明すると長くなるので、とりあえず第一弾ということで。&lt;/p&gt; &lt;p&gt;「&lt;a href="http://www.wankuma.com/seminar/20071006tokyo13/Default.aspx"&gt;わんくま同盟 東京勉強会 #13&lt;/a&gt;」で説明したことですが、Windows では扱う resource (file, registry, process, thread, etc) のほとんどを ACL で管理しています。&lt;/p&gt; &lt;p&gt;この ACL を利用した access 制御ですが、logon 時に生成される &lt;a href="http://msdn.microsoft.com/en-us/library/aa374909.aspx"&gt;access token&lt;/a&gt; が process もしくは thread に関連付けられ、その &lt;a href="http://msdn.microsoft.com/en-us/library/aa374909.aspx"&gt;access token&lt;/a&gt; と ACL を照合することによって行われます。&lt;/p&gt; &lt;p&gt;この照合作業の多くは kernel level で行われていて、かつ対象となる resource は process 内部の memory 領域には存在せず、kernel を通じてのみ扱えることがミソです。&lt;/p&gt; &lt;p&gt;この場合、access 制御を回避する方法は OS を停止させるような方法を除外すると kernel を攻略しないとお話しになりません。&lt;/p&gt; &lt;p&gt;次に&lt;a href="http://indori.blog32.fc2.com/"&gt;インドリ&lt;/a&gt;氏が主張している interface, method level での access 制御ですが、これ扱うのは対象は process 内の memory 空間に保持されているものですね。&lt;/p&gt; &lt;p&gt;既存の概念を壊さないで access 制御を実現させる場合、process memory 空間はいじらず、ただ単に interface や method を呼び出す前に access control させる手法があります。&lt;/p&gt; &lt;p&gt;ただ、これには弱点があります。その application に buffer overflow のような脆弱性が存在した場合、この方法で防御することはできません。&lt;/p&gt; &lt;p&gt;同じ access 制御を実現する 2 つの方法ですが、強度はかなり違ってきます。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/166053.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>ちゃっぴ (tyappi@wankuma.com)</dc:creator><title>Access を制御するものはどこに置くべき？</title><link>http://blogs.wankuma.com/tyappi/archive/2009/01/08/165961.aspx</link><pubDate>Thu, 08 Jan 2009 23:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/tyappi/archive/2009/01/08/165961.aspx</guid><wfw:comment>http://blogs.wankuma.com/tyappi/comments/165961.aspx</wfw:comment><comments>http://blogs.wankuma.com/tyappi/archive/2009/01/08/165961.aspx#Feedback</comments><slash:comments>199</slash:comments><wfw:commentRss>http://blogs.wankuma.com/tyappi/comments/commentRss/165961.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/tyappi/services/trackbacks/165961.aspx</trackback:ping><description>&lt;UL&gt;
&lt;P&gt;ネタ元&lt;/P&gt;
&lt;LI&gt;&lt;A href="http://blogs.wankuma.com/episteme/archive/2009/01/07/165775.aspx"&gt;interfaceに物申す(3)&lt;/A&gt; 
&lt;LI&gt;&lt;A href="http://indori.blog32.fc2.com/blog-entry-625.html"&gt;ネタつつき20－軽視されている概念アクセスとプログラミング言語の進化&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://indori.blog32.fc2.com/"&gt;&lt;/A&gt;&lt;A href="http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%89%E3%83%AA"&gt;&lt;STRIKE&gt;インドリ&lt;/STRIKE&gt;&lt;/A&gt;&lt;A href="http://indori.blog32.fc2.com/"&gt;インドリ&lt;/A&gt;氏は coding 時に class, interface 果ては method, property まで利用者での access control できるようにすべきとの意見に見えます。Coding 時に access control を決定すると言うことは、つまり開発側が access control を決定するということになります。&lt;/P&gt;
&lt;P&gt;ちょっと待ってください。これ本当にあるべき姿なんでしょうか？&lt;/P&gt;
&lt;P&gt;利用される環境が特定されている環境ではそれでもいいでしょう。ただし、特定されない環境ではどうなるでしょう？ 開発側が示した access control が利用者側の policy を満たさない場合、使いもんにならないものになるでしょう。&lt;/P&gt;
&lt;P&gt;また、利用される環境が特定されている場合でも、要件の変更なんてしょっちゅうありますよね。Access を制御するもの (例えば ACL) を code 内に内包した場合、その都度 compile し直して binary 配布する必要があります。&lt;/P&gt;
&lt;P&gt;ということで、access を制御するものを code 内に内包するのは得策とは言えません。Binary とは別の編集可能なところに access を制御するものを置くべきでしょう。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/tyappi/aggbug/165961.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>