次の方法で共有


ビジネス ルール フレームワークのセキュリティ

ビジネス ルール エンジンは、ホスト アプリケーションのセキュリティ コンテキストで動作します。 実行中のルール エンジン インスタンスの ID は、 Policy.Execute メソッドを呼び出すスレッド コンテキストの ID です。

既定のセキュリティ構成

Microsoft BizTalk Serverをインストールすると、既定で 2 つの Microsoft Windows グループが作成されます。1 つは管理者用、もう 1 つはユーザー用です。"BizTalk Server Administrators" と "BizTalk Application Users" です。これら 2 つの Windows グループは、それぞれ RE_ADMIN_USERS と RE_HOST_USERS SQL ロールのメンバーである BTS_ADMIN_USERS と BTS_HOST_USERS SQL ロールのメンバーです。

既定の SQL ロールは、ルール ストアが作成されるたびに作成されます(BTS_ADMIN_USERS、BTS_HOST_USERS、RE_ADMIN_USERS、RE_HOST_USERS)。

既定の Windows グループ SQL ロール
BizTalk Server 管理者 RE_ADMIN_USERS
BizTalk Application Users RE_HOST_USERS

RE_ADMIN_USERS ロールのユーザーだけが、展開とエンティティ アクセスの保護に関する構成テーブルを更新するストアド プロシージャを実行できます。 つまり、ルール エンジンの管理者によってのみ、展開、展開解除、および保護の構成が行われます。 RE_HOST_USERS ロールのユーザーは、SQL ルール ストアの他のストアド プロシージャを実行できます。

ルール エンジンのインストールの順序に関係なく、データベース アクセスがまだ許可されていない場合に、ルール エンジン構成のプロセスは、ルール エンジン更新サービスのアカウント メンバーシップに RE_HOST_USERS SQL ロールを与えます。 ただし、BizTalk を最初にインストールした後にルール エンジンをインストールすると、ホストの作成が既に行われているため、ホスト固有のユーザー グループは、ルール エンジン データベースの BTS_HOST_USERS SQL ロールに追加されません。 この手順は手動で実行する必要があります。

アイテム レベルのセキュリティ

ビジネス ルール エンジンでは、既定のセキュリティ構成に加えて、成果物 (ポリシーとボキャブラリ レベル) でセキュリティを提供することもできます。

各ポリシーのバージョンまたは各ボキャブラリのバージョンには、関連する 1 つ以上の認証グループがあります。 認証グループは、Microsoft Windows ユーザー、SQL ユーザー、SQL ロール、および Windows グループの名前付きのリストです。それぞれ特定のアクセス レベルを持っています。

新しいポリシーまたはボキャブラリがルール ストアに作成されると、既定で、ポリシーまたはボキャブラリを作成したユーザーとルール エンジン管理者だけが、読み取り/実行および変更/削除の処理を行うことができます。 ルール エンジン管理者は、読み取り/実行、変更/削除、完全なアクセス許可、またはアクセス許可なしなど、さまざまな操作を実行するアクセス レベルまたは権限を持つユーザー (プロセスがユーザー資格情報で動作する) を構成できます。

既定では、アイテム固有のセキュリティは無効です。 アイテム レベルのセキュリティは、現在、ユーザー インターフェイスを通じては設定できません。 ただし、ビジネス ルール エンジン管理者の資格情報を使用して、プログラムによって設定できます。 次のコードは、新しい認証を作成してグループをルール セットに関連付ける方法を示しています。

RuleSet rs;  
string RSName;     
  
// Create new user  
AuthorizationGroupEntry newuser = new AuthorizationGroupEntry(UserName, UID);  
AuthorizationGroupEntryCollection AGEC = new AuthorizationGroupEntryCollection();  
AGEC.Add(newuser);  
  
// Define new authorization group collection  
AuthorizationGroupCollection AGC = new AuthorizationGroupCollection();  
  
// Create new authorization group  
AuthorizationGroup AG = new AuthorizationGroup(GroupName, AccessPermit, AGEC);  
  
//add the authorization group to the authorization group collection  
AGC.Add(AG);  
  
//saving the authorization group collection to the rule store  
m_sqlRS.SaveAuthorizationGroups(AGC);  
  
rs = m_sqlRS.GetRuleSet(rsInfo[0]);                 
RSName = rs.Name;  
  
// Associate authorization group to the ruleset  
m_sqlRS.SetRuleSetAuthorizations(RSName, AGC);  
  
// Get ruleset by name from SQL rule store  
RuleSetInfoCollection rsInfo = m_sqlRS.GetRuleSets("myRuleSet", RuleStore.Filter.All);  

Note

アイテム レベル 1 のセキュリティを使用すると、パフォーマンスが低下することがあります。ルール エンジンのインスタンスを返す前に、ポリシーが実行ごとにデータベース検索を行い、アプリケーションのアクセス レベルを評価する必要があるためです。

参照

ビジネス ルール エンジンに関する重要なセキュリティ メモ