Udostępnij za pośrednictwem


Tworzenie lub aktualizowanie ról niestandardowych platformy Azure przy użyciu szablonu usługi ARM

Jeśli wbudowane role platformy Azure nie spełniają konkretnych potrzeb organizacji, możesz utworzyć własne role niestandardowe. W tym artykule opisano sposób tworzenia lub aktualizowania roli niestandardowej przy użyciu szablonu usługi Azure Resource Manager (szablonu usługi ARM).

Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.

Aby utworzyć rolę niestandardową, należy określić nazwę roli, uprawnienia i miejsce użycia roli. W tym artykule utworzysz rolę o nazwie Rola niestandardowa — czytelnik grupy zasobów z uprawnieniami do zasobów, które można przypisać w zakresie subskrypcji lub niższym.

Jeśli Twoje środowisko spełnia wymagania wstępne i masz doświadczenie w korzystaniu z szablonów ARM, wybierz przycisk Wdróż na platformie Azure. Szablon zostanie otwarty w witrynie Azure Portal.

Przycisk wdrażania szablonu usługi Resource Manager na platformie Azure.

Wymagania wstępne

Aby utworzyć rolę niestandardową, musisz mieć następujące elementy:

  • Uprawnienia do tworzenia ról niestandardowych, takich jak administrator dostępu użytkowników.

Należy użyć następującej wersji:

  • 2018-07-01 lub nowsze

Aby uzyskać więcej informacji, zobacz Wersje interfejsów API rest kontroli dostępu opartej na rolach platformy Azure.

Przegląd szablonu

Szablon używany w tym artykule pochodzi z szablonów szybkiego startu platformy Azure. Szablon zawiera cztery parametry i sekcję zasobów. Cztery parametry to:

  • Tablica akcji z wartością ["Microsoft.Resources/subscriptions/resourceGroups/read"]domyślną .
  • Tablica z notActions pustą wartością domyślną.
  • Nazwa roli z wartością Custom Role - RG Readerdomyślną .
  • Opis roli z wartością Subscription Level Deployment of a Role Definitiondomyślną .

Zakres, w którym można przypisać tę rolę niestandardową, jest ustawiony na bieżącą subskrypcję.

{
  "$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]"
        ]
      }
    }
  ]
}

Zasób zdefiniowany w szablonie to:

Wdrażanie szablonu

Wykonaj następujące kroki, aby wdrożyć poprzedni szablon.

  1. Zaloguj się w witrynie Azure Portal.

  2. Otwórz usługę Azure Cloud Shell dla programu PowerShell.

  3. Skopiuj i wklej następujący skrypt do usługi Cloud Shell.

    $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. Wprowadź lokalizację wdrożenia, na przykład centralus.

  5. Wprowadź listę akcji roli niestandardowej jako listę rozdzielaną przecinkami, taką jak Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read.

  6. W razie potrzeby naciśnij Enter, aby uruchomić New-AzDeployment polecenie.

    Polecenie New-AzDeployment wdraża szablon w celu utworzenia roli niestandardowej.

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

    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 :
    

Przeglądanie wdrożonych zasobów

Wykonaj następujące kroki, aby sprawdzić, czy rola niestandardowa została utworzona.

  1. Uruchom polecenie Get-AzRoleDefinition, aby wyświetlić listę roli niestandardowej.

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

    Powinny zostać wyświetlone dane wyjściowe podobne do następujących:

    {
      "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. W witrynie Azure Portal otwórz subskrypcję.

  3. W menu po lewej stronie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami)..

  4. Wybierz kartę Role .

  5. Ustaw listę Typ na Wartość CustomRole.

  6. Sprawdź, czy na liście znajduje się rola niestandardowa — czytelnik RG.

    Nowa rola niestandardowa w witrynie Azure Portal

Aktualizacja roli niestandardowej

Podobnie jak w przypadku tworzenia roli niestandardowej, możesz zaktualizować istniejącą rolę niestandardową przy użyciu szablonu. Aby zaktualizować rolę niestandardową, musisz określić rolę, którą chcesz zaktualizować.

Poniżej przedstawiono zmiany, które należy wprowadzić w poprzednim szablonie Szybkiego startu, aby zaktualizować rolę niestandardową.

  • Dołącz identyfikator roli jako parametr.

        ...
        "roleDefName": {
          "type": "string",
          "metadata": {
            "description": "ID of the role definition"
          }
        ...
    
  • Uwzględnij parametr identyfikatora roli w definicji roli.

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

Oto przykład wdrażania szablonu.

$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

Czyszczenie zasobów

Aby usunąć rolę niestandardową, wykonaj następujące kroki.

  1. Uruchom następujące polecenie, aby usunąć rolę niestandardową.

    Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
    
  2. Wprowadź wartość Y , aby potwierdzić, że chcesz usunąć rolę niestandardową.

Następne kroki