2009年7月31日金曜日

Geneva ServerのSTSとしての動作を確認

なかなか時間がとれずに手をつけられなかったGeneva(Active Directory Federation Services)ですが、ようやく触り始めました。
まずは手始め、ということでGeneva ServerのSTS(Security Token Service)の動作確認も兼ねて、STSを使うWebアプリケーションをGeneva Framework(Windows Identity Framework)を使って作ってみました。

動作のイメージはこんな感じです。













作業の流れとしては、
・Geneva Framework / Geneva Framework SDKのインストール
・Claimを使うWebアプリケーションの作成
・作成したアプリケーションが別途構築したGeneva ServerのSTSを使うように設定
・作成したアプリケーションをGeneva ServerにRelying Partyとして登録
・動作確認(STSに定義したClaimをキチンと取得できるかどうか)
となります。

早速順番に見ていきます。

■Geneva Framework / Geneva Framework SDKのインストール

まず今回用意した環境は下記の通りです。
・Windows Server 2008 EE 64bit(1台のサーバにADDS以外は入れました)
・Geneva Framework
・Geneva Framework SDK
・Visual Studio 2008 STD(.NET Framework 3.5SP1)


■Claimを使うWebアプリケーションの作成

アプリケーションの作成は下記の手順で行います。

1.Visual Studioを起動し、Webアプリケーションの新規作成













2.ソリューションエクスプローラからGeneva Frameworkのライブラリへの参照を設定します。
  対象は
  ・Microsoft.IdentityModel
  ・System.IdentityModel
  の2つです。






















3.Webページを作成します。
  取得したTokenからClaimを取り出してテーブルに内容を表示することにします。

















4.コードの作成
  Page_Loadイベントの中で取得したTokenからClaimを取り出します。

  IClaimIdentity型の変数callerを定義し、コンカレントセッションのセキュリティプリンシパル情報=取得したTokenをセットします。

  (実際のコード)
  IClaimsIdentity caller = (IClaimsPrincipal)(Thread.CurrentPrincipal)).Identities[0];

  次に、callerのメンバであるClaimsプロパティに入っているそれぞれのClaim(属性)をLINQを使って取り出して行きます。
  たとえば、ClaimTypeがNameの属性を取得したければ、caller.ClaimsからSystem.IdentityModel.Claims.ClaimType.Nameと合致するClaimを抜き出します。

  (実際のコード)
  string Name = (from c in caller.Claims where c.ClaimType == System.IdentityModel.Claims.ClaimType.Name select c.Value).Single();














■作成したアプリケーションが別途構築したGeneva ServerのSTSを使うように設定

具体的にはユーティリティを使ってアプリケーションのweb.configを設定します。

ドキュメントを見ているとソリューションエクスプローラで右クリックするとSTSの設定ができるようなことが書いてありますが、実際には出てこなかったのでGeneva Frameworkのインストールフォルダ以下のFedUtil.exeを直接実行します。
 やることは、
 ・作成したアプリケーションのWeb.configを指定
 ・STSとしてGeneva Serverのmetadataを指定
  ※https:///FederationMetadata/2007-06/FederationMetadata.xml
 の2点です。

















この後、アプリケーションをビルドして発行~IISへの登録をして、使えるようにします。


■作成したアプリケーションをGeneva ServerにRelying Partyとして登録

今度はSTS側の設定ですのでGeneva Serverの管理コンソールから作業をします。

Geneva Serverの管理コンソール















以下の手順でRPを登録します。
1.Policy → Replying Partiesを選択し、操作パネルから「Add Relying Party」をクリックする















2.ウィザードに従いRPの登録を行います
  すでにアプリケーション側は作成~設定済みなのでSelect Data Source画面では「Import relying party configuration from a local federation metadata file」を選択し作成したアプリケーションプロジェクトフォルダ配下にあるmetadataのxmlファイルを選択すてRP情報を登録します。




















3.Claimのマッピングルールを作成
  ウィザードが終了するとClaimルールエディタが起動するので、以下の通りマッピングなどを設定します。

項目設定
ルールタイプLDAP
Attribute StoreEnterprise Active Directory User Account Store(Geneva Serverが所属するドメインのAD DS)
ClaimマッピングLDAPOutgoing Claim Type
sAMAccountNameName
mailE-Mail Address
givenNameGiven Name
snSurname


  設定したら保存してエディタを終了します。

















■動作確認(STSに定義したClaimをキチンと取得できるかどうか)

