Các ràng buộc trên metamodel RBAC được xác định như sau:
- Luật 1 : Trong một mô hình không có hai Role trùng tên nhau. context Map
inv: self.RootRole->forAll(r1:Roles,r2:Roles|r1<>r2 implies r1.name<>r2.name)
- Luật 2: Trong một mô hình không có hai Permission trùng tên nhau. context Map
inv: self.RootPermission->forAll(p1:Permission,p2:Permission|p1<>p2 implies p1.Name<>p2.Name).
- Luật 3: Trong một mô hình không có hai Resource giống nhau (trùng tên, trùng kiểu). context Map
inv: self.RootSource->forAll(r1:Resource, r2:Resource| (r1.name=r2.name)and(r1.Type=r2.Type) implies r1=r2)
- Luật 4: Trong cây kế thừa vai trò không có một vai trò kế thừa tới chính nó. context Roles inv: self<>oppositeEnd
- Luật 5: Trong mô hình không có vai trò có quyền thấp kế thừa vai trò quyền cao. context Map
inv: self.RootRole->forAll(r:Roles|if (r.name=RoleName::User) then r.SubRole->size()=0 else if (r.name=RoleName::PowerUser) then r.SubRole ->forAll(i:Roles|i.name=RoleName::User) else if (r.name=RoleName::Owner)
then r.SubRole ->forAll(i:Roles|i.name=RoleName::User or i.name=RoleName::PowerUser) else if (r.name=RoleName::Administrator) then r.SubRole ->forAll(i:Roles|i.name=RoleName::User or i.name=RoleName::PowerUser or i.name=RoleName::Owner)
else true endif endif endif endif)
39 context Map
inv: self.RootRole->forAll(r1:Roles, r2:Roles|(r1<>r2)and(r1.SubRole
->exists(i:Roles|i=r2)) implies (r2.SubRole->forAll(j:Roles|j<>r1)))
- Luật 7: Trong một Permission không có hai Action giống nhau. context Permisson
inv: self.PermissionAccessAction->forAll(r1:Action,r2:Action |r1<>r2 implies r1.name<>r2.name)
Tóm lại trong chương này chúng tôi đã trình bày được về miền bảo mật theo mô hình RBAC, trên cơ sở nghiên cứu về miền chúng tôi đã xây dựng được metamodel biểu diễn cho DSML thuộc miền, cũng như xây dựng các luật ràng buộc bằng OCL cho metamodel.
40
CHƢƠNG 3. XÂY DỰNG NGÔN NGỮ CHUYÊN BIỆT MIỀN RBAC TRÊN ELIPSE
Trong Eclipse có hỗ trợ dự án EMF và GMF cho phát triển cú pháp trừu tượng và cú pháp cụ thể để xây dựng DSML, và dự án GMT cho xây dựng bộ sinh mã nguồn tự động cho ngôn ngữ DSML. Trong chương này chúng tôi trình bày về kết quả cài đặt hai dự án EMF và GMF cho DSML RBAC trong Eclipse.