Post

Jogosultság hozzárendelés korlátozása policy-val

Az RBAC egy nagyon hasznos dolog. Rengeteg benne a beállítható jogosultsági “szint”, az egyedi összerendelések, minden, mi szem szájnak ingere, de…
Régi módi a hozzáállása, vagyis hogy amihez nincs jog, az a jó. Ezt Én tisztelettel, de vitatom. Ahhoz, hogy csökkentsük az üzemeltetés túlterheltségét, bizony 1-1 feladatot át kell adnunk a másik oldalnak. A jogosultság osztás mindig is egy mumus volt, nincs ez máskép szerintem most se.
Úgy gonolom, és erre hoztam is egy példát, hogy nem csak azzal lehet a felhasználókat korlátozni, ha valamihez egyáltalán nincs joguk. Adjuk meg az “ügyfélnek” a lehetőséget, hogy maga rendelkezzen a világa felett, ne kelljen heteket, napokat, de akár csak órákat is várnia arra, hogy megkapjon egy jogosultságot, de korlátozzuk azt, hogy mit is választhat.
SharePoint-os múltamból megmaradt az a szokásom, hogy csoportokon keresztül szeretem, ha osztanak jogot. Ezt többé-kevésbé magammal hoztam az Azure világában is. (Persze, így nehezebb megnézni, hogy egy előfizetéshez ki fér hozzá, de a nap végén nekem így is kevesebb munkám lesz)

Szóval a célom az, hogy a felhasználó tudjon maga is jogosultságot osztani, ha létrehozott egy SPN-t vagy Managed identity-t, de embereket ne tudjon direktbe hozzáadni az előfizetéshez.

Egyszerű példa, felhasználó “fully private” AKS-t akar kirakni “user defined routing”-al. Neki bizony vannak előfeltételei, az egyik, hogy kell neki 1 db spn vagy managed identity, akinek “write” joga van a felhasználni kíván subnet route tábláján. Amennyiben nem biztosítjuk, hogy a felhasználó ezeket be tudja magának állítani, akkor több terület fáradhatatlan munkája szükséges ahhoz, hogy egy darab egyszerű Azure Kubernetes Services-t kirakjanak, mikor elég lenne hozzá 1 ember :)

1 szó mint 100, policy-val tiltom meg azt, hogy user-t direktben hozzá lehesen rendelni bármihez, közben a többi típusú objektum esetén maga rendelkezik a jogosultságok beállításával.

Policy létrehozása

Magát a policy létrehozását már leírtam ebben a postban, a menete pedig ugyanaz, csak ezt a kódot kell használni ;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Authorization/roleAssignments"
        },
        {
          "field": "Microsoft.Authorization/roleAssignments/principalType",
          "equals": "User"
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {}
}

Természetesen más alapján is dolgozhazhatunk, mint például jogosultsági szint, így bizonyos role-okat kitilhatunk vagy csak bizonyosakat engedélyezünk. Rengeteg megoldás jut kapásból eszembe, de ez már az ügyfél igényein is múlik ;)

This post is licensed under CC BY 4.0 by the author.