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.
Aşağıdaki istekle başlayın:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
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 {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.
Aşağıdaki istekle başlayın:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions?$filter={filter}&api-version=2022-04-01
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 {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.
Rolün GUID tanımlayıcısını almak için Rol Tanımları - Liste REST API'sini kullanın.
Aşağıdaki istekle başlayın:
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
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 {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.
Ö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.
Ö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
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}" ] } }
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 {roleDefinitionId} öğesini özel rolün GUID tanımlayıcısıyla değiştirin.
İstek gövdesinde {roleDefinitionId} öğesini GUID tanımlayıcısıyla değiştirin.
Abonelik veya kaynak grubuysa
assignableScopes
, {subscriptionId} veya {resourceGroup} örneklerini tanımlayıcılarınızla değiştirin.Bir yönetim grubuysa
assignableScopes
, {groupId} örneğini yönetim grubu tanımlayıcınızla değiştirin.özelliğinde
actions
, rolün gerçekleştirilmeye izin verdiği eylemleri ekleyin.özelliğinde
notActions
, izin verilenactions
dışında tutulan eylemleri ekleyin.ve
description
özelliklerinderoleName
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.
Ö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.
Aşağıdaki istekle başlayın:
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
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 {roleDefinitionId} öğesini özel rolün GUID tanımlayıcısıyla değiştirin.
Ö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}" ] } }
İ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.
Ö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.
Ö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.
Aşağıdaki istekle başlayın:
DELETE https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}?api-version=2022-04-01
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 {roleDefinitionId} öğesini özel rolün GUID tanımlayıcısıyla değiştirin.