Rollenbasierte Zugriffskontrollen manuell konfigurieren

Sie können rollenbasierte Zugriffskontrolle (Role-Based Access Control, RBAC) mit benutzerdefinierten JSON Web Token-(JWT-)Claims in Oracle Cloud Infrastructure konfigurieren.

So erstellen Sie eine domainintegrierte Anwendung, die RBAC mit benutzerdefinierten JWT-Ansprüchen ermöglicht: Die einzelnen Schritte werden in den folgenden Abschnitten ausführlich erläutert.
Hinweis

In diesem Dokument wird die Default-Domain von Oracle Cloud Infrastructure zur Erläuterung verwendet.

Benutzerdefinierte Attribute für Benutzer erstellen

Eine Benutzerentity speichert ihre Eigenschaften und andere Informationen als Attribute. Beispiel: Vorname, Nachname, Benutzeranmeldung, Kennwort usw. Sie können benutzerdefinierte Attribute in Oracle Cloud Infrastructure erstellen.

Im Folgenden finden Sie ein Beispiel für die Definition eines benutzerdefinierten Benutzerattributs, in dem die Rollen gespeichert werden, die jedem Benutzer in der Domain zugewiesen sind.
  1. Klicken Sie auf das Hamburger-Menü, und gehen Sie zu Identität und Sicherheit, und wählen Sie Domains aus. Klicken Sie unter "Name" auf die Standarddomain.
  2. Gehen Sie zur Registerkarte Schemaverwaltung, und wählen Sie Benutzerattribute aus.

  3. Klicken Sie auf Attribut hinzufügen, und geben Sie Folgendes an:
    • Anzeigename: ORDS RBAC
    • Name:rbac_ords
    • Beschreibung:Rollenbasierte Zugriffskontrolle für ORDS
    • Datentyp: Zeichenfolgenarray

    Sie können den Standardstatus der übrigen Felder beibehalten.



    Klicken Sie auf Hinzufügen. Sie haben das benutzerdefinierte Attribut hinzugefügt.

  4. Suchen Sie nach dem neu hinzugefügten Attribut, indem Sie Benutzerdefiniert in das Suchfeld eingeben. Sie zeigen das Attribut ORDS RBAC in der Liste an.

    Klicken Sie auf Attribut bearbeiten.

  5. Kopieren Sie den Wert von FQN (Vollqualifizierter Name), und notieren Sie ihn.

    In diesem Beispiel ist FQN urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords.

Benutzerdefinierte Rolle zuweisen

Nachdem Sie ein benutzerdefiniertes Benutzerattribut erstellt haben, können Sie in diesem Attributfeld benutzerdefinierte Rollen zuweisen.
  1. Navigieren Sie zu: IdentitätDomainsStandard. Klicken Sie auf die Registerkarte Benutzerverwaltung, und wählen Sie Ihren Benutzernamen aus der Liste der angezeigten Benutzer aus.



    Klicken Sie auf Benutzer bearbeiten. Scrollen Sie nach unten zum Feld Weitere Informationen, und geben Sie unter ORDS RBAC SQL Developer, SODA Developer ein.

    Weitere Informationen zu ORDS-Rollen finden Sie in diesem Kapitel unter Oracle REST Data Services-Benutzerrollen.



    Nachdem Sie die Rollen hinzugefügt haben, klicken Sie auf Änderungen speichern.

Integrierte Domainanwendung erstellen

Wir werden eine integrierte Anwendung innerhalb der Domain entwickeln, die bei der Anmeldung ein JWT-Token ausgibt.

  1. Navigieren Sie zu: IdentitätDomainsStandard. Klicken Sie auf die Registerkarte Integrierte Anwendungen, und wählen Sie Anwendung hinzufügen aus.
  2. Klicken Sie auf Vertrauliche Anwendung, und wählen Sie Workflow starten aus.
  3. Geben Sie im Dialogfeld Vertrauliche Anwendung hinzufügen die folgenden Felder an:
    • Name: Geben Sie den Namen der vertraulichen Anwendung an. Beispiel: Spreadsheet-Addin RBAC.
    • Beschreibung: Geben Sie die Beschreibung an. Beispiel: Integrierte Anwendung für die rollenbasierte Zugriffskontrolle für das Tabellen-Add-in.



    Klicken Sie auf Weiterleiten.

    Die neu hinzugefügte Anwendungsseite Spreadsheet-Addin RBAC wird angezeigt.

  4. Klicken Sie auf der Seite Spreadsheet-Addin RBAC auf der Registerkarte OAuth-Konfiguration auf OAuth-Konfiguration bearbeiten.



  5. Wählen Sie unter "Ressourcenserverkonfiguration" die Option Diese Anwendung jetzt als Ressourcenserver konfigurieren aus.
  6. Wählen Sie unter Anwendungs-APIs konfigurieren, die OAuth-geschützt sein müssen die Option 3600 als Ablauf des Zugriffstokens (Sekunden) aus.
  7. Geben Sie im Feld Primäre Zielgruppe ssaddin/ ein.
  8. Klicken Sie auf Geltungsbereiche hinzufügen, und fügen Sie rbac Geltungsbereich hinzu.



  9. Geben Sie unter Clientkonfiguration die folgenden Felder an:
    • Wählen Sie Diese Anwendung jetzt als Client konfigurieren aus.
    • Wählen Sie unter Zulässige Berechtigungstypen die Option Implizit aus.
    • Geben Sie den folgenden Wert in das Feld Umleitungs-URL ein: https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
    • Geben Sie den folgenden Wert in das Feld URL nach der Abmeldung ein: https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html



    Klicken Sie auf Weiterleiten.
    Hinweis

    Stellen Sie sicher, dass Sie die Anwendung aktivieren.

Benutzerdefinierten Anspruch definieren

Um Benutzerrollen in das JWT einzuschließen, müssen wir das im ersten Abschnitt eingerichtete benutzerdefinierte Attribut mit einem benutzerdefinierten Anspruch dem JWT zuordnen.

Um dies zu erreichen, müssen wir eine zusätzliche temporäre integrierte Anwendung erstellen und den benutzerdefinierten Anspruch damit verknüpfen.

Integrierte Identitätsdomainanwendung erstellen

Sie erstellen eine zusätzliche temporäre integrierte Anwendung:
  1. Navigieren Sie zu: IdentitätDomainsStandard.
  2. Klicken Sie auf die Registerkarte Integrierte Anwendungen, und wählen Sie Anwendung hinzufügen aus.
  3. Klicken Sie auf Vertrauliche Anwendung, und wählen Sie Workflow starten aus.
    • Geben Sie den Namen der Anwendung ein: Integrierte Identitätsdomainanwendung
    • Beschreibung eingeben: Dies ist eine Domain integrierte Anwendung.

    Klicken Sie auf Weiterleiten.

  4. Wählen Sie auf der Seite Integrierte Anwendung der Identitätsdomain die Registerkarte OAuth-Konfiguration aus.
  5. Klicken Sie in der Ressourcenserverkonfiguration auf OAuth-Konfiguration bearbeiten. Geben Sie im Dialogfeld OAuth-Konfiguration bearbeiten die folgenden Felder an:

Neuen Anspruch für JWT erstellen

Um ein neues Zugriffstoken für die Identitätsdomainadministratoranwendung abzurufen, sind CLIENT ID, CLIENT SECRET und DOMAIN URL erforderlich.

Wir haben die CLIENT ID und CLIENT SECRET aus der im vorherigen Schritt erstellten integrierten Domainanwendung.

Die DOMAIN URL finden Sie auf der Domainseite unter Domaininformationen.



Führen Sie den folgenden Befehl aus, und ersetzen Sie die Werte (CLIENT ID), (CLIENT SECRET) und (DOMAIN URL) durch Ihre Werte.

export ACCESS_TOKEN=$(curl -s -i -u"(CLIENT ID):(CLIENT SECRET)" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST (DOMAIN URL)/oauth2/v1/token -d
      "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" | tail -n +1 | grep -o
      '"access_token":"[^"]*' | cut -d'"' -f4)
In diesem Beispiel verwenden Sie die folgenden Werte:
  • Client ID: 123a1234e1234567aa12345a1abcdefg1
  • Client Secret: IDCSCS-12A1A123-A123-1234-1234-E1A05AABC123
  • Domain URL: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
Führen Sie den folgenden Code in der Bash-Shell aus, und ersetzen Sie die Platzhalterwerte entsprechend:
export ACCESS_TOKEN=$(curl -s -i -u"123a1234e1234567aa12345a1abcdefg1: idcscs-12a1a123-a123-1234-1234-e1a05aabc123" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443/oauth2/v1/token -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" |
          tail -n +1 | grep -o '"access_token":"[^"]*' | cut -d'"'
        -f4)
 
Um zu prüfen, ob Sie das Token erfolgreich abgerufen haben, führen Sie den folgenden Befehl aus, und prüfen Sie das angezeigte Token.
echo $ACCESS_TOKEN

Die Abbildung unten zeigt, wie die oben genannten Befehle in der Bash-Shell angezeigt werden.



Es zeigt eine Ausgabe an, die aus mehreren Zeilen (über 10) mit alphanumerischen Zeichen besteht.

Führen Sie den folgenden Befehl mit (ROLE CLAIM NAME) als ssaddin.role und (MODIFIED FQN) als urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords aus:
Hinweis

Verwenden Sie die FQN aus Schritt 1, und ersetzen Sie das letzte ":" durch ein ".".

