Azure CLI 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 Azure CLI kullanarak özel rolleri listeleme, oluşturma, güncelleştirme veya silme işlemleri açıklanmaktadır.

Özel rol oluşturma hakkında adım adım öğretici için bkz . Öğretici: Azure CLI kullanarak Azure özel rolü oluşturma.

Önkoşullar

Özel roller oluşturmak için şunları yapmanız gerekir:

Özel rolleri listeleme

Atama için kullanılabilen özel rolleri listelemek için az role definition list komutunu kullanın. Aşağıdaki örnekte geçerli abonelikteki tüm özel roller listelenmiştir.

az role definition list --custom-role-only true --output json --query '[].{roleName:roleName, roleType:roleType}'
[
  {
    "roleName": "My Management Contributor",
    "type": "CustomRole"
  },
  {
    "roleName": "My Service Reader Role",
    "type": "CustomRole"
  },
  {
    "roleName": "Virtual Machine Operator",
    "type": "CustomRole"
  }
]

Özel rol tanımını listeleme

Özel bir rol tanımını listelemek için az role definition list komutunu kullanın. Bu komut, yerleşik bir rol için kullanacağınız komutla aynıdır.

az role definition list --name {roleName}

Aşağıdaki örnekte Sanal Makine operatörü rol tanımı listelenir:

az role definition list --name "Virtual Machine Operator"
[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "name": "00000000-0000-0000-0000-000000000000",
    "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/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

Aşağıdaki örnek yalnızca Sanal Makine Operatörü rolünün eylemlerini listeler:

az role definition list --name "Virtual Machine Operator" --output json --query '[].permissions[0].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/*"
  ]
]

Özel rol oluşturma

Özel rol oluşturmak için az role definition create komutunu kullanın. Rol tanımı bir JSON açıklaması veya JSON açıklaması içeren bir dosyanın yolu olabilir.

az role definition create --role-definition {roleDefinition}

Aşağıdaki örnek Sanal Makine İşleci adlı özel bir rol oluşturur. Bu özel rol, Microsoft.Compute, Microsoft.Depolama ve Microsoft.Network kaynak sağlayıcılarının tüm okuma eylemlerine erişim atar ve sanal makineleri başlatmak, yeniden başlatmak ve izlemek için erişim atar. Bu özel rol iki abonelikte kullanılabilir. Bu örnekte giriş olarak bir JSON dosyası kullanılır.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}"
  ]
}
az role definition create --role-definition ~/roles/vmoperator.json

Özel rolü güncelleştirme

Özel bir rolü güncelleştirmek için önce az role definition list komutunu kullanarak rol tanımını alın. İkincisi, rol tanımında istediğiniz değişiklikleri yapın. Son olarak, güncelleştirilmiş rol tanımını kaydetmek için az role definition update komutunu kullanın.

az role definition update --role-definition {roleDefinition}

Aşağıdaki örnek Microsoft.Analizler ekler Sanal Makine Operatörü özel rolü için /diagnostic Ayarlar/ eylemine Actions bir yönetim grubu AssignableScopes ekler.

vmoperator.json

{
  "Name": "Virtual Machine Operator",
  "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.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [

  ],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/marketing-group"
  ]
}
az role definition update --role-definition ~/roles/vmoperator.json

Özel rolü silme

  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ü silmek için az role definition delete komutunu kullanın. Silinecek rolü belirtmek için rol adını veya rol kimliğini kullanın. Rol kimliğini belirlemek için az role definition list komutunu kullanın.

    az role definition delete --name {roleNameOrId}
    

    Aşağıdaki örnek, Virtual Machine Operator özel rolünü siler.

    az role definition delete --name "Virtual Machine Operator"
    

Sonraki adımlar