Was ist die attributbasierte Zugriffssteuerung in Azure (Azure Attribute-Based Access Control, Azure ABAC)?

Die attributbasierte Zugriffskontrolle (attribute-based access control, ABAC) ist ein Autorisierungssystem, das den Zugriff auf der Grundlage von Attributen definiert, die mit Sicherheitsprinzipalen, Ressourcen und der Umgebung einer Zugriffsanforderung verbunden sind. Mit ABAC können Sie einem Sicherheitsprinzipal basierend auf Attributen Zugriff auf eine Ressource gewähren. Bei Azure ABAC handelt es sich um die Implementierung von ABAC für Azure.

Was sind Rollenzuweisungsbedingungen?

Die rollenbasierte Zugriffssteuerung von Azure (Azure Role-Based Access Control, Azure RBAC) ist ein Autorisierungssystem, mit dem Sie verwalten können, welche Benutzer*innen Zugriff auf Azure-Ressourcen haben, welche Aktionen die Benutzer*innen für diese Ressourcen ausführen können und auf welche Bereiche die Benutzer*innen zugreifen können. In den meisten Fällen reicht Azure RBAC für die Zugriffsverwaltung mit Rollendefinitionen und Rollenzuweisungen aus. Es kann jedoch Fälle geben, in denen Sie eine präzisere Zugriffsverwaltung benötigen oder die Verwaltung von Hunderten von Rollenzuweisungen vereinfachen möchten.

Azure ABAC baut auf Azure RBAC auf und fügt Rollenzuweisungsbedingungen auf der Grundlage von Attributen im Kontext bestimmter Aktionen hinzu. Eine Rollenzuweisungsbedingung ist eine zusätzliche Überprüfung, die Sie Ihrer Rollenzuweisung optional hinzufügen können, um eine präzisere Zugriffssteuerung zu ermöglichen. Eine Bedingung dient zum Filtern von Berechtigungen, die im Rahmen der Rollendefinition und Rollenzuweisung gewährt wurden. So können Sie beispielsweise eine Bedingung hinzufügen, die festgelegt, dass ein Objekt über ein bestimmtes Tag verfügen muss, damit das Objekt gelesen werden kann. Bedingungen können nicht dazu verwendet werden, den Zugriff auf bestimmte Ressourcen explizit zu verweigern.

Gründe für die Verwendung von Bedingungen

Die Verwendung von Rollenzuweisungsbedingungen hat im Wesentlichen drei Vorteile:

  • Präzisere Zugriffssteuerung: Bei einer Rollenzuweisung wird eine Rollendefinition mit Aktionen und Datenaktionen verwendet, um einem Berechtigungen als Sicherheitsprinzipal zu erteilen. Sie können Bedingungen schreiben, um diese Berechtigungen zu filtern und den Zugriff präziser zu steuern. Außerdem können Sie Bedingungen zu bestimmten Aktionen hinzufügen. So können Sie beispielsweise festlegen, dass ein bestimmter Benutzer nur Lesezugriff auf Blobs in Ihrem Abonnement haben soll, wenn die Blobs über das Tag „Project=Blue“ verfügen.
  • Weniger Rollenzuweisungen: Die Anzahl von Rollenzuweisungen pro Azure-Abonnement ist aktuell begrenzt. Es gibt jedoch Szenarien, in denen Tausende von Rollenzuweisungen erforderlich wären. Alle diese Rollenzuweisungen müssten verwaltet werden. In diesen Szenarien lässt sich die Anzahl von Rollenzuweisungen durch Hinzufügen von Bedingungen ggf. erheblich reduzieren.
  • Verwendung von Attributen mit spezifischer geschäftlicher Bedeutung: Bedingungen ermöglichen die Verwendung von Attributen, die für Sie in der Zugriffssteuerung eine spezifische geschäftliche Bedeutung haben. Beispiele für Attribute wären etwa Projektname, Softwareentwicklungsphase und Klassifizierungsebenen. Die Werte dieser Ressourcenattribute sind dynamisch und ändern sich, wenn Benutzer zu anderen Teams oder Projekten wechseln.

Beispielszenarien für Bedingungen

Das Hinzufügen einer Bedingung zu einer Rollenzuweisung kann in verschiedenen Szenarien sinnvoll sein. Die folgende Auflistung enthält einige Beispiele:

  • Lesezugriff auf Blobs mit dem Tag „Project=Cascade“
  • Neue Blobs müssen das Tag „Project=Cascade“ enthalten.
  • Vorhandene Blobs müssen mit mindestens einem Projekt- oder Programmschlüssel gekennzeichnet sein.
  • Vorhandene Blobs müssen mit einem Projektschlüssel und dem Wert „Cascade“, „Baker“ oder „Skagit“ gekennzeichnet sein.
  • Lesen, Schreiben oder Löschen von Blobs in Containern mit dem Namen „blobs-example-container“
  • Lesezugriff auf Blobs in Containern mit dem Namen „blobs-example-container“ und dem Pfad „readonly“
  • Schreibzugriff auf Blobs in Containern mit dem Namen „Contosocorp“ und dem Pfad „uploads/contoso“
  • Lesezugriff auf Blobs mit dem Tag „Program=Alpine“ und dem Pfad „logs“
  • Lesezugriff auf Blobs mit dem Tag „Project=Baker“, und der Benutzer verfügt über ein entsprechendes Attribut „Project=Baker“
  • Lesezugriff auf Blobs während eines bestimmten Datums/Zeitbereichs.
  • Schreibzugriff auf Blobs nur über eine private Verbindung oder über ein bestimmtes Subnetz.

Weitere Informationen zur Erstellung dieser Beispiele finden Sie im Beispiel für Azure-Rollenzuweisungsbedingungen für Blob Storage.

Wo können Bedingungen hinzugefügt werden?

Derzeit können Bedingungen zu integrierten oder benutzerdefinierten Rollenzuweisungen hinzugefügt werden, die über Blob-Speicher- oder Warteschlangen-Speicherdatenaktionen verfügen. Bedingungen werden im gleichen Bereich hinzugefügt wie die Rollenzuweisung. Zum Hinzufügen einer Bedingung müssen Sie genau wie bei Rollenzuweisungen über Berechtigungen vom Typ Microsoft.Authorization/roleAssignments/write verfügen.

Hier sind einige der Blob-Speicherattribute, die Sie in Ihren Bedingungen verwenden können.

  • Kontoname
  • Blobindextags
  • Blobpfad
  • Blobpräfix
  • Containername
  • Name des Verschlüsselungsbereichs
  • Ist die aktuelle Version
  • Ist der hierarchische Namespace aktiviert
  • Ist eine private Verbindung
  • Momentaufnahme
  • UTC now (aktuelles Datum und Uhrzeit in koordinierter Weltzeit)
  • Versions-ID

Wie sieht eine Bedingung aus?

Bedingungen können neuen oder vorhandenen Rollenzuweisungen hinzugefügt werden. Im Anschluss sehen Sie die Rolle Storage-Blobdatenleser, die einem Benutzer namens Chandra in einem Ressourcengruppenbereich zugewiesen wurde. Außerdem wurde eine Bedingung hinzugefügt, die nur Lesezugriff auf Blobs mit dem Tag „Project=Cascade“ zulässt.

Diagramm: Rollenzuweisung mit einer Bedingung

Wenn Chandra versucht, ein Blob ohne das Tag „Project=Cascade“ zu lesen, wird der Zugriff verweigert.

Diagramm: Zugriffsverweigerung mit einer Bedingung

Im Azure-Portal sieht die Bedingung wie folgt aus:

Screenshot: Bedingungs-Editor im Azure-Portal mit dem Abschnitt „Ausdruck erstellen“ mit Werten für Blobindextags

Im Code sieht die Bedingung wie folgt aus:

(
    (
        !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}
        AND NOT
        SubOperationMatches{'Blob.List'})
    )
    OR
    (
        @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'
    )
)

Weitere Informationen zum Format von Bedingungen finden Sie unter Format und Syntax von Azure-Rollenzuweisungsbedingungen.

Status der Bedingungsfeatures

In der folgenden Tabelle sind die Status von Bedingungsfeatures aufgeführt:

Funktion Status Date
Verwenden von Umgebungsattributen in einer Bedingung Allgemein verfügbar April 2024
Hinzufügen von Bedingungen mithilfe des Bedingungs-Editors im Azure-Portal Allgemein verfügbar Oktober 2022
Hinzufügen von Bedingungen mit Azure PowerShell, der Azure-Befehlszeilenschnittstelle oder der REST-API Allgemein verfügbar Oktober 2022
Verwenden Sie Ressourcen- und Anforderungsattribute für spezifische Kombinationen von Azure-Speicherressourcen, Zugriffsattributtypen und Speicherkontoleistungsstufen. Weitere Informationen finden Sie unter Status der Bedingungsfeatures in Azure Storage. Allgemein verfügbar Oktober 2022
Verwenden benutzerdefinierter Sicherheitsattribute für einen Prinzipal in einer Bedingung Allgemein verfügbar November 2023

Bedingungen und Microsoft Entra PIM

Sie können auch Bedingungen für berechtigte Rollenzuweisungen mithilfe von Microsoft Entra Privileged Identity Management (Microsoft Entra PIM) für Azure-Ressourcen hinzufügen. Mit Microsoft Entra PIM müssen Ihre Endbenutzer eine Rollenzuweisung mit Berechtigungen aktivieren, um bestimmte Aktionen ausführen zu können. Mithilfe von Bedingungen in Microsoft Entra PIM können Sie nicht nur den Zugriff eines Benutzers auf eine Ressource mithilfe von differenzierten Bedingungen einschränken, sondern diesen auch mithilfe von Microsoft Entra PIM mit einer zeitgebundenen Einstellung, einem Genehmigungsworkflow, einem Überwachungspfad usw. schützen. Weitere Informationen finden Sie unter Zuweisen von Azure-Ressourcenrollen in Privileged Identity Management.

Terminologie

Zum besseren Verständnis von Azure RBAC und Azure ABAC können Sie die folgende Begriffsliste heranziehen:

Begriff Definition
Attributbasierte Zugriffssteuerung (Attribute-Based Access Control, ABAC) Ein Autorisierungssystem, bei dem der Zugriff auf der Grundlage von Attributen definiert wird, die Sicherheitsprinzipalen, Ressourcen und der Umgebung zugeordnet sind. Mit ABAC können Sie einem Sicherheitsprinzipal basierend auf Attributen Zugriff auf eine Ressource gewähren.
Azure ABAC Die Implementierung von ABAC für Azure.
Rollenzuweisungsbedingung Eine zusätzliche Überprüfung, die Sie Ihrer Rollenzuweisung optional hinzufügen können, um eine präzisere Zugriffssteuerung zu ermöglichen.
Attribut In diesem Kontext ein Schlüssel-Wert-Paar wie „Project=Blue“, wobei „Project“ der Attributschlüssel und „Blue“ der Attributwert ist. Attribute und Tags werden im Zusammenhang mit der Zugriffssteuerung synonym verwendet.
expression Eine Anweisung in einer Bedingung, die als „True“ oder „False“ ausgewertet wird. Ein Ausdruck hat folgendes Format: <Attribut><Operator><Wert>.

Grenzwerte

Hier finden Sie einige der Grenzwerte für Bedingungen.

Resource Begrenzung Notizen
Anzahl von Ausdrücken pro Bedingung mithilfe des visuellen Editors 5 Sie können mehr als fünf Ausdrücke mithilfe des Code-Editors hinzufügen

Bekannte Probleme

Hier finden Sie die bekannten Probleme mit Bedingungen:

  • Wenn Sie Microsoft Entra Privileged Identity Management (PIM) und benutzerdefinierte Sicherheitsattribute verwenden, wird Principal beim Hinzufügen einer Bedingung nicht in der Attributquelle angezeigt.

Nächste Schritte