Beispiel: FQN aus Schritt 1:

urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords

Die MODIFIED FQN sollte also:

urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords
curl -i -X POST (DOMAIN URL)/admin/v1/CustomClaims -H"Cache-Control: no-cache" -H"Accept:application/json" -H"Content-Type:application/json" -H"Authorization: Bearer $ACCESS_TOKEN" -d '{
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
    ],
    "name": "(ROLE CLAIM NAME)",
    "value": "$user.(MODIFIED FQN).*",     
    "expression": true,
    "mode": "always",
    "tokenType": "AT",
    "allScopes": false,
    "scopes": [
    "ssaddin/rbac"
  ]
}'
Hinweis

Ersetzen Sie Domain URL durch den tatsächlichen Wert im obigen Code.

Sie sehen Folgendes als Ausgabe:HTTP/1.1 201 Created.

RBAC-IAM-Anmeldung für autonomes KI-Datenbankschema aktivieren

Mit den folgenden Anweisungen kann ORDS JWT-Bearer-Token validieren und Zugriff auf geschützte Ressourcen erteilen.
  1. Wählen Sie im SQL Worksheet in der Registerkarte "Navigator" aus der Dropdown-Liste "Schema" die Option ORDS_METADATA.
  2. Wählen Sie Packages aus der Dropdown-Liste "Objekttyp" aus.
  3. Geben Sie ORDS_SECURITY in das Suchfeld ein. Die Suchfunktion ruft alle Einträge ab, die mit ORDS_SECURITY beginnen.
  4. Blenden Sie das Package ORDS_SECURITY ein.



  5. Klicken Sie mit der rechten Maustaste auf CREATE_JWT_PROFILE, und klicken Sie auf RUN. Dadurch wird ein Dialogfeld RUN CODE geöffnet.
    Geben Sie im Dialogfeld {\b Run Code…} die folgenden Feldwerte an:
    • P_ISSUER- https://identity.oraclecloud.com/. Dieses Feld muss einen Wert ungleich Null enthalten und in ein einzelnes Komma gefüllt sein.
    • P_AUDIENCE-ssaddin/. Dieses Feld muss einen Wert ungleich Null enthalten.
    • P_JWK_URL - Hängen Sie die DOMAIN-URL an /admin/v1/SigningCert/jwk an. Der Wert darf nicht Null sein und muss mit https:// beginnen und den öffentlichen Verifizierungsschlüssel angeben, der vom Autorisierungsserver im JSON Web Key-(JWK-)Format bereitgestellt wird.

      Sie können die Domain-URL auf der Registerkarte "Domaininformationen" im Menü Domains des Navigationsmenüs Identität und Sicherheit der OCI-Konsole anzeigen.

    • P_DESCRIPTION- Geben Sie die Beschreibung für dieses Profil an. Beispiel: "RBAC JWT Demo-Konflikt".
    • P_ALLOWED_AGE-"0"
    • P_ALLOWED_SKEW-"0"
    • P_ROLE_CLAIM_NAME- "ssaddin.role"

    Klicken Sie auf Code in Arbeitsblatt einfügen.



    Führen Sie die Prozedur aus.



    Im Ausgabebereich wird "PL/SQL-Prozedur erfolgreich abgeschlossen" angezeigt.

Verbindungsdatei erstellen

  1. Klicken Sie im Header des Bereichs "Verbindungen" auf Hinzufügen, um eine Verbindung hinzuzufügen. Das Dialogfeld "Neue Verbindung hinzufügen" wird geöffnet.

  2. Geben Sie im Dialogfeld "Neue Verbindung hinzufügen" die folgenden Felder an:
    • Verbindungsname: Geben Sie den Namen der Verbindung an.
    • Autonomous Database-URL: Geben Sie die URL der autonomen KI-Datenbank ein, mit der Sie eine Verbindung herstellen möchten. Kopieren Sie die gesamte URL aus der Web-UI der autonomen KI-Datenbank. Beispiel: Geben Sie den folgenden Link "https://<hostname>-<databasename>.adb.<region>.oraclecloudapps.com/" ein, oder kopieren Sie ihn, um eine Verbindung zur Datenbank herzustellen.
    • Schemaname: Geben Sie dasselbe Schema ein, das Sie für IAM-Anmeldung für Autonomous Database-Schema aktivieren verwenden.
    • Verbindungstyp auswählen: OCI IAM
    • Domain-URL: Geben Sie die Domain-URL auf der Registerkarte mit den Domaininformationen ein.
    • Wählen Sie den RBAC-IAM-Typ aus.
    • IAM-Geltungsbereich: ssaddin/rbac



Nachdem die Verbindung erstellt wurde, können Sie sie mit anderen Benutzern dieser Domain teilen.