Autorizarea catalogului STAC¶
Catalogul STAC EOCube.Ro impune control al accesului bazat pe proprietate și vizibilitate pentru fiecare colecție și item. Dacă o cerere poate citi, crea, actualiza sau șterge o entitate este decis pe baza a două câmpuri purtate de entitatea însăși, a identității apelantului și a grupurilor din care acesta face parte.
Această pagină descrie regulile pe care o aplicație trebuie să le respecte la publicarea, căutarea, actualizarea sau ștergerea entităților STAC. Respectă-le și datele tale vor fi vizibile și modificabile exact așa cum intenționezi; ignoră-le și entitățile pot fi respinse la scriere sau ascunse silențios la citire.
Cine ești¶
Fiecare cerere autentificată poartă:
- un nume de utilizator (identitatea ta) și
- mulțimea de grupuri din care faci parte (căi de grup precum
eocube-users/uvt-users/team-a).
Cererile pot fi și anonime (fără identitate). Apelanții anonimi pot doar citi, și doar entitățile publice.
Un număr mic de conturi sunt administratori; ele ocolesc regulile de mai jos și pot citi, scrie și șterge orice. Tot ce urmează descrie regulile pentru conturile obișnuite (non-administrator).
Cele două câmpuri de control¶
Fiecare colecție și item pe care îl publici trebuie să poarte aceste două câmpuri:
| Câmp | Tip | Semnificație |
|---|---|---|
eocube:owner |
string | Numele de utilizator care deține entitatea. |
eocube:visibility |
listă de string-uri | Token-uri de acordare (grant) care decid cine altcineva mai poate citi sau scrie entitatea. |
Unde se pun
- Pe item-uri, ambele câmpuri se află sub
properties(properties.eocube:owner,properties.eocube:visibility). - Pe colecții, ambele câmpuri se află la nivelul superior al obiectului colecție.
eocube:visibility trebuie să fie o listă, chiar și pentru o singură
acordare (["public"], nu "public").
eocube:owner¶
- Proprietarul are întotdeauna acces complet de citire, scriere și ștergere la entitate.
- La creare,
eocube:ownertrebuie setat la propriul tău nume de utilizator. Nu poți crea o entitate deținută de altcineva. - Doar administratorii pot schimba proprietarul unei entități existente.
eocube:visibility¶
O listă de token-uri de acordare. Fiecare token extinde accesul de citire sau de citire+scriere dincolo de proprietar. Accesul propriu al proprietarului nu depinde de această listă.
| Token | Acordă |
|---|---|
public |
Citire pentru toți, inclusiv apelanții anonimi. Folosește pentru date deschise. |
private |
Niciun acces suplimentar (doar proprietarul). Un marcaj fără efect, echivalent cu o listă goală. |
group:ro:<grup> |
Citire pentru membrii <grup> și ai oricărui sub-grup al său. |
group:rw:<grup> |
Citire și scriere pentru membrii <grup> și ai oricărui sub-grup al său. |
user:ro:<utilizator> |
Citire pentru acel utilizator. Folosește user:ro:* pentru orice utilizator autentificat. |
user:rw:<utilizator> |
Citire și scriere pentru acel utilizator. Folosește user:rw:* pentru orice utilizator autentificat. |
Potrivirea pe prefix de grup. O acordare de grup se aplică grupului numit și
fiecărui sub-grup de sub el. De exemplu group:rw:eocube-users acordă acces de
scriere unui membru din eocube-users/uvt-users/team-a, deoarece eocube-users
este un strămoș al căii de grup a acelui utilizator.
Combinarea token-urilor. Token-urile sunt aditive; enumeră câte ai nevoie:
["public", "group:rw:eocube-users", "user:rw:ion.popescu"]
Această entitate este citibilă de oricine și poate fi scrisă de membrii
eocube-users (și ai sub-grupurilor sale) și de utilizatorul ion.popescu.
Vizibilitatea este obligatorie
Nu există o valoare implicită. O entitate publicată fără o listă
eocube:visibility este vizibilă și modificabilă doar de proprietarul ei
— nu va apărea în căutările anonime sau ale altor utilizatori. Setează
întotdeauna vizibilitatea explicit (folosește ["public"] pentru date
deschise, ["private"] pentru acces doar al proprietarului).
Denumirea colecțiilor¶
Când creezi o colecție, id-ul ei trebuie să fie prefixat cu numele tău
de utilizator:
<numele-tau-de-utilizator>-<nume>
De exemplu, utilizatorul ion.popescu poate crea ion.popescu-my-aoi, dar nu
my-aoi sau altcineva-aoi. Colecțiile al căror id nu respectă acest tipar sunt
respinse. (Item-urile nu sunt supuse unei reguli de denumire; ele sunt încadrate
de colecția din care fac parte.)
Reguli per operație¶
Căutare și citire¶
- O entitate apare în rezultatele tale doar dacă o deții sau dacă
eocube:visibilityîți acordă acces de citire — adică dacă acesta conținepublic, un tokengroup:ro:/group:rw:pentru unul dintre grupurile tale (sau un strămoș), un tokenuser:ro:/user:rw:pentru numele tău de utilizator, sau un wildcard*. - Apelanții anonimi văd doar entitățile a căror vizibilitate conține
public. - Rezultatele sunt filtrate, nu refuzate: entitățile pe care nu ai voie să le vezi sunt pur și simplu omise din rezultatele căutării, iar căutările individuale se comportă ca și cum nu ar exista. O căutare nu eșuează niciodată pentru că unele entități sunt private.
Creare (publicare)¶
Când publici o colecție sau un item nou:
- Setează
eocube:ownerla propriul tău nume de utilizator. O creare al cărei proprietar lipsește sau nu ești tu este respinsă. - Pentru colecții, denumește
id-ul ca<numele-tau-de-utilizator>-<nume>. - Setează
eocube:visibilityla accesul pe care îl intenționezi (de exemplu["public"],["private"], sau o listă de acordări de grup/utilizator).
Nu poți publica o entitate în numele altui utilizator, iar acordările de vizibilitate nu îți permit să creezi entități în spațiul de nume al altui utilizator.
Actualizare¶
- Poți actualiza o entitate doar dacă o deții sau dacă
eocube:visibilityîți acordă acces de scriere — un tokengroup:rw:pentru unul dintre grupurile tale, un tokenuser:rw:<tu>, sauuser:rw:*. - Acordările doar de citire nu permit actualizări. Un token
group:ro:/user:ro:permite unui utilizator să vadă entitatea, dar nu să o modifice. - Păstrează
eocube:ownerla actualizare — doar administratorii pot reatribui proprietatea.
Ștergere¶
- Ștergerea urmează aceeași regulă ca actualizarea: poți șterge o entitate
doar dacă o deții sau ai o acordare de scriere asupra ei
(
group:rw:,user:rw:<tu>, sauuser:rw:*). - O acordare de citire nu permite niciodată ștergerea.
- Apelanții anonimi nu pot șterge nimic.
Listă de verificare pentru publicatori¶
- [ ] Fiecare item și colecție poartă atât
eocube:owner, cât șieocube:visibility. - [ ]
eocube:ownereste numele tău de utilizator. - [ ]
eocube:visibilityeste o listă de token-uri valide. - [ ] Câmpurile item-ului sunt sub
properties; câmpurile colecției sunt la nivelul superior. - [ ] Id-urile colecțiilor sunt
<numele-tau-de-utilizator>-<nume>. - [ ] Publici date deschise cu
["public"], date private cu["private"]și date partajate cu token-urilegroup:rw:/user:rw:potrivite.
Exemple¶
Item public, deținut de tine (câmpuri sub properties):
{
"type": "Feature",
"id": "S2A_...",
"collection": "sentinel-2-l1c",
"properties": {
"eocube:owner": "ion.popescu",
"eocube:visibility": ["public"]
}
}
Colecție privată, doar pentru proprietar:
{
"type": "Collection",
"id": "ion.popescu-experiments",
"eocube:owner": "ion.popescu",
"eocube:visibility": ["private"]
}
Item partajat la citire+scriere cu o echipă, citibil de toți:
{
"properties": {
"eocube:owner": "ion.popescu",
"eocube:visibility": ["public", "group:rw:eocube-users/uvt-users/team-a"]
}
}