API7 Enterprise 3.2.14.4: Permission Boundary für verfeinertes Berechtigungsmanagement

Zhihuang Lin

Zhihuang Lin

August 15, 2024

Products

API7 Enterprise v3.2.14.4 wurde offiziell veröffentlicht und führt die Berechtigungsgrenze ein, um den Bedarf an einer granulareren Benutzerberechtigungsverwaltung in Unternehmen zu erfüllen.

Was ist eine Berechtigungsgrenze?

Eine Berechtigungsgrenze ist, wie der Name schon sagt, wie eine Mauer von Berechtigungen, die den maximalen Umfang der Berechtigungen definiert, die ein Benutzer haben kann. Sie wird verwendet, um die Aktionen einzuschränken, die Benutzer oder Rollen im System ausführen können. Ihr Hauptzweck ist es, die Systemsicherheit zu erhöhen und den Missbrauch von Berechtigungen zu verhindern. Durch das Setzen dieser "Mauer" können wir sicherstellen, dass Benutzer nur innerhalb ihres Verantwortungsbereichs operieren und keine Daten im System außerhalb ihrer Befugnisse einsehen oder ändern können.

Berechtigungsgrenzen können bestehende Berechtigungsrichtlinien im System wiederverwenden oder speziell neue Berechtigungsrichtlinien erstellen. Wenn einem Benutzer eine Berechtigungsgrenze zugewiesen wird, schränkt dies seine Berechtigungen ein, gewährt ihm aber keine direkten Berechtigungen.

Beispiel

Angenommen, wir erstellen eine Berechtigungsrichtlinie, die Dienstbetriebs- und Anzeigeberechtigungen für alle Gateway-Gruppen gewährt, und weisen diese Richtlinie als Berechtigungsgrenze dem Benutzer Tom zu.

{
  "statement": [
    // Anzeigeberechtigungen für alle Gateway-Gruppen
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaygroup/<.*>"
      ],
      "actions": [
        "<.*>Get<.*>"
      ]
    },
    // Dienstbetriebsberechtigungen für alle Gateway-Gruppen
    {
      "effect": "allow",
      "resources": [
        "*"
      ],
      "actions": [
        "arn:api7:gateway:gatewaygroup/<.*>/publishedservice/<.*>"
      ]
    }
  ]
}

In diesem Fall sind Toms maximale Berechtigungen auf diese Berechtigungsrichtlinie beschränkt. Obwohl eine Berechtigungsgrenze gesetzt ist, bedeutet dies nicht, dass Tom bereits diese Berechtigungen hat. Als Nächstes weisen wir Tom eine Rolle mit der folgenden Berechtigungsrichtlinie zu:

{
  "statement": [
    // Anzeigeberechtigungen für alle Gateway-Gruppen
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaygroup/<.*>"
      ],
      "actions": [
        "<.*>Get<.*>"
      ]
    },
    // Dienstbetriebsberechtigungen für alle Gateway-Gruppen
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaygroup/<.*>/publishedservice/<.*>"
      ],
      "actions": [
        "<.*>"
      ]
    },
    // Betriebsberechtigungen für benutzerdefinierte Plugins
    {
      "effect": "allow",
      "resources": [
        "arn:api7:gateway:gatewaysetting/*"
      ],
      "actions": [
        "gateway:<.*>CustomPlugin<.*>"
      ]
    }
  ]
}

Obwohl Tom Dienstbetriebs-, Anzeige- und Betriebsberechtigungen für benutzerdefinierte Plugins in allen Gateway-Gruppen gewährt werden, wird er feststellen, dass er keine Berechtigungen zum Bearbeiten benutzerdefinierter Plugins hat. Dies liegt daran, dass wir eine Berechtigungsgrenze für Tom gesetzt haben. Solange die Berechtigungsgrenze nicht angepasst wird, um Berechtigungen für benutzerdefinierte Plugins einzubeziehen, sind alle zusätzlichen Berechtigungen außerhalb der Grenze ungültig.

Wie verwendet man die Berechtigungsgrenzen-Funktion?

Berechtigungsrichtlinien erstellen

Berechtigungsgrenzen können direkt bestehende Berechtigungsrichtlinien im System wiederverwenden. Bevor Sie einem Benutzer eine Berechtigungsgrenze zuweisen, müssen Sie eine Berechtigungsrichtlinie erstellen. Klicken Sie im Organisationsmenü des Systems auf "Berechtigungsrichtlinien", um zur Listenseite zu gelangen.

Berechtigungsrichtlinien

Klicken Sie dann in der oberen rechten Ecke der Liste auf "Berechtigungsrichtlinie hinzufügen", um zum Erstellungsformular zu gelangen.

Richtlinie hinzufügen

Füllen Sie im Formular die grundlegenden Informationen der Berechtigungsrichtlinie aus und konfigurieren Sie die entsprechenden Richtlinienanweisungen, um die Berechtigungsrichtlinie zu erstellen. Theoretisch kann dieselbe Berechtigungsrichtlinie mit mehreren Rollen verknüpft und als Berechtigungsgrenze für mehrere Benutzer verwendet werden, aber diese Praxis wird nicht empfohlen.

Richtlinie konfigurieren

Weitere konzeptionelle Einführungen zu Berechtigungsrichtlinien finden Sie im Artikel Was gibt es Neues in API7 Enterprise 3.4.14: IAM für granularere Zugriffskontrolle. Für gängige Richtlinienkonfigurationsbeispiele siehe das Dokument Berechtigungsrichtlinienbeispiele. Für die Werte, die Ressourcen und Aktionen annehmen können, und die entsprechenden APIs siehe das Dokument Berechtigungsrichtlinienaktionen und -ressourcen.

