Omówienie zakresu kontroli dostępu opartej na rolach platformy Azure

Zakres to zestaw zasobów, do których ma zastosowanie dostęp. Podczas przypisywania roli ważne jest, aby zrozumieć zakres, aby można było przyznać podmiotowi zabezpieczeń tylko dostęp, którego potrzebuje. Ograniczając zakres, ograniczasz, jakie zasoby są zagrożone, jeśli podmiot zabezpieczeń kiedykolwiek zostanie naruszony.

Poziomy zakresu

Na platformie Azure można określić zakres na czterech poziomach: grupa zarządzania, subskrypcja, grupa zasobów i zasób. Zakresy mają strukturę opartą na relacji nadrzędny-podrzędny. Każdy poziom hierarchii sprawia, że zakres jest bardziej szczegółowy. Role można przypisywać na dowolnym z tych poziomów zakresu. Wybrany poziom określa, jak szeroko jest stosowana rola. Niższe poziomy dziedziczą uprawnienia roli z wyższych poziomów.

Scope for a role assignment

Grupy zarządzania są poziomem zakresu powyżej subskrypcji, ale grupy zarządzania obsługują bardziej złożone hierarchie. Na poniższym diagramie przedstawiono przykład hierarchii grup zarządzania i subskrypcji, które można zdefiniować. Aby uzyskać więcej informacji na temat grup zarządzania, zobacz Co to są grupy zarządzania platformy Azure?.

Management group and subscription hierarchy

Format zakresu

Jeśli przypiszesz role przy użyciu wiersza polecenia, musisz określić zakres. W przypadku narzędzi wiersza polecenia zakres jest potencjalnie długim ciągiem, który identyfikuje dokładny zakres przypisania roli. W witrynie Azure Portal ten zakres jest zazwyczaj wyświetlany jako identyfikator zasobu.

Zakres składa się z serii identyfikatorów oddzielonych ukośnikiem (/). Ten ciąg można traktować jako wyrażający następującą hierarchię, gdzie tekst bez symboli zastępczych ({}) są stałymi identyfikatorami:

/subscriptions
    /{subscriptionId}
        /resourcegroups
            /{resourceGroupName}
                /providers
                    /{providerName}
                        /{resourceType}
                            /{resourceSubType1}
                                /{resourceSubType2}
                                    /{resourceName}
  • {subscriptionId} to identyfikator subskrypcji do użycia (identyfikator GUID).
  • {resourceGroupName} to nazwa zawierającej grupę zasobów.
  • {providerName}to nazwa dostawcy zasobów, który obsługuje zasób, a {resourceSubType*} następnie {resourceType} identyfikuje dalsze poziomy w ramach tego dostawcy zasobów.
  • {resourceName} jest ostatnią częścią ciągu, która identyfikuje określony zasób.

Grupy zarządzania są poziomem wyższym niż subskrypcje i mają najszerszy (najmniej konkretny) zakres. Przypisania ról na tym poziomie mają zastosowanie do subskrypcji w grupie zarządzania. Zakres grupy zarządzania ma następujący format:

/providers
    /Microsoft.Management
        /managementGroups
            /{managmentGroupName}

Przykłady zakresu

Scope Przykład
Grupa zarządzania /providers/Microsoft.Management/managementGroups/marketing-group
Subskrypcja /subscriptions/00000000-0000-0000-0000-000000000000
Grupa zasobów /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/pharma-sales
Zasób /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyVirtualNetworkResourceGroup/providers/Microsoft.Network/virtualNetworks/MyVirtualNetwork12345

Jak określić zakres zasobu

Dość proste jest określenie zakresu grupy zarządzania, subskrypcji lub grupy zasobów. Wystarczy znać nazwę i identyfikator subskrypcji. Jednak określenie zakresu zasobu wymaga nieco więcej pracy. Poniżej przedstawiono kilka sposobów określania zakresu zasobu.

  • W witrynie Azure Portal otwórz zasób, a następnie przyjrzyj się właściwościom. Zasób powinien zawierać listę identyfikatora zasobu, w którym można określić zakres. Na przykład poniżej przedstawiono identyfikatory zasobów dla konta magazynu.

    Screenshot that shows resource IDs for a storage account in Azure portal.

  • Innym sposobem jest użycie witryny Azure Portal do tymczasowego przypisania roli w zakresie zasobów, a następnie użycie programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure w celu wyświetlenia listy przypisań ról. W danych wyjściowych zakres zostanie wyświetlony jako właściwość.

    RoleAssignmentId   : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/pro
                         viders/Microsoft.Authorization/roleAssignments/<roleAssignmentId>
    Scope              : /subscriptions/<subscriptionId>/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01
    DisplayName        : User
    SignInName         : user@contoso.com
    RoleDefinitionName : Storage Blob Data Reader
    RoleDefinitionId   : 2a2b9908-6ea1-4ae2-8e65-a410df84e7d1
    ObjectId           : <principalId>
    ObjectType         : User
    CanDelegate        : False
    Description        :
    ConditionVersion   :
    Condition          :
    
    {
        "canDelegate": null,
        "condition": null,
        "conditionVersion": null,
        "description": null,
        "id": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
        "name": "{roleAssignmentId}",
        "principalId": "{principalId}",
        "principalName": "user@contoso.com",
        "principalType": "User",
        "resourceGroup": "test-rg",
        "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "roleDefinitionName": "Storage Blob Data Reader",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/azurestorage12345/blobServices/default/containers/blob-container-01",
        "type": "Microsoft.Authorization/roleAssignments"
      }
    

Zakres i szablony usługi ARM

Przypisanie roli jest specjalnym typem w usłudze Azure Resource Manager nazywanym zasobem rozszerzenia. Zasób rozszerzenia to zasób, który dodaje możliwości innego zasobu. Zawsze istnieją jako rozszerzenie (na przykład podrzędne) innego zasobu. Na przykład przypisanie roli w zakresie subskrypcji jest zasobem rozszerzenia subskrypcji. Nazwa przypisania roli jest zawsze nazwą zasobu, który rozszerzasz, oraz /Microsoft.Authorization/roleAssignments/{roleAssignmentId}. Podczas przypisywania ról przy użyciu szablonu usługi Azure Resource Manager (szablonu usługi ARM) zwykle nie trzeba podawać zakresu. Przyczyną jest to, że pole zakresu zawsze jest identyfikatorem rozszerzanego zasobu. Zakres można określić na podstawie identyfikatora samego przypisania roli. W poniższej tabeli przedstawiono przykłady identyfikatora przypisania roli i odpowiadający mu zakres:

Identyfikator przypisania roli Scope
/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId} /subscriptions/{subscriptionId}/resourceGroups/Example-Storage-rg

Aby uzyskać więcej informacji na temat zakresu i szablonów usługi ARM, zobacz Przypisywanie ról platformy Azure przy użyciu szablonów usługi Azure Resource Manager. Aby uzyskać pełną listę typów zasobów rozszerzeń, zobacz Typy zasobów, które rozszerzają możliwości innych zasobów.

Następne kroki