Share via


ARM şablonu 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 Resource Manager şablonu (ARM şablonu) kullanarak özel bir rolün nasıl oluşturulacağı veya güncelleştirildiği açıklanır.

Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.

Özel rol oluşturmak için bir rol adı, izinler ve rolün kullanılabileceğini belirtirsiniz. Bu makalede, abonelik kapsamında veya daha düşük bir kapsamda atanabilecek kaynak izinlerine sahip Özel Rol - RG Okuyucusu adlı bir rol oluşturacaksınız.

Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanma hakkında bilginiz varsa, Azure’a dağıtma düğmesini seçin. Şablon Azure portalda açılır.

Button to deploy the Resource Manager template to Azure.

Önkoşullar

Özel rol oluşturmak için sahip olmanız gerekir:

  • Kullanıcı Erişimi Yönetici istrator gibi özel roller oluşturma izinleri.

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

  • 2018-07-01 veya üzeri

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

Şablonu gözden geçirme

Bu makalede kullanılan şablon Azure Hızlı Başlangıç Şablonları'ndan alınmıştı. Şablonun dört parametresi ve kaynaklar bölümü vardır. Dört parametre şunlardır:

  • Varsayılan değeri ["Microsoft.Resources/subscriptions/resourceGroups/read"]olan eylem dizisi.
  • Boş varsayılan değer içeren dizisi notActions .
  • Varsayılan değeri Custom Role - RG Readerolan rol adı.
  • Varsayılan değeri Subscription Level Deployment of a Role Definitionolan rol açıklaması.

Bu özel rolün atanabileceği kapsam geçerli aboneliğe ayarlanır.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.25.53.49325",
      "templateHash": "16704138909949665309"
    }
  },
  "parameters": {
    "actions": {
      "type": "array",
      "defaultValue": [
        "Microsoft.Resources/subscriptions/resourceGroups/read"
      ],
      "metadata": {
        "description": "Array of actions for the roleDefinition"
      }
    },
    "notActions": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "Array of notActions for the roleDefinition"
      }
    },
    "roleName": {
      "type": "string",
      "defaultValue": "Custom Role - RG Reader",
      "metadata": {
        "description": "Friendly name of the role definition"
      }
    },
    "roleDescription": {
      "type": "string",
      "defaultValue": "Subscription Level Deployment of a Role Definition",
      "metadata": {
        "description": "Detailed description of the role definition"
      }
    }
  },
  "variables": {
    "roleDefName": "[guid(parameters('roleName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/roleDefinitions",
      "apiVersion": "2022-04-01",
      "name": "[variables('roleDefName')]",
      "properties": {
        "roleName": "[parameters('roleName')]",
        "description": "[parameters('roleDescription')]",
        "type": "customRole",
        "permissions": [
          {
            "actions": "[parameters('actions')]",
            "notActions": "[parameters('notActions')]"
          }
        ],
        "assignableScopes": [
          "[subscription().id]"
        ]
      }
    }
  ]
}

Şablonda tanımlanan kaynak:

Şablonu dağıtma

Önceki şablonu dağıtmak için bu adımları izleyin.

  1. Azure Portal’ında oturum açın.

  2. PowerShell için Azure Cloud Shell'i açın.

  3. Aşağıdaki betiği kopyalayıp Cloud Shell'e yapıştırın.

    $location = Read-Host -Prompt "Enter a location (i.e. centralus)"
    [string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
    $actions = $actions.Split(',')
    $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json"
    New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
    
  4. Dağıtım için gibi centralusbir konum girin.

  5. Özel rol için, gibi Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/readvirgülle ayrılmış bir liste olarak eylemlerin listesini girin.

  6. Gerekirse, komutu çalıştırmak için Enter tuşuna New-AzDeployment basın.

    New-AzDeployment komutu, özel rolü oluşturmak için şablonu dağıtır.

    Aşağıdakine benzer bir çıktı görmeniz gerekir:

    PS> New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
    
    Id                      : /subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/azuredeploy
    DeploymentName          : azuredeploy
    Location                : centralus
    ProvisioningState       : Succeeded
    Timestamp               : 6/25/2020 8:08:32 PM
    Mode                    : Incremental
    TemplateLink            :
                              Uri            : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json
                              ContentVersion : 1.0.0.0
    
    Parameters              :
                              Name               Type                       Value
                              =================  =========================  ==========
                              actions            Array                      [
                                "Microsoft.Resources/resources/read",
                                "Microsoft.Resources/subscriptions/resourceGroups/read"
                              ]
                              notActions         Array                      []
                              roleName           String                     Custom Role - RG Reader
                              roleDescription    String                     Subscription Level Deployment of a Role Definition
    
    Outputs                 :
    DeploymentDebugLogLevel :
    

Dağıtılan kaynakları gözden geçirme

Özel rolün oluşturulduğunu doğrulamak için bu adımları izleyin.

  1. Özel rolü listelemek için Get-AzRoleDefinition komutunu çalıştırın.

    Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
    

    Aşağıdakine benzer bir çıktı görmeniz gerekir:

    {
      "Name": "Custom Role - RG Reader",
      "Id": "11111111-1111-1111-1111-111111111111",
      "IsCustom": true,
      "Description": "Subscription Level Deployment of a Role Definition",
      "Actions": [
        "Microsoft.Resources/resources/read",
        "Microsoft.Resources/subscriptions/resourceGroups/read"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId}"
      ]
    }
    
  2. Azure portalında aboneliğinizi açın.

  3. Sol menüde Erişim denetimi (IAM) öğesini seçin.

  4. Roller sekmesini seçin.

  5. Tür listesini CustomRole olarak ayarlayın.

  6. Özel Rol - RG Okuyucusu rolünün listelendiğini doğrulayın.

    New custom role in Azure portal

Özel rolü güncelleştirme

Özel rol oluşturmaya benzer şekilde, şablon kullanarak mevcut bir özel rolü güncelleştirebilirsiniz. Özel bir rolü güncelleştirmek için, güncelleştirmek istediğiniz rolü belirtmeniz gerekir.

Özel rolü güncelleştirmek için önceki Hızlı Başlangıç şablonunda yapmanız gereken değişiklikler şunlardır.

  • Rol kimliğini parametre olarak ekleyin.

        ...
        "roleDefName": {
          "type": "string",
          "metadata": {
            "description": "ID of the role definition"
          }
        ...
    
  • Rol kimliği parametresini rol tanımına ekleyin.

      ...
      "resources": [
        {
          "type": "Microsoft.Authorization/roleDefinitions",
          "apiVersion": "2022-04-01",
          "name": "[parameters('roleDefName')]",
          "properties": {
            ...
    

Burada, şablonun nasıl dağıtılacağına ilişkin bir örnek verilmiştır.

$location = Read-Host -Prompt "Enter a location (i.e. centralus)"
[string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
$actions = $actions.Split(',')
$roleDefName = Read-Host -Prompt "Enter the role ID to update"
$templateFile = "rg-reader-update.json"
New-AzDeployment -Location $location -TemplateFile $templateFile -actions $actions -roleDefName $roleDefName

Kaynakları temizleme

Özel rolü kaldırmak için şu adımları izleyin.

  1. Özel rolü kaldırmak için aşağıdaki komutu çalıştırın.

    Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
    
  2. Özel rolü kaldırmak istediğinizi onaylamak için Y girin.

Sonraki adımlar