Berechtigungsgrenzen zuweisen

Nachdem Sie Berechtigungsrichtlinien erstellt haben, können Sie Berechtigungsgrenzen zuweisen. Klicken Sie im Organisationsmenü auf "Benutzer", um zur Benutzerlistenseite zu gelangen.

Benutzer

Wir können neuen Benutzern direkt Berechtigungsgrenzen zuweisen, wenn wir sie einladen. Das Einladungsformular enthält ein neues Feld für Berechtigungsgrenzen, und der Benutzer erhält diese Berechtigungsgrenze standardmäßig beim Einloggen ins System.

Grenze setzen

Für bestehende Benutzer können Sie auf der Benutzerdetailseite auf das Bearbeitungssymbol der Berechtigungsgrenze klicken, um ihre Berechtigungsgrenze zu konfigurieren.

Berechtigungsgrenze bearbeiten

Wenn Sie Berechtigungen für einen Benutzer konfigurieren, können Sie die Bedingung permission_boundaries zu bestimmten Betriebsberechtigungen hinzufügen. Zum Beispiel können Sie in den Aktionen iam:InviteUser (Benutzer einladen) oder iam:UpdateUserBoundary (Benutzerberechtigungsgrenze aktualisieren) die Berechtigungskontrolle weiter verfeinern, indem Sie die Bedingung permission_boundaries hinzufügen.

Unter dieser Bedingung können Sie die ID der Berechtigungsrichtlinie angeben, die für den Benutzer gesetzt werden muss. Somit wird das System bei Operationen wie der Einladung eines neuen Benutzers oder der Aktualisierung der Berechtigungsgrenze eines anderen Benutzers die Zuweisung der entsprechenden Berechtigungsgrenze basierend auf diesen voreingestellten Regeln erzwingen.

Hier ist ein Beispiel, das zeigt, wie dies erreicht werden kann:

{
  "statement": [
    {
      "effect": "allow",
      "resources": ["arn:api7:iam:user/<.*>"],
      "actions": [
        "iam:InviteUser",
        "iam:UpdateUserBoundary"
      ],
      "conditions": {
        "permission_boundaries": {
          "type": "AllOfStrings",
          "options": [
            "d3698967-1d28-4e37-b5e7-ef00a93304cc",
            "f863a233-f732-4af0-bb21-3fbe4013be69"
          ]
        }
      }
    }
  ]
}

Berechtigungsgrenzen-Mapping

Zusätzlich zur direkten Konfiguration spezifischer Berechtigungsgrenzen im System unterstützt API7 Enterprise auch Berechtigungsgrenzen-Mapping, das automatisch entsprechende Berechtigungsgrenzen basierend auf der Identität und den Berechtigungen des Benutzers im IdP (Identity Provider) zuweist. Klicken Sie auf der Organisationseinstellungsseite auf "Anmeldeoption hinzufügen". Unabhängig davon, welcher Anbieter ausgewählt wird, wird am unteren Rand des Konfigurationsformulars ein Schalter für "Berechtigungsgrenzen-Mapping" hinzugefügt. Sobald dieser aktiviert ist, können Sie Berechtigungsgrenzen-Mapping konfigurieren.

Berechtigungsgrenzen-Mapping

  • Berechtigungsrichtlinie: Dies ist die in API7 Enterprise definierte Berechtigungsrichtlinienressource, die verwendet wird, um den Benutzerzugriff und den Betriebsumfang zu kontrollieren. Im Berechtigungsgrenzen-Mapping können wir Konfigurationen aus dem externen IdP diesen Berechtigungsgrenzen zuordnen, um Benutzern beim Einloggen entsprechende Berechtigungsgrenzen zuzuweisen.

  • Zugeordnetes Berechtigungsgrenzen-Attribut: Der Bezeichner für die Benutzerberechtigungsgrenzeninformationen, die vom IdP zurückgegeben werden, und wird verwendet, um die Benutzerberechtigungsgrenzendaten in der Antwort des IdP zu lokalisieren. Zum Beispiel können Sie ein Attribut wie "role" oder "groups" angeben, wodurch das System den Berechtigungsgrenzwert aus der Antwort des IdP basierend auf diesem Attributnamen extrahieren kann.

  • Operation: Die Methode, die verwendet wird, um den Berechtigungsgrenzwert aus dem Berechtigungsgrenzenattribut des IdP abzugleichen. Es werden verschiedene Methoden unterstützt, wie z.B. exakte Übereinstimmung, unscharfe Übereinstimmung, Array-Übereinstimmung usw. Wenn der IdP ein String-Array von Berechtigungsgrenzwerten zurückgibt, können wir "Exakte Übereinstimmung im Array" wählen, um eine Übereinstimmung zu finden.

  • Zugeordneter Berechtigungsgrenzwert: Der spezifische Wert, der die Berechtigungsgrenze des Benutzers im IdP darstellt.

Zusammenfassung

Insgesamt sind Berechtigungsgrenzen entscheidende Werkzeuge, um die Systemsicherheit zu gewährleisten und Berechtigungsmissbrauch zu verhindern. Durch die klare Definition des Umfangs der Benutzerberechtigungen können wir wichtige Systemressourcen vor unbefugtem Zugriff schützen und sicherstellen, dass jeder Benutzer nur innerhalb seines autorisierten Bereichs operieren kann. In komplexen Systemumgebungen wird die effektive Nutzung von Berechtigungsgrenzen einen robusten Schutz für die Datensicherheit eines Unternehmens bieten.

Tags: