REST API kullanarak Azure özel rolleri oluşturma veya güncelleştirme

Azure yerleşik rolleri kuruluşunuzun ihtiyaçlarını karşılamıyorsa kendi özel rollerinizi oluşturabilirsiniz. Bu makalede REST API kullanarak özel rolleri listeleme, oluşturma, güncelleştirme veya silme işlemleri açıklanmaktadır.

Önkoşullar

Aşağıdaki sürümü kullanmanız gerekir:

  • 2015-07-01 veya sonrası

Daha fazla bilgi için bk . Azure RBAC REST API'lerinin API sürümleri.

Tüm özel rol tanımlarını listeleme

Kiracıdaki tüm özel rol tanımlarını listelemek için Rol Tanımları - Liste REST API'sini kullanın.

  • Aşağıdaki örnekte bir kiracıdaki tüm özel rol tanımları listelenmektedir:

    İstek

    GET https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    Yanıt

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Bir kapsamdaki tüm özel rol tanımlarını listeleme

Bir kapsamdaki özel rol tanımlarını listelemek için Rol Tanımları - Liste REST API'sini kullanın.

  1. Aşağıdaki istekle başlayın:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. URI'nin içinde {scope} öğesini rolleri listelemek istediğiniz kapsamla değiştirin.

    Scope Türü
    subscriptions/{subscriptionId1} Abonelik
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Kaynak grubu
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Kaynak
    providers/Microsoft.Management/managementGroups/{groupId1} Yönetim grubu
  3. {filter} öğesini rol türüyle değiştirin.

    Filtre Açıklama
    $filter=type+eq+'CustomRole' CustomRole türüne göre filtreleme

    Aşağıdaki örnekte bir abonelikteki tüm özel rol tanımları listelenir:

    İstek

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=type+eq+'CustomRole'&api-version=2022-04-01
    

    Yanıt

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Özel rol tanımını ada göre listeleme

Özel rol tanımı hakkında görünen adına göre bilgi almak için Rol Tanımları - REST API'sini Alma'yı kullanın.

  1. Aşağıdaki istekle başlayın:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
    
  2. URI'nin içinde {scope} öğesini rolleri listelemek istediğiniz kapsamla değiştirin.

    Scope Türü
    subscriptions/{subscriptionId1} Abonelik
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Kaynak grubu
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Kaynak
    providers/Microsoft.Management/managementGroups/{groupId1} Yönetim grubu
  3. {filter} öğesini rolün görünen adıyla değiştirin.

    Filtre Açıklama
    $filter=roleName+eq+'{roleDisplayName}' Rolün tam görünen adının URL ile kodlanmış biçimini kullanın. Örneğin $filter=roleName+eq+'Virtual%20Machine%20Contributor'

    Aşağıdaki örnekte abonelikte Faturalama Okuyucusu Artı adlı özel bir rol tanımı listelenir:

    İstek

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName+eq+'Billing Reader Plus'&api-version=2022-04-01
    

    Yanıt

    {
        "value": [
            {
                "properties": {
                    "roleName": "Billing Reader Plus",
                    "type": "CustomRole",
                    "description": "Read billing data and download invoices",
                    "assignableScopes": [
                        "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
                    ],
                    "permissions": [
                        {
                            "actions": [
                                "Microsoft.Authorization/*/read",
                                "Microsoft.Billing/*/read",
                                "Microsoft.Commerce/*/read",
                                "Microsoft.Consumption/*/read",
                                "Microsoft.Management/managementGroups/read",
                                "Microsoft.CostManagement/*/read",
                                "Microsoft.Billing/invoices/download/action",
                                "Microsoft.CostManagement/exports/*"
                            ],
                            "notActions": [
                                "Microsoft.CostManagement/exports/delete"
                            ],
                            "dataActions": [],
                            "notDataActions": []
                        }
                    ],
                    "createdOn": "2021-05-22T21:57:23.5764138Z",
                    "updatedOn": "2021-05-22T21:57:23.5764138Z",
                    "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
                    "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
                },
                "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
                "type": "Microsoft.Authorization/roleDefinitions",
                "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
            }
        ]
    }
    

Özel rol tanımını kimliğine göre listeleme

Özel bir rol tanımı hakkında benzersiz tanımlayıcısına göre bilgi almak için Rol Tanımları - REST API'sini Alma'yı kullanın.

  1. Rolün GUID tanımlayıcısını almak için Rol Tanımları - Liste REST API'sini kullanın.

  2. Aşağıdaki istekle başlayın:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. URI'nin içinde {scope} öğesini rolleri listelemek istediğiniz kapsamla değiştirin.

    Scope Türü
    subscriptions/{subscriptionId1} Abonelik
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Kaynak grubu
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}/providers/Microsoft.Web/sites/{site1} Kaynak
    providers/Microsoft.Management/managementGroups/{groupId1} Yönetim grubu
  4. {roleDefinitionId} öğesini rol tanımının GUID tanımlayıcısıyla değiştirin.

    Aşağıdaki örnekte, bir abonelikte 17adabda-4bf1-4f4e-8c97-1f0cab6dea1c tanımlayıcısıyla özel bir rol tanımı listelenir:

    İstek

    GET https://management.azure.com/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c?api-version=2022-04-01
    

    Yanıt

    {
        "properties": {
            "roleName": "Billing Reader Plus",
            "type": "CustomRole",
            "description": "Read billing data and download invoices",
            "assignableScopes": [
                "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15"
            ],
            "permissions": [
                {
                    "actions": [
                        "Microsoft.Authorization/*/read",
                        "Microsoft.Billing/*/read",
                        "Microsoft.Commerce/*/read",
                        "Microsoft.Consumption/*/read",
                        "Microsoft.Management/managementGroups/read",
                        "Microsoft.CostManagement/*/read",
                        "Microsoft.Billing/invoices/download/action",
                        "Microsoft.CostManagement/exports/*"
                    ],
                    "notActions": [
                        "Microsoft.CostManagement/exports/delete"
                    ],
                    "dataActions": [],
                    "notDataActions": []
                }
            ],
            "createdOn": "2021-05-22T21:57:23.5764138Z",
            "updatedOn": "2021-05-22T21:57:23.5764138Z",
            "createdBy": "68f66d4c-c0eb-4009-819b-e5315d677d70",
            "updatedBy": "68f66d4c-c0eb-4009-819b-e5315d677d70"
        },
        "id": "/subscriptions/473a4f86-11e3-48cb-9358-e13c220a2f15/providers/Microsoft.Authorization/roleDefinitions/17adabda-4bf1-4f4e-8c97-1f0cab6dea1c",
        "type": "Microsoft.Authorization/roleDefinitions",
        "name": "17adabda-4bf1-4f4e-8c97-1f0cab6dea1c"
    }
    

Özel rol oluşturma

Özel rol oluşturmak için Rol Tanımları - REST API'sini Oluştur veya Güncelleştir'i kullanın. Bu API'yi çağırmak için, tüm assignableScopes üzerinde Microsoft.Authorization/roleDefinitions/write iznine sahip bir role atanmış bir kullanıcıyla oturum açmış olmanız gerekir. Yerleşik rollerden yalnızca Sahip ve Kullanıcı Erişimi Yöneticisi bu izni içerir.

  1. Özel rolünüz için izinleri oluşturmak için kullanılabilen kaynak sağlayıcısı işlemlerinin listesini gözden geçirin.

  2. Özel rol tanımlayıcısı olarak kullanılacak benzersiz bir kimlik oluşturmak için bir guid aracı kullanın. Tanımlayıcı şu biçimdedir: 00000000-0000-0000-0000-000000000000

  3. Aşağıdaki istek ve gövde ile başlayın:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  4. URI'nin içinde {scope} öğesini özel rolün ilk assignableScopes öğesiyle değiştirin.

    Scope Türü
    subscriptions/{subscriptionId1} Abonelik
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Kaynak grubu
    providers/Microsoft.Management/managementGroups/{groupId1} Yönetim grubu
  5. {roleDefinitionId} öğesini özel rolün GUID tanımlayıcısıyla değiştirin.

  6. İstek gövdesinde {roleDefinitionId} öğesini GUID tanımlayıcısıyla değiştirin.

  7. Abonelik veya kaynak grubuysa assignableScopes , {subscriptionId} veya {resourceGroup} örneklerini tanımlayıcılarınızla değiştirin.

  8. Bir yönetim grubuysa assignableScopes, {groupId} örneğini yönetim grubu tanımlayıcınızla değiştirin.

  9. özelliğinde actions , rolün gerçekleştirilmeye izin verdiği eylemleri ekleyin.

  10. özelliğinde notActions , izin verilen actionsdışında tutulan eylemleri ekleyin.

  11. roleName ve description özelliklerinde benzersiz bir rol adı ve bir açıklama belirtin. Özellikler hakkında daha fazla bilgi için bkz. Azure özel rolleri.

    Aşağıda bir istek gövdesi örneği gösterilmektedir:

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

Özel rolü güncelleştirme

Özel bir rolü güncelleştirmek için Rol Tanımları - REST API'sini Oluştur veya Güncelleştir'i kullanın. Bu API'yi çağırmak için, Kullanıcı Erişim Yöneticisi gibi tüm assignableScopesüzerinde izni olan Microsoft.Authorization/roleDefinitions/write bir role atanmış bir kullanıcıyla oturum açmanız gerekir.

  1. Özel rol hakkında bilgi almak için Rol Tanımları - Liste veya Rol Tanımları - REST API'sini alma seçeneğini kullanın. Daha fazla bilgi için önceki Tüm özel rol tanımlarını listeleme bölümüne bakın.

  2. Aşağıdaki istekle başlayın:

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  3. URI'nin içinde {scope} öğesini özel rolün ilk assignableScopes öğesiyle değiştirin.

    Scope Türü
    subscriptions/{subscriptionId1} Abonelik
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Kaynak grubu
    providers/Microsoft.Management/managementGroups/{groupId1} Yönetim grubu
  4. {roleDefinitionId} öğesini özel rolün GUID tanımlayıcısıyla değiştirin.

  5. Özel rol hakkındaki bilgilere bağlı olarak, aşağıdaki biçime sahip bir istek gövdesi oluşturun:

    {
      "name": "{roleDefinitionId}",
      "properties": {
        "roleName": "",
        "description": "",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
    
            ],
            "notActions": [
    
            ]
          }
        ],
        "assignableScopes": [
          "/subscriptions/{subscriptionId1}",
          "/subscriptions/{subscriptionId2}",
          "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1}",
          "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroup2}",
          "/providers/Microsoft.Management/managementGroups/{groupId1}"
        ]
      }
    }
    
  6. İstek gövdesini, özel rolde yapmak istediğiniz değişikliklerle güncelleştirin.

    Aşağıda, yeni tanılama ayarları eyleminin eklendiği bir istek gövdesi örneği gösterilmektedir:

    {
      "name": "88888888-8888-8888-8888-888888888888",
      "properties": {
        "roleName": "Virtual Machine Operator",
        "description": "Can monitor and restart virtual machines.",
        "type": "CustomRole",
        "permissions": [
          {
            "actions": [
              "Microsoft.Storage/*/read",
              "Microsoft.Network/*/read",
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/start/action",
              "Microsoft.Compute/virtualMachines/restart/action",
              "Microsoft.Authorization/*/read",
              "Microsoft.ResourceHealth/availabilityStatuses/read",
              "Microsoft.Resources/subscriptions/resourceGroups/read",
              "Microsoft.Insights/alertRules/*",
              "Microsoft.Insights/diagnosticSettings/*",
              "Microsoft.Support/*"
            ],
            "notActions": []
          }
        ],
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000",
          "/providers/Microsoft.Management/managementGroups/marketing-group"
        ]
      }
    }
    

Özel rolü silme

Özel bir rolü silmek için Rol Tanımları - REST API'yi sil'i kullanın. Bu API'yi çağırmak için, tüm assignableScopes üzerinde Microsoft.Authorization/roleDefinitions/delete iznine sahip bir role atanmış bir kullanıcıyla oturum açmanız gerekir. Yerleşik rollerden yalnızca Sahip ve Kullanıcı Erişimi Yöneticisi bu izni içerir.

  1. Özel rolü kullanan tüm rol atamalarını kaldırın. Daha fazla bilgi için bkz Özel bir rolü silmek için rol atamalarını bulma.

  2. Özel rolün GUID tanımlayıcısını almak için Rol Tanımları - Liste veya Rol Tanımları - GET REST API'sini kullanın. Daha fazla bilgi için önceki Tüm özel rol tanımlarını listeleme bölümüne bakın.

  3. Aşağıdaki istekle başlayın:

    DELETE https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
    
  4. URI'nin içinde {scope} öğesini özel rolü silmek istediğiniz kapsamla değiştirin.

    Scope Türü
    subscriptions/{subscriptionId1} Abonelik
    subscriptions/{subscriptionId1}/resourceGroups/{resourceGroup1} Kaynak grubu
    providers/Microsoft.Management/managementGroups/{groupId1} Yönetim grubu
  5. {roleDefinitionId} öğesini özel rolün GUID tanımlayıcısıyla değiştirin.

Sonraki adımlar