ここまで来たらあとは動作テストです。以下の手順でうまく動くかを試してみます。

・ブラウザで作成/発行したテストアプリケーションサイトへアクセス
 https://localhost/WebApplication3/










・STSへリダイレクトされるのでサインイン
 認証方法としてWindows統合認証、証明書、IDとパスワードから選択出来るのでWindows統合認証を選択(もちろんIDとパスワードを入れてもOK)













・STSで認証され、元のサイトへリダイレクト
 STSから渡ってきたクレーム情報(ADDSの属性)が表示されればOKです。



















余談ですが、実際のアクセスの流れstraceでトレースしてhttpreplayで表示みると以下の通りです(細かい内容は機会があれば解説したいと思います)

IDMethodRequested URLStatus
1GEThttp://localhost/WebApplication3/default.aspx302
2GEThttp://localhost/FederationPassive/?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
3POSThttp://localhost/FederationPassive/IPSelection.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
4POSThttp://localhost/FederationPassive/IPSelection.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
5POSThttp://localhost/FederationPassive/SignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z302
6GEThttp://localhost/FederationPassive/auth/integrated/IntegratedSignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z401
7GEThttp://localhost/FederationPassive/auth/integrated/IntegratedSignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z401
8GEThttp://localhost/FederationPassive/auth/integrated/IntegratedSignIn.aspx?wa=wsignin1.0&wtrealm=https%3a%2f%2flocalhost%2fWebApplication3%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebApplication3%252fdefault.aspx&wct=2009-07-30T08%3a47%3a46Z200
9POSThttp://localhost/WebApplication3/302
10GEThttp://localhost/WebApplication3/default.aspx200

2009年7月28日火曜日

ILM2007FP1 PowerShellコマンドレット

以下のURLからダウンロードできます。(当然ながら使うためには事前にPowerShellをインストールしておく必要があります)

・ILM2007FP1 PowerShellコマンドレット
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=89b59938-4323-4ad2-afed-99fec4520385

・リファレンスガイド
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=38b31e06-0342-481e-b744-9899d5b601db


インストールは以下の手順です。
■MAConfigSetup.msiの実行
ダウンロードしたMSIファイルを実行します。

■PowerShellへのスナップインの追加
カスタムコマンドレットを使うためにはインストール/スナップインの追加という流れになります。

ただ、追加したアセンブリ(ILMインストール先\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll)の厳密な名前で署名されていないので、sn.exeにVrオプションを付けて検査をスキップさせる必要があります。

・sn.exeでの検査のスキップ
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin> sn.exe -Vr "C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll"

Microsoft(R) .NET Framework Strong Name Utility バージョン 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.

アセンブリ 'Microsoft.DirectoryServices.MetadirectoryServices.Config,31BF3856AD364E35' の確認エントリが追加されました。



次にカスタムコマンドレットのインストールを行います。インストールにはInstallUtil.exeを使用します。

・インストール
PS C:\Program Files\Microsoft Identity Integration Server\UIShell> &"$env:windir/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe" ".\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll"
Microsoft(R) .NET Framework Installation utility Version 2.0.50727.1433
Copyright (C) Microsoft Corporation. All rights reserved.

トランザクションのインストールを実行中です。

インストール段階を開始しています。
C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll アセンブリの進行状態については、ログ ファイルの内容を参照してください。
ファイルは C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog にあります。
アセンブリ 'C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll' をインストールしています。
該当するパラメータ:
logtoconsole =
assemblypath = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll
logfile = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog

インストール段階が正常に完了しました。コミット段階を開始しています。
C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll アセンブリの進行状態については、ログ ファイルの内容を参照してください。
ファイルは C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog にあります。
アセンブリ 'C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll' をコミットしています。
該当するパラメータ:
logtoconsole =
assemblypath = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.dll
logfile = C:\Program Files\Microsoft Identity Integration Server\UIShell\Microsoft.DirectoryServices.MetadirectoryServices.Config.InstallLog

コミット段階が正常に終了しました。


・スナップインの登録状態の確認

PS C:\Program Files\Microsoft Identity Integration Server\UIShell> Get-PSSnapin -Registered

Name : MIIS.MA.Config
PSVersion : 1.0
Description : PowerShell snap-in for configuring management agents


・スナップインを追加

PS C:\Program Files\Microsoft Identity Integration Server\UIShell> Add-PSSnapin MIIS.MA.Config
PS C:\Program Files\Microsoft Identity Integration Server\UIShell>



■利用可能なコマンドレット
実は私の環境では完全には動かなかったのですが、リファレンスガイドを見ると下記のようになっています。

コマンドレット機能引数
Import-MIISServerConfigサーバ設定のインポートを行う
(Identity Managerのfileメニューからエクスポートしたxmlファイルをインポートする)
-Path
 xmlファイルの存在するフォルダのパス
Set-MIISADMAConfigurationActive Directory MAの設定を更新する(フォレスト、クレデンシャルのみ)
このコマンドレットを使ってフォレスト設定を更新すると対象のMAはフォレスト内のすべてのドメインに対して同期を行うように設定される(MAのパーティションリストにすべてのドメインが追加される)
また同時に既存の実行プロファイルに各ドメインの情報が追加される
-Credentials
Active Directory MAユーザがドメインに接続する際に利用するパスワード(Stringではないので,Get-Credential forest\userでパスワード入力画面をポップアップさせる)

-MA Name
 対象のMA名

-Forest
 同期対象のフォレストのFQDN
Set-MIISExtMAConfigurationExtensible MA(XMA)の設定を更新する(クレデンシャルおよびConnect toプロパティのみ)-ConnectTo
 XMAのConnect toに設定する接続文字列

-Credentials
XMAユーザがドメインに接続する際に利用するパスワード(Stringではないので,Get-Credential forest\userでパスワード入力画面をポップアップさせる)

-MA Name
 対象のMA名

2009年7月16日木曜日

"Geneva"の正式名称発表

7/13にWPC(Worldwide Partner Conference)で発表されたようです。

http://blogs.technet.com/forefront/archive/2009/07/13/business-ready-security-news-at-wpc.aspx

CodeName正式名称
"Geneva" ServerActive Directory Federation Services
"Geneva" FrameworkWindows Identity Foundation
"Geneva" CardspaceWindows Cardspace



まぁあまり違和感ないと言うか順当と言うか、です。

2009年7月15日水曜日

カンターラ・イニシアティブ発足記念セミナー

昨日、オラクル青山センターで開催されたので参加してきました。

アジェンダおよび内容は以下の通り。

1.カンターラ・イニシアティブ概要説明 / NTT情報流通プラットフォーム研究所 高橋氏

 アイデンティティのベン図(The Venn of Identity)を紹介し、カンターラ・イニシアティブとしてはアイデンティティ管理に関連する3つの技術分野(SAML、OpenID、Infomation Card)の「ハーモナイズ」を目指すという話でした。
 ※ちなみにカンターラとはスワヒリ語で「橋」という意味で、語源にアラビア語の「調和」を持つとのことです。語源とよりアラビア語では3つの子音で意味をあらわすので今回のケースだと「نطر」(n t r)がベースとなっている「قنطرة(カンタラトゥン)=アラビア語でも橋の意」がそのままスワヒリ語になっているんだと思いますが。

 活動の特徴としては、技術仕様の検討は行うが、実際の策定は各団体(OIDFやLibertyなど)が行うことになる、ということでした。
 ちなみにConcordia、Liberty Alliance、Open Libertyは今後カンターラ・イニシアティブの配下にはいるようです。

2.分科会における取組事例~SAML-OpenID連携~ / NTT情報流通プラットフォーム研究所 岡本氏

 RSAカンファレンス2009で紹介したデモンストレーションが紹介されました。
 OpenIDのIdPで認証してSAML対応のサービスを利用したり、決済をする場合は追加でSAML IdPでも認証を要求して多要素認証としたり、という内容でした。

3.カンターラ・パートナーセッション
 OpenID最新動向、OpenIDファウンデーションジャパン活動 / 野村総合研究所 崎村氏

 OpenIDそのものの簡単な紹介と、OpenIDファウンデーションの活動内容(技術セミナや崎村氏自身が関与している各種仕様策定の活動)の紹介がありました。

 また、関連するニュースとしてGoogle AppsがOpenIDに対応する、という話がありました。(意図せぬ情報のリークだった様でしたが)

4.カンターラに集う技術事例(1)Liberty/SAML事例紹介
 SAML認証によるGoogleAppsの認証連携事例の紹介 / サイオステクノロジー 中田氏

 「コスト削減」という企業における命題に対してクラウドが選択されてきていますが、エンタープライズ利用に必要な「セキュリティ」と、クラウドの特徴である「どこからでも使える」の相反をどう解決するか、という点への取り組みが紹介されました。

 例えば、GMailを社内からOutlookやThunderbirdといったメールクライアントでpop/imap利用をしたいが、GoogleAppsの特徴からして自宅でも同じ設定をすればそのまま使えてしまうのでなんとかしたい、というセキュリティ上の課題を社内プロキシ経由でないとGMailが使えないようにした、という話がありました。

5.カンターラに集う技術事例(2)OpenID事例紹介
 NTTComにおけるOpenID活用の取り組み / NTTコミュニケーションズ 北村氏

 現在取り組みつつある「マスタID」のOpenID対応について紹介されました。
 以前はLiberty仕様で構築されていたものをOpenIDに対応させようとしているとのことです。

 取組みとしては、OpenID対応のIdPプロキシのようなものを構築してNTTコミュニケーションズ提供のIdP、NTTドコモのIdP、gooのIdPをユーザが選択できるような仕組みづくりや、決済などを含むアプリケーションを含めたサービス対応を考えているようです。

 参加者からの質問も出ていたのですが、例えば決済する際にgooのIDとドコモのIDを同列に信頼してよいのか?という課題への取り組みが重要になってくると思います。

6.カンターラに集う技術事例(3)Infomation Card事例紹介 / マイクロソフト 田辺氏

 SAMLやOpenIDとは少し違った点としてCardSpaceではユーザビリティを中心に取組んでいるという話が紹介されました。
 Geneva STSを使った別ドメインのSharePointサイトへのログオン/属性交換のデモも行われました。



まぁとりあえずは発足したばかり、ということでカンターラ・イニシアティブとしての具体的な取組みはこれから、ということだと思いますので、今後の動きを要ウォッチだと思います。

2009年7月7日火曜日

OpenIDとSAMLの比較

最近Project Concordiaのメーリングリストで「OpenIDとSAMLのどちらがスケーラブルでエンタープライズ環境での利用に耐えうるか?」という議論が繰り広げられていたのですが、その中で割と面白いレポートが出てきたので紹介します。(議論自体はConcordiaという場で取り上げるには場違いで好き勝手に発散していった感がありますが・・・。まぁOpenID、SAML、CardSpaceの各コミュニティが割と近くにいる日本と違って欧米ではOpenID vs SAMLという風潮があるようです)

Technical Comparison: OpenID and SAML
http://identitymeme.org/doc/draft-hodges-saml-openid-compare.html

Abstract

This document presents a technical comparison of the OpenID Authentication protocol and the Security Assertion Markup Language (SAML) Web Browser SSO Profile and the SAML framework itself. Topics addressed include design centers, terminology, specification set contents and scope, user identifier treatment, web single sign-on profiles, trust, security, identity provider discovery mechanisms, key agreement approaches, as well as message
formats and protocol bindings. An executive summary targeting various audiences, such as end-users, implementors, and deployers, is provided. We do not attempt to assign relative value between OpenID and SAML, e.g. which is "better"; rather, it attempts to present an objective technical comparison.


ざっくり言うと、OpenIDの認証プロトコルとSAMLのWebブラウザSSOプロファイルおよびSAMLのフレームワーク自体をあくまで技術的側面から比較した資料であり、どちらが優れているという優劣をつけるために資料ではない、ということです。
用語の対比や仕様の対比表があったりするので、とても判り易くまとまっていると思います。(まだざっくりと全体を眺めただけですが)

2009年7月2日木曜日

SAP NetWeaver Identity Managementコネクタ概要

SDN(SAP Developer Network)のblogにSAP NetWeaver Identity Management - IDM Connector Overviewが紹介されています。


これまで各コネクタに関する情報(前提となるバージョンや機能、サポートの有無など)は積極的に公開はされてこなかったのですが、今回公開された資料にはある程度何ができるのかがわかる程度まで書いてあります。
他のベンダもそうですが、「接続可能製品一覧」を製品紹介資料の付録に載せるだけではなく、ある程度何ができるのかイメージできるような情報公開をしていって欲しいと思っていたので、とても良い資料だと思います。

簡単に内容ですが、
■SAP Application Connector
 他のSAP製品(HCMやFIなど)との接続にあたっての前提事項(バージョンなど)および機能(ユーザの追加・変更・削除などの基本的な機能+他にできること)が紹介されています。

■CUA(Central User Administration)との関係
 これは従来CUAを使ってSAP環境のIDを管理していた人にはうれしい情報かも知れません。
 今後はSAPオンリーの環境においても基本的にNetWeaver IdMを使っていく、という方針には変わりないのでしょうが本資料はIdMとCUAの使い分けや共存に関する簡単な指針となりうる情報だと思います。

■Connectors to Non-SAP Applications
 SAP製品以外との接続に関する情報です。SAP製品とのコネクタと同様に前提事項や機能について解説されています。
 意外と知られていないところして、テキストファイルとのコネクタに関してはEventベースの更新はサポートされない、などの情報があったりしました。
 他にもActive DirectoryやExchangeに関しては現状2000/2003のみがサポート対象だったり、変わり種としてMIIS/ILMコネクタが紹介されていたりします。
(ちなみにMIIS/ILMコネクタはMIIS/ILM上で開発した管理エージェントなどをそのまま使いたいときなどにカスケード接続で利用します。中身は単なるSQLコネクタなんですけどね)

2009年7月1日水曜日

フォーラムで質問で最良の回答を得る方法

technetのILMフォーラムに面白い投稿があったので、紹介します。

How to get the maximum return on your forum question(フォーラムで質問で最良の回答を得る方法)」


内容を見ていくとILMに限った話だけでなく、このようなオンラインフォーラムで質問する際の心構え?的なことも多くのっていたので他でも参考になるのではないかと思います。

簡単に内容を紹介します。


■はじめに

 回答者が質問の内容を理解するためには環境や質問の背景を知る必要があるが、多くの場合最初に投稿される質問には回答する上で必要な状況が適用されていない場合が殆どである。

■的確な情報を集めること
 質問する際の第一歩として、質問しようとしていることに関連する情報を集める必要がある。この際、アーキテクチャや設計に関する、よりハイレベルな質問とトラブルシューティングに関する質問では情報収集に関するアプローチが異なる。

 まず、トラブルシューティングに関する質問をする際は、
 ・投稿する前に詳細なデータを集める
 ・環境に関する簡潔で基本的な情報を提供する
 ・エラー状況を詳細に記述する
 という点に留意する必要がある。

 また、アーキテクチャや設計に関する質問をする際は、
 ・現在の状況は?
 ・どこからスタートしたのか?
 ・何を達成しようとしているのか?
 ・具体例を挙げられるか?
 について考える必要がある。


#ここまではILM/MIISだけに関連する話ではありません。次のパートからILM/MIISに特化した話が深堀されていきます。


■情報収集すべき重要な構成要素
 ほとんどの場合に最初の質問で提供すべき中心的な構成要素は下記の通りである。
 ・基本的なILM/MIISサーバ構成
 ・SQL Server構成
 ・管理エージェント(MA)の情報
 ・エラーコードとエラー状況

・基本的なILM/MIISサーバ構成
 以下の項目が挙げられる。
 ・MIIS/ILMのバージョン(ビルド)
 ・SQL Serverのバージョン(ビルド)
 ・SQL Serverのロケーション(ローカルなのかリモートなのか)
 ・ライセンスタイプ(MSDN、ボリュームライセンス、評価版)
 ・サービス実行環境(開発環境、テスト環境、本番環境)

 サービス実行環境(開発、テスト、本番)に関する情報ははトラブルシューティングのアプローチに影響を及ぼす。例えば、開発環境においては抜本的な措置(完全にデータを削除するような)をとることが出来るが、本番環境において事前の計画や準備なしに多数のオブジェクトが入っているコネクタスペースを削除することはすべきではない。
 回答者が質問者のサービス実行環境を知っていれば、適切な処理方法を提案することが出来る。

・SQL Server構成
 フォーラムの投稿を見ているとパフォーマンスに関連する多くの質問が存在するが、例えばリモートのSQL Server上でILMを使用するときシステム全体のパフォーマンスに重大な影響を与えることがある。
 また、SQL Serverに関する情報を提供すべきもう一つの理由はネットワークとサーバのセキュリティが挙げられる。ILMサーバと同居しているSQL ServerとリモートのSQL Serverを比較すると若干異なるアプローチが必要となる。

 提供すべき典型的なSQL Serverパラメータは以下の通りである。
 ・SQL Serverはどこにインストールされているのか(ローカル or リモート)
 ・SQL Serverのバージョン(ビルド)
 ・SQL Serverのタイプ
 ・SQL Serverのセキュリティパーミッション
 ・ライセンスタイプ(MSDN、ボリューム、評価、、、)

・管理エージェント(MA)の情報
 管理エージェントはILMと関連するデータソースの間のデータ交換を行うので、利用している管理エージェントのタイプは回答に非常に大きな影響を与える。

 提供すべき情報としては以下のものが挙げられる。
 ・ILMが接続しているデータソースは何か?
 ・どんなMAを利用しているか?
 ・サードパーティMAやXMAを利用しているか?
 ・MAのオブジェクト数はいくつか?
 ・メタバース(MV)のオブジェクト数はいくつか?

 MAを構成する際にエラーが発生するようならば、まずFAQでデータソースのバージョンがサポートされていることを確認するべきである。

 MVとコネクタスペース(CS)のオブジェクト数はシステム負荷の指標ということが出来る。CSのオブジェクト数とMVのオブジェクト数の比率はJoinとProjectionルールの概要を把握するのに役立つ。


・エラーコードとエラー状況
 エラーコードはトラブルシューティングにおいて重要な役割を果たす。しかし、多くの場合質問者はエラーに関する不完全な情報しか提供していない。
 情報を提供する際は、エラーコードと併せ以下のガイドラインに従い情報を収集/提供すべきである。
 ・システムから取得する「正確な」エラーメッセージを含める
 ・メッセージの詳細な内容まで掘り下げる
 ・関連するメッセージを確認するためにイベントビューアをチェックする
 ・Extensionのログについても確認する
 ・詳細(冗長)なログを提供する

■Rules Extensionのトラブルシューティング
 MAおよびMVのExtensionのトラブルシューティングを行う時、Extenrionをデバッグモードでコンパイルする。その際、デバッグ情報の生成オプションに「完全」を指定する。


■構成状況に関する情報
 ILM基盤は複数のコンポーネント(ILM、OS、SQL、.NET Framework、Visual Studio Extension、、)が複雑に絡み合って構成されており、これらの構成要素のほんの少しの変更がトラブルを引き起こす可能性がある。それらすべてのコンポーネントを一人で管理できていれば良いが、経験上これらの環境は複数の人や組織で管理されており、チームを構成する全メンバがそれぞれの担当部分のI/O
を把握しているわけではない。
 そのため、ある程度の期間運用されているILMが突然/断続的に不具合を起こした際、根本的な原因にたどり着くのは非常に困難である。
 そのような環境においてILMのトラブルシューティングを行う場合、技術基盤に関して幅広い視野で臨む必要がある。

 例えば、システムの変更記録やイベントログから下記の情報を取得する必要がある。
 ・最近システム構成に変更があったかどうか(アップデート、アップグレード、ホットフィックス適用など)
 ・エラーはいつ起きるのか?
 ・エラーは再現可能か?
 ・エラーは断続的に発生するか?
 ・特別な環境は存在するか?(高度にセキュアなネットワーク、サービスのロックダウンなど)

■そのた付加情報
 技術的な話ではなく、且つILMに特化した話でもないが以下は重要である。
 ・それまでにどの投稿を見たか?
 ・特定にホットフィックスをインストールしたか?
 ・どのRun Profileを実行したか?

■提供すべきではないシステム情報
 逆に提供すべきではない情報としては以下が挙げられる。
 ・パスワード
 ・個人情報
 ・実行環境のコンピュータ/ドメイン情報
 ・サービスアカウント名
 ・IPアドレス
 など。

■アーキテクチャや設計に関する質問
 トラブルシューティングではなく、アーキテクチャや設計に関する質問を行う場合は下記の情報を提供する必要がある。
 ・セットアップに関する若干の基礎データ
 ・すでに何をインプリしたか?
 ・何をしたいのか?どこに到達したいのか?

 具体例や画面ショットなどで出来るだけ詳細な情報を提供することが必要である。


■まとめ
 質問をする際は目的によって提供すべき情報/アプローチは異なる。

 ・トラブルシューティングを行うとき
  ・投稿する前に詳細なデータを集める
  ・環境に関する簡潔で基本的な情報を提供する
  ・エラー状況を詳細に記述する

 ・アーキテクチャや設計に関する質問をする際は、
  ・セットアップに関する若干の基礎データ
  ・何をしたいのか?どこに到達したいのか?

■チェックリスト
 ここまでの情報をまとめたチェックリストを提供するの参考にされたい。
 ※リンク切れしているみたいです。復活したら貼りなおします。。