ALFA (XACML) - ALFA (XACML)

ALFA
ParadigmaDeklarativ dasturlash
LoyihalashtirilganPablo Giambiagi
TuzuvchiAksiomatika
Birinchi paydo bo'ldi2012 yil 16-iyul; 8 yil oldin (2012-07-16)[1]
Fayl nomi kengaytmalari.alfa
Veb-saythavola
Mayor amalga oshirish
Aksiomatika
Ta'sirlangan
XML, XACML

ALFA, Avtorizatsiya uchun qisqartirilgan til, a psevdokod kirishni boshqarish siyosatini shakllantirishda foydalaniladigan til.[2][3]

Tarix

Kelib chiqishi

XACML EXtensible Access Control Markup Language, XML-ni asosiy kodlash tili sifatida ishlatadi. Ishlab chiquvchilar har doim XML yozish uchun kurashdilar va shuning uchun yangi, engilroq yozuv kerak edi. Aksiomatika tadqiqotchisi Pablo Giambiagi, shuning uchun avtorizatsiya uchun Axiomatika tili ALFA ni ishlab chiqdi.

ALFA to'g'ridan-to'g'ri XACML-ga qo'shiladi. ALFA bir xil narsani o'z ichiga oladi strukturaviy elementlar XACML sifatida, ya'ni PolicySet, Policy va Rule.

Aksiomatika ALFA ni OASISga xayriya qiladi

2014 yil mart oyida Axiomatics kompaniyasi ALFA kompaniyasini xayriya qilishini e'lon qildi OASIS XACML Texnik qo'mitasi[4] uni standartlashtirishni rivojlantirish uchun.

Natijada ALFA avtorizatsiya uchun qisqartirilgan til deb o'zgartirildi va standartlashtirishga ariza topshirdi. Uning hozirgi versiyasiga kirish mumkin Bu yerga.

Namunaviy foydalanish holatlari

  • Tibbiy maqsadlarda foydalanish: shifokorlar ular bilan aloqada bo'lgan bemorlarning tibbiy yozuvlarini ko'rishlari mumkin.
  • Moliyaviy foydalanish holati: Singapurdagi ishchilar Singapurda joylashgan xodimlarning mijozlar hisob raqamlarini ko'rishlari mumkin.
  • Sug'urtadan foydalanish holati: sug'urta agenti foydalanuvchining da'vosini tasdiqlashi mumkin, agar da'vo agent bilan bir mintaqada bo'lsa va da'vo miqdori agentning tasdiqlash miqdoridan kam bo'lsa.

Doktor, ko'rinish, tibbiy yozuvlar, Singapur ... so'zlari atribut qadriyatlariga misoldir. Atributlar siyosatning asosini tashkil etadi ABAC va natijada ALFAda.

Tuzilishi

Xuddi XACML kabi, ALFA uchta tarkibiy elementga ega:

  • PolicySet
  • Siyosat
  • Qoida

XACML singari, PolicySet-da PolicySet va Policy elementlari bo'lishi mumkin. Siyosat qoida elementlarini o'z ichiga olishi mumkin. Qoida qarorni o'z ichiga oladi (ruxsat bering yoki rad eting). Bundan tashqari, ALFA-da Rule elementlarini PolicySet va Policy elementlariga qo'shish mumkin. PolicySet, Policy va Rule elementlari joylashtirilgan yoki havolalangan bo'lishi mumkin.

Birodarlar o'rtasidagi ziddiyatlarni hal qilish uchun ALFA (XACML kabi) birlashtiruvchi algoritmlardan foydalanadi. Amaldagi bir nechta birlashtiruvchi algoritmlar mavjud. Ularning xulq-atvori bunda aniqlanadi haqiqat jadvali

Ma'lumot turlari

ALFA barcha qo'llab-quvvatlaydi ma'lumotlar turlari OASISda belgilangan XACML Asosiy xususiyat. Ba'zi ma'lumotlar turlari, masalan. to'g'ridan-to'g'ri ALFA-dan XACML-ga raqamli (tamsayı, er-xotin) va mantiqiy xarita. Boshqalari sana yoki vaqt atributlari kabi o'zgartirilishi kerak. Atributni tegishli ma'lumot turiga aylantirish uchun "qiymat" dan foydalaning: ma'lumotlar turi yozuvlari. Misollar uchun quyida ko'ring

To'g'ridan-to'g'ri ALFA-dan XACML-ga bog'langan mahalliy atribut qiymatlari

String, integer, double va boolean xaritalari to'g'ridan-to'g'ri ALFA dan XACML gacha. Ular konvertatsiyaga muhtoj emas

Mantiqiy xususiyatlardan foydalangan holda ALFA siyosati

namespace exampleBoolean {policy article {target clause userRole == "editor" and actionId == "edit" and itemType == "article" firstApplicable qoidani e'lon qilinganArticles {target clause published == haqiqiy ruxsat}}}

Aniq konvertatsiyaga muhtoj bo'lgan atribut qiymatlari

Quyidagi atribut ma'lumotlari aniq konvertatsiyaga muhtoj:

Misol: anyURI-dan foydalangan holda ALFA siyosati

Ushbu siyosatda biz string qiymatini anyURI ga o'zgartiramiz.

	xususiyat userBlacklistedResources{		toifasi = mavzuCat		id = "userBlacklistedResources"		turi = mag'lubiyat	}
	qoida allowProfileAccess{target clause url == "http: // :  / profile /": anyURIruxsatnoma	}

Namunaviy siyosat

Oddiy siyosat va shart bilan qoidalar

Quyidagi ALFA misoli bitta qoidani o'z ichiga olgan XACML siyosatini aks ettiradi. Siyosat va qoidalarning ikkalasi ham maqsadga muvofiqdir. Ushbu qoida, shuningdek, munosabatlarni tekshirishni amalga oshirish uchun 2 ta atributni taqqoslash uchun ishlatiladigan shartga ega (foydalanuvchi identifikatori egasiga teng bo'lishi kerak). Qachonki ikkita xususiyatni birgalikda tekshirish kerak bo'lsa, ular shartdan foydalanishlari kerak.

nom maydoni misolida {siyosat maqolasi {target clause itemType == "article" firstApplicable qoida editArticle {target clause actionId == "edit" va userRole == "editor" ruxsat sharti userId == egasi}}} qo'llaniladi

ALFA-da yozilgan XACML siyosatida vaqtdan foydalanish

namespace exampleTime {policy checkTimeAccess {apply firstApplicable rule checkNightAccess {target clause role == "supervisor" and document == "medicalrecord" case timeInRange (timeOneAndOnly (currentTime), "22:00:00": time, "06:00:00 ": vaqt) ruxsatnoma}}}

ALFA-dagi siyosat ma'lumotnomalari

ALFA siyosat (to'plam) ma'lumotnomalaridan foydalanishi mumkin. Aslida ular quyidagilarni bajarishda bevosita ishlatiladi.

nom maydoni com.axiomatics {nom maydoni misol {/ ** * Menejerlar nima qilishi mumkinligi haqidagi siyosat. U * hujjatlar siyosati to'plamidan bog'langan. * / siyosat menejerlari {target clause role == "menejer" birinchi bo'lib qo'llaniladi Qo'llaniladigan qoida allowSameDepartment {sharti user.department == document.department ruxsatnomasi}}} / ** * Asosiy qoidalar. U menejerlar siyosatiga murojaat qiladi * / policyset hujjatlar {target clause resourceType == "document" apply firstApplicable // Quyida siyosat ma'lumotnomasi example.managers}}

ALFAda majburiyatlar va tavsiyalar

Majburiyatlar va maslahatlar - bu XACML-dagi qarorlar bilan bir qatorda PDP-dan PEP-ga qaytarilishi mumkin bo'lgan bayonotlar (Ruxsat berish, Rad etish ...). Majburiyatlar va tavsiyalar Ruxsat berish yoki Inkor qilishda boshlanadi.

namespace example {import Attributes. * зөвлөгөө notify = "example.notify" policy readDocuments {target clause actionId == "read" and objectType == "document" apply firstApplicable / ** * Ushbu qoida, agar vaqt 9 gacha bo'lmasa va 5 * / qoida denyOutsideHours {target clause currentTime <"09:00:00": time or currentTime> "17:00:00": time deny on deny {maslahat notify {acme.obligations.message = "Siz bunga kira olmaysiz ish vaqtidan tashqari xizmat "}}} / ** * Ushbu qoida menejerlarga kirish huquqini beradi * / rule allowManagers {target clause acme.user.role ==" manager "permit} / ** * Ushbu qoida tushib qolgan boshqa narsalarni ushlaydi. bu nuqta * / qoida failsafeDeny {inkor etishni rad etish {maslahat bildirish {acme.ob ligations.message = "Sizning so'rovingiz siyosatga mos kelmadi. Iltimos, yana bir bor urinib ko'ring"                }            }        }    } }

Shisha avtorizatsiya ssenariysini buzish

Keling, biz ishlatadigan atributlar va majburiyatlarni belgilashdan boshlaymiz.

nomlar maydoni com.axiomatics.examples {import Attributes. * majburiyat breakTheGlass = "com.axiomatics.examples.breakTheGlass" majburiyat auditLog = "com.axiomatics.examples.auditLog" nom maydoni foydalanuvchisi {attribute role {category = subjectCat id = "com.axiomatics .examples.user.role "type = string} atribut identifikatori {category = subjectCat id =" com.axiomatics.examples.user.identifier "type = string}} nomlar maydoni patsienti {attribute assignedDoctor {category = resourceCat id =" com.axiomatics .examples.user.assignedDoctor "type = string}} nomlar maydoni yozuvi {atribut identifikatori {category = resourceCat id =" com.axiomatics.examples.record.identifier "type = string}} attribute actionId {category = actionCat id =" com. axiomatics.examples.actionId "type = string} attribute objectType {category = resourceCat id =" com.axiomatics.examples.objectType "type = string} attribute isE Emergency {category = EnvironmentCat id =" com.axiomatics.examples.isE Emergency " type = boolean} atribut xabari {category = environmentCat id = "com.axiomatics.examples.message" type = string}

Endi biz siyosatni uchta qoidalar bilan aniqlay olamiz:

  • birinchi qoida normal kirish uchun (shifokorlar ularga tayinlangan bemorlarning yozuvlarini ko'rishlari mumkin.
  • ikkinchi qoida maxsus kirish uchun, chunki shisha buzilgan.
  • uchinchi qoida - bu foydalanuvchiga oynani qanday sindirish kerakligini aytib beradigan majburiyatni keltirib chiqaradigan qoida.
/ ** * Tibbiy ma'lumotlarga kirishni boshqarish * / policy accessMedicalRecord {target clause actionId == "view" va objectType == "tibbiy yozuv" avval qo'llanilishi mumkin Qo'llaniladigan / ** * Shifokorlar ularga tayinlangan bemorlarning tibbiy yozuvlarini ko'rishlari mumkin * / qoidalar allowRegularAccess {target clause user.role == "doctor" holati kasalligi.assignedDoctor == user.identifier permit} / ** * Shifokorlar favqulodda vaziyatda har qanday tibbiy sabablarni ko'rishlari mumkin * / qoida allowBreakTheGlassAccess {target clause isE Emergency == true ruxsatnomada ruxsatnoma {majburiyat auditLog {message = "Shifokor stakanni sindirib, tibbiy yozuvlarga kirish huquqini qo'lga kiritdi" user.identifier = user.identifier record.identifier = record.identifier currentDateTime = currentDateTime}}} / ** * Boshqani rad etish kirish. Odatda kirish taqiqlangan bo'lsa, shifokorlarga qanday qilib * stakanni sindirib kirish huquqini olishlarini aytib bering. * / qoida denyAccess {inkor on deny {obligation breakTheGlass {message = "Sizda ushbu tibbiy yozuvga kirish imkoni yo'q. Kirish huquqini berish uchun isE Emergency bayrog'ini rost qilib qo'ying." record.identifier = record.identifier currentDateTime = currentDateTime}}}}}

Vaqtga asoslangan nozik avtorizatsiya siyosati

Quyida ALFA yordamida amalga oshirilgan ABAC siyosatiga misol keltirilgan. Bu vaqtni atribut sifatida ishlatadi. CurrentTime atributini soat 17:00 (24 soatlik vaqt bilan ifodalangan) qiymatiga solishtirish uchun XACML shartidan foydalaniladi. String qiymatini kerakli ma'lumot turiga o'tkazish uchun vaqtdan foydalanishga e'tibor bering.

qoida ruxsat berish soat 17.00 dan keyin{		ruxsatnomasharti currentTime> "17:00:00": vaqt}

HL7 siyosati

Ishlardan foydalaning

HL7 tibbiy yordamni nazorat qilishning bir qatorini belgilaydi holatlardan foydalanish bu ALFA da osonlikcha aniqlanishi mumkin.

HL7 uchun ALFA qoidalarining namunasi

Amallar toifasiga asoslangan kirishni boshqarish

Eclipse uchun ALFA plagini

Eclipse uchun ALFA plaginlari sizning Eclipse dasturlash IDE-ni ALFA sintaksisidan foydalangan holda avtorizatsiya siyosatining maxsus muharririga o'zgartiradigan vosita. Keyinchalik ALFA siyosati osongina realga aylantirilishi mumkin XACML 3.0 qoidalari va sizning XACML siyosatini boshqarish vositangizga yuklangan.[5]

Adabiyotlar

  1. ^ Gebel, Gerri (2012 yil 16-iyul). "Axiomatics Eclipse IDE uchun bepul plaginni XACML3.0 qoidalariga mualliflik uchun chiqaradi". Aksiomatika. Olingan 31 may 2017.
  2. ^ "'alfa 'tag wiki ".
  3. ^ "XACML-ni soddalashtirish - Eclipse IDE uchun Axiomatics ALFA plagini". KuppingerCole. Olingan 2017-02-10.
  4. ^ https://www.linkedin.com/grp/post/3934718-5851696088934801412
  5. ^ "Qanday qilib ALFA-da siyosat ma'lumotnomalaridan foydalanishim mumkin?". 2016-10-10.

Tashqi ma'lumotnomalar

Evropalik tahlilchilar ALFA haqida gapirishadi

RESTful veb-xizmatlari uchun shablonga asoslangan siyosat yaratish interfeysi