Azure’da özel roller nelerdir?

Tamamlandı

Bazı durumlarda, yerleşik roller ihtiyacınız olan tam erişim düzeyini vermez. Özel roller, kuruluşunuzun belirli ihtiyaçlarını karşılayan roller tanımlamanıza olanak tanır. Oluşturduğunuz özel Azure rollerini abonelik, kaynak grubu ve kaynak kapsamında kullanıcılara, gruplara ve hizmet sorumlularına atayabilirsiniz.

Bu ünitede Azure rol tabanlı erişim denetimindeki (RBAC) özel roller hakkında bilgi edineceksiniz.

Microsoft Entra ve Azure rolleri

Azure ile ilk kez çalıştığınızda Microsoft Entra rolleri ve Azure rolleri genellikle karıştırılır. Microsoft Entra rolleri, kullanıcı hesapları ve parolalar gibi Microsoft Entra kaynaklarına yönelik izinleri yönetme mekanizması sağlar. Azure rolleri, sanal makineler (VM’ler) gibi Azure kaynaklarının ayrıntılı düzeyde yönetilmesine olanak tanıyan birçok özellik sunar.

Diagram that shows relationship of Azure roles and Microsoft Entra roles.

Aşağıdaki tabloda, ikisini nasıl ayarlayıp yönetebileceğiniz arasındaki küçük farklar gösterilmektedir:

Azure rolleri Microsoft Entra rolleri
VM’ler, depolama, ağlar ve daha fazlası gibi Azure kaynaklarına erişimi yönetme Kullanıcı hesapları ve parolalar gibi Microsoft Entra kaynaklarına erişimi yönetme
Birden fazla kapsam düzeyi (yönetim grubu, abonelik, kaynak grubu, kaynak) Yalnızca kiracı düzeyine ayarlanmış kapsam
Azure portalı, Azure CLI, Azure PowerShell, Azure Resource Manager şablonları ve REST API’si aracılığıyla erişilebilen rol bilgileri Azure yönetici portalı, Microsoft 365 yönetim merkezi, Microsoft Graph, Microsoft Graph PowerShell'de erişilebilen rol bilgileri

Senaryomuzda, azure vm'lerini abonelik kapsamında yönetmek için özel bir role ihtiyacımız var, bu nedenle Azure RBAC'de özel roller kullanmamız gerekiyor.

Özel rolleri atama ve bunların kapsamları

Kullanıcı Erişimi Yönetici istrator veya Sahip rollerine sahip kullanıcılar Azure RBAC'de özel roller oluşturabilir veya atayabilir.

Özel rolleri şu rollere atayabilirsiniz:

Güvenlik sorumlusu Özet
Kullanıcı Microsoft Entra Id'de profili olan bir kişi
Grup Microsoft Entra Id'de oluşturulan bir kullanıcı kümesi
Hizmet sorumluları Belirli Azure kaynaklarına erişmek için uygulama veya hizmetler tarafından kullanılan güvenlik kimliği
Yönetilen kimlik Microsoft Entra Id'de Azure tarafından otomatik olarak yönetilen bir kimlik

Atamanın ve ilgili izinlerin kapsamını belirleyerek bunları Azure’daki farklı düzeylere ayarlayabilirsiniz. Farklı kapsamlar şunlardır:

  • Abonelik
  • Kaynak grubu
  • Tek kaynak

Diagram that shows the scopes for role assignment and their relationship to each other.

Rol tanımı ve yapısı

Özel bir rol tanımı çeşitli farklı izinlere ayrılır. Her tanım, okuma, yazma ve silme gibi izin verilen işlemleri detaylandırır. Tanım, şu yapılar kullanılarak oluşturulur:

{
  "Name": "",
  "IsCustom": true,
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}"
  ]
}

Aşağıdaki örnekte Katkıda Bulunan rolü için rol tanımı gösterilmektedir:

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

Tüm rol tanımları aşağıdaki biçim kullanılarak bildirilir:

{Company}.{ProviderName}/{resourceType}/{action}

Eylem bölümü genelde aşağıdaki eylemlerden biridir:

  • *
  • okuma
  • yazma
  • eylem
  • delete

VM’leri yönetmek için özel rol tanımlama

Rol tanımına hangi izinleri ekleyeceğinizi belirlemek için Azure Resource Manager kaynak sağlayıcısı işlemler listesini kullanın ve ihtiyaç duyduklarınıza benzer izinlere sahip olan yerleşik Azure rollerine bakın.

Yerleşik rolleri gözden geçirme

Senaryomuz için, Sanal Makine Katkıda Bulunanı yerleşik rolünün çalışandan daha fazla izni vardır ve Sanal Makine Yönetici Istrator Oturum Açma bilgileri yeterli değildir.

Aşağıdaki Azure CLI komutu, yerleşik Sanal Makine Katkıda Bulunanı rolünün izinlerini döndürür:

az role definition list --name "Virtual Machine Contributor" --output json | jq '.[] | .permissions[0].actions'

Aşağıdaki listede, Sanal Makine Katkıda Bulunanı yerleşik rolünün izinleri görüntülenir:

[
  "Microsoft.Authorization/*/read",
  "Microsoft.Compute/availabilitySets/*",
  "Microsoft.Compute/locations/*",
  "Microsoft.Compute/virtualMachines/*",
  "Microsoft.Compute/virtualMachineScaleSets/*",
  "Microsoft.DevTestLab/schedules/*",
  "Microsoft.Insights/alertRules/*",
  "Microsoft.Network/applicationGateways/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatPools/join/action",
  "Microsoft.Network/loadBalancers/inboundNatRules/join/action",
  "Microsoft.Network/loadBalancers/probes/join/action",
  "Microsoft.Network/loadBalancers/read",
  "Microsoft.Network/locations/*",
  "Microsoft.Network/networkInterfaces/*",
  "Microsoft.Network/networkSecurityGroups/join/action",
  "Microsoft.Network/networkSecurityGroups/read",
  "Microsoft.Network/publicIPAddresses/join/action",
  "Microsoft.Network/publicIPAddresses/read",
  "Microsoft.Network/virtualNetworks/read",
  "Microsoft.Network/virtualNetworks/subnets/join/action",
  "Microsoft.RecoveryServices/locations/*",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read",
  "Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/read",
  "Microsoft.RecoveryServices/Vaults/backupPolicies/write",
  "Microsoft.RecoveryServices/Vaults/read",
  "Microsoft.RecoveryServices/Vaults/usages/read",
  "Microsoft.RecoveryServices/Vaults/write",
  "Microsoft.ResourceHealth/availabilityStatuses/read",
  "Microsoft.Resources/deployments/*",
  "Microsoft.Resources/subscriptions/resourceGroups/read",
  "Microsoft.SqlVirtualMachine/*",
  "Microsoft.Storage/storageAccounts/listKeys/action",
  "Microsoft.Storage/storageAccounts/read",
  "Microsoft.Support/*"
]

Bu listeyi PowerShell'de almak için aşağıdaki komutu çalıştırırsınız:

Get-AzRoleDefinition -Name "Virtual Machine Contributor" | Select Actions | ConvertTo-Json

Senaryomuzda, belirli bir abonelik için sanal makineleri izlemenize ve yeniden başlatmanıza olanak tanıyan özel bir rol istiyoruz, bu nedenle abonelik düzeyinde kapsamı aşağıdaki eylemleri eklemek istiyoruz:

  • İşlem, ağ ve depolama kaynakları için okuma yetkisi
  • Sanal makineleri başlatma ve yeniden başlatma olanağı
  • Abonelikteki kaynak gruplarına erişim
  • İzleme kaynaklarına erişim

Sanal Makine Katılımcısı rol tanımında izleme gibi "Microsoft.Insights/alertRules/*" kullanabileceğimiz bazı işlemler vardır, ancak yeniden başlatma ve bazıları bu rol tanımında eylem olarak listelenmez.

Kaynak sağlayıcısı işlemlerini bulma

VM yeniden başlatma eylemini Azure Resource Manager kaynak sağlayıcısı işlemleri listesinde veya VM'lere yönelik işlemleri döndürmek için aşağıdaki PowerShell komutunu çalıştırarak bulabiliriz:

Get-AzProviderOperation */virtualMachines/*

Yeniden başlatma için aşağıdaki işlem listede döndürülür:

Operation         : Microsoft.Compute/virtualMachines/restart/action
OperationName     : Restart Virtual Machine
ProviderNamespace : Microsoft Compute
ResourceName      : Virtual Machines
Description       : Restarts the virtual machine
IsDataAction      : False

Kaynak sağlayıcısı işlemlerinin en güncel listesini almak için Azure PowerShell Get-AzProviderOperation cmdlet'ini kullanabilirsiniz. Azure CLI’da az provider operation show komutunu kullanın. Kaynak sağlayıcılarının ve işlemlerin yayımlanmış listesini Docs'taki Azure RBAC içeriğinde bulabilirsiniz.

VM İşleci rol tanımı oluşturma

İlgili yerleşik rol tanımlarına ve kaynak sağlayıcısı işlemleri listesine bakarak ihtiyacımız olan şeyleri seçtiğimizi varsayalım. Özel rolümüz için aşağıdaki rol tanımlarını elde ederiz. Özel rolümüz için bu rol tanımlarını kullanacağız.

   {
   "Name": "Virtual Machine Operator",
   "Id": "88888888-8888-8888-8888-888888888888",
   "IsCustom": true,
   "Description": "Can monitor and restart virtual machines.",
   "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": [],
   "DataActions": [],
   "NotDataActions": [],
   "AssignableScopes": [
      "/subscriptions/{subscriptionId1}" 
   ]
   }

Bilgilerinizi kontrol edin

1.

Özel Azure rol tanımına neler dahildir?

2.

Bir özel rol tanımına eklenecek işlemleri belirlemek için hangi komutlar kullanılır?