비즈니스 규칙 프레임워크 보안
비즈니스 규칙 엔진은 호스팅 응용 프로그램의 보안 컨텍스트에서 작동합니다. 실행 중에 instance 규칙 엔진의 ID는 Policy.Execute 메서드를 호출하는 스레드 컨텍스트의 ID입니다.
기본 보안 구성
Microsoft BizTalk Server 설치할 때 기본적으로 두 개의 Microsoft Windows 그룹이 만들어집니다. 하나는 관리자용이고 다른 하나는 "BizTalk Server 관리자" 및 "BizTalk 애플리케이션 사용자"입니다. 이러한 두 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 애플리케이션 사용자 | RE_HOST_USERS |
RE_ADMIN_USERS 역할의 사용자만 배포 및 엔터티 액세스 보호 구성 테이블을 업데이트하는 저장 프로시저를 실행할 수 있습니다. 즉, 규칙 엔진 관리자만 배포, 배포 취소 및 보호 구성 작업을 모두 수행할 수 있습니다. RE_HOST_USERS 역할의 사용자는 SQL 규칙 저장소의 다른 저장 프로시저를 실행할 수 있습니다.
RE_HOST_USERS SQL 역할에 데이터베이스 액세스 권한이 없는 경우 규칙 엔진 구성 프로세스에서는 규칙 엔진 설치 순서에 관계없이 이 역할에 규칙 엔진 업데이트 서비스 계정 자격을 부여합니다. 그러나 처음 BizTalk을 설치한 후 규칙 엔진을 설치하면 호스트가 이미 만들어졌기 때문에 호스트별 사용자 그룹이 규칙 엔진 데이터베이스의 BTS_HOST_USERS SQL 역할에 추가되지 않습니다. 따라서 이 단계를 수동으로 수행해야 합니다.
아티팩트 수준 보안
비즈니스 규칙 엔진은 기본 보안 구성 외에도 아티팩트(정책 및 어휘 수준)에서 보안을 제공할 수 있습니다.
각 정책이나 어휘 버전에는 연관된 인증 그룹이 하나 이상 있습니다. 인증 그룹은 각 유형에 대해 특정 액세스 수준이 있는 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);
참고
아티팩트 수준 l 보안을 사용하면 정책에서 실행할 때마다 데이터베이스를 조회하여 규칙 엔진의 인스턴스를 반환하기 전에 응용 프로그램의 액세스 수준을 평가해야 하므로 성능이 저하될 수 있습니다.