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

Azure yerleşik rolleri kuruluşunuzun belirli gereksinimlerini 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 üzeri

Daha fazla bilgi için bkz . 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:

    İste

    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.

    Kapsam 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:

    İste

    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.

    Kapsam 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:

    İste

    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.

    Kapsam 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:

    İste

    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 izni olan bir role Microsoft.Authorization/roleDefinitions/write atanmış bir kullanıcıyla oturum açmanız gerekir. Yerleşik rollerden yalnızca Sahip ve Kullanıcı Erişimi Yönetici istrator 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ı için kullanılacak benzersiz bir tanımlayıcı oluşturmak için BIR GUID aracı kullanın. Tanımlayıcı şu biçime sahiptir: 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 ilkiyle assignableScopes değiştirin.

    Kapsam 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 grubuysaassignableScopes, {subscriptionId} veya {resourceGroup} örneklerini tanımlayıcılarınızla değiştirin.

  8. Bir yönetim grubuysaassignableScopes, {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. ve description özelliklerinde roleName 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şimi Yönetici istrator 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 ilkiyle assignableScopes değiştirin.

    Kapsam 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 izni olan bir role Microsoft.Authorization/roleDefinitions/delete atanmış bir kullanıcıyla oturum açmanız gerekir. Yerleşik rollerden yalnızca Sahip ve Kullanıcı Erişimi Yönetici istrator bu izni içerir.

  1. Özel rolü kullanan tüm rol atamalarını kaldırın. Daha fazla bilgi için bkz . Özel 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.

    Kapsam 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