Post

Kiosztható jogok korlátozás Policy-vel

Role Based Access Controll (RBAC) segítségével akár réteg szinten korlátozhatjuk az egyes jogosultságokat. Ennek köszönhetően például biztosíthatunk subnet szerkesztési jogot a Virtual Network-ön belül, de magát a hálózati részét, mint a AddressSpace vagy Peering rész nem tudja szerkeszteni. Ezzel együtt vannak limitációk is, de itt jön a képbe a Policy, amely a limitációkat segít elkerülni.

Egyik érdekes kérés lehet, mikor szeretnénk korlátozni, hogy az egyes felhasználói típusoknak milyen jogot akarunk engedélyezni. Természetesen nem kell mindent is korlátozni, de ha csak egyszerűen szeretnénk pl a lehetőségét kizárni, hogy felhasználó kapjon direkt jogosultságot, arra ez egy tökéletes megoldás lehet.

Íme egy példakód, ami teljesíti az elvárt működést ;)

Policy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Authorization/roleAssignments"
        },
        {
          "anyOf": [
            {
              "allOf": [
                {
                  "field": "Microsoft.Authorization/roleAssignments/principalType",
                  "equals": "ServicePrincipal"
                },
                {
                  "not": {
                    "field": "Microsoft.Authorization/roleAssignments/roleDefinitionId",
                    "in": "[parameters('SProleDefinitionIds')]"
                  }
                }
              ]
            },
            {
              "allOf": [
                {
                  "field": "Microsoft.Authorization/roleAssignments/principalType",
                  "equals": "User"
                },
                {
                  "not": {
                    "field": "Microsoft.Authorization/roleAssignments/roleDefinitionId",
                    "in": "[parameters('UserroleDefinitionIds')]"
                  }
                }
              ]
            },
            {
              "allOf": [
                {
                  "field": "Microsoft.Authorization/roleAssignments/principalType",
                  "equals": "Group"
                },
                {
                  "not": {
                    "field": "Microsoft.Authorization/roleAssignments/roleDefinitionId",
                    "in": "[parameters('GrouproleDefinitionIds')]"
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {
    "SProleDefinitionIds": {
      "type": "Array",
      "metadata": {
        "displayName": "Approved Role Definitions for ServicePrincipals",
        "description": "The list of role definition Ids"
      },
      "defaultValue": [
        "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
      ]
    },
    "UserroleDefinitionIds": {
      "type": "Array",
      "metadata": {
        "displayName": "Approved Role Definitions for Users",
        "description": "The list of role definition Ids"
      },
      "defaultValue": [
        "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
      ]
    },
    "GrouproleDefinitionIds": {
      "type": "Array",
      "metadata": {
        "displayName": "Approved Role Definitions for Groups",
        "description": "The list of role definition Ids"
      },
      "defaultValue": [
        "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635".
      ]
    }
  }
}
This post is licensed under CC BY 4.0 by the author.