OCI Serverless Fn für die Verbindung mit einer REST-basierten Identity Aware-Anwendung einrichten
Wie verwendet das generische REST-Orchestrierte System OCI Functions?
Oracle Access Governance nutzt OCI Functions für REST-API-Integrationen. Jedes generische REST-orchestrierte System, das Sie erstellen, ist mit einer OCI-Funktion verknüpft, die die Logik zum Verarbeiten von Anforderungen und Generieren von Antworten enthält. Er ruft REST-APIs des verwalteten Systems für Datenabstimmungs- und Provisioning-Vorgänge auf, wenn diese von Oracle Access Governance ausgelöst werden.
Ausführliche Informationen zur Verwendung von OCI Functions finden Sie unter Oracle Cloud Infrastructure Functions.
Mandanten zum Aktivieren von OCI Functions konfigurieren
Bevor Sie Funktionen mit OCI Functions erstellen und bereitstellen können, müssen Sie Oracle Cloud Infrastructure-Ressourcen erstellen, um dies zu unterstützen. Zu den Ressourcen, die Sie erstellen müssen, gehören ein Benutzeraccount, eine Gruppe, zu der der Benutzeraccount gehört, ein Compartment, ein virtuelles Cloud-Netzwerk (VCN), Vaults und Secrets sowie Policys, die der Gruppe (und den zugehörigen Benutzeraccounts) Zugriff auf funktionsbezogene Ressourcen erteilen. Wenn bereits geeignete Ressourcen vorhanden sind, müssen keine neuen Ressourcen erstellt werden.
Compartment erstellen
- Melden Sie sich bei der Oracle Cloud Infrastructure-Konsole als Mandantenadministrator an.
- Öffnen Sie das Navigationsmenü, und wählen Sie Identität und Sicherheit → Identität → Compartments aus.
- Wählen Sie Compartment erstellen aus, und fügen Sie ein Compartment hinzu. Beispiel: ocifn_compartment: Weitere Informationen zum Erstellen eines Compartments finden Sie unter So erstellen Sie ein Compartment
Sie erstellen ein Compartment als Eigentümer:
- Netzwerkressourcen
- Funktionsbezogene Ressourcen
VCN und Subnetze erstellen
- Melden Sie sich bei der Oracle Cloud Infrastructure-Konsole als Mandantenadministrator an.
- Öffnen sie das navigationsmenü, und wählen sie Networking → Virtuelle cloudnetze.
- Wählen Sie VCN-Assistenten starten aus, um ein neues VCN zu erstellen.
- Wählen Sie im Dialogfeld die Option VCN mit Internetverbindung erstellen aus, um auf VCN-Assistenten starten zu klicken.
- Geben Sie im Assistenten die folgenden Details ein:
- VCN-Name: Geben Sie den VCN-Namen ein. Beispiel: ocifn_vcn.
- Compartment: Geben Sie das Compartment ein, in dem die VCN-Ressourcen erstellt werden. Beispiel: ocifn_compartment.
- Klicken Sie auf Weiter und dann auf Erstellen, um das VCN und die zugehörigen Netzwerkressourcen zu erstellen.
Einzelheiten zu allen Optionen beim Erstellen des VCN finden Sie unter VCN und Subnetze zur Verwendung mit OCI Functions erstellen.
OCI Vault und Secret erstellen
Wenn Sie keinen geeigneten Vault zum Speichern von Clientzugangsdaten haben:
- Melden Sie sich als Mandantenadministrator bei der Oracle Cloud Infrastructure-Konsole an.
- Öffnen Sie das Navigationsmenü, und wählen Sie Identität und Sicherheit → Schlüsselverwaltung und Secret-Verwaltung aus
- Klicken Sie auf Vault erstellen.
- Wählen Sie das Compartment aus, in dem der Vault erstellt werden soll, und geben Sie dem Vault einen Namen. Klicken Sie auf Vault erstellen.
- Öffnen Sie den erstellten Vault, und klicken Sie auf Schlüssel erstellen. Erstellen Sie den Schlüssel in demselben Compartment, in dem Sie den Vault erstellt haben. Geben Sie dem Schlüssel einen Namen, und klicken Sie auf Schlüssel erstellen.
- Wählen Sie aus dem Menü Ressourcen die OptionSecrets. Klicken Sie auf Secret erstellen.
- Fügen Sie auf der Seite Secret erstellen Details zu Compartment, Name und Beschreibung hinzu. Wählen Sie den erstellten Schlüssel aus der Dropdown-Liste Verschlüsselungsschlüssel aus. Wählen Sie die Option Manuelle Secret-Generierung aus, und geben Sie Ihren Clientcode und Ihr Client Secret in einem der folgenden Formate in das Feld Secret-Inhalt ein.
-
OAuth-basierte Autorisierung
Beispielcode zum Erstellen des Autorisierungstokens für die OAuth-basierte Autorisierung finden Sie unter OAuth Authorization - Sample Token Creation Code.
{ "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa", "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" } -
Basisautorisierung
.
{ "username": "69b48365-14e2-430a-bd75-171f89c158fa", "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" }
-
OAuth-basierte Autorisierung
- Wählen Sie Secret erstellen aus, um die Änderungen zu speichern.
Das von Ihnen erstellte Secret kann verwendet werden, um Client Secrets in Ihrer Anforderungsfunktion zu übergeben. Wählen Sie das von Ihnen erstellte Secret aus, und kopieren Sie den Wert der Secret-OCID, die ungefähr wie ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0 aussieht.
<SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml, und fügen Sie die Details des Secrets und der Region hinzu. Beispiel:secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"
Weitere Einzelheiten zu OCI Vault-Secrets finden Sie unter Vault-Secrets verwalten.
Dynamische Gruppe erstellen oder aktualisieren
Um OCI Vault and Secret Services verwenden zu können, muss Ihre Funktion Teil einer dynamischen Gruppe sein. Einzelheiten zum Erstellen der dynamischen Gruppe finden Sie unter Dynamische Gruppen verwalten.
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }
Policy für OCI Vault und Secret erstellen
Erstellen Sie eine neue Policy, mit der die im obigen Schritt erstellte dynamische Gruppe Secret-Family in Ihrem Mandanten lesen kann. Weitere Informationen zum Erstellen von OCI-Policys finden Sie unter Policy-Syntax
- Melden Sie sich bei der Oracle Cloud Infrastructure-Konsole als Mandantenadministrator an.
- Öffnen Sie das Navigationsmenü, und wählen Sie Identität und Sicherheit → Identität → Policys aus.
- Wählen Sie Policy erstellen aus, geben Sie einen Namen für die Policy an. Beispiel: ocifn_policy, und wählen Sie das Root Compartment des Mandanten aus.
- Fügen Sie eine Policy-Anweisung ähnlich der folgenden hinzu:
Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy
Policy für Gruppe und Service erstellen
- Melden Sie sich als Mandantenadministrator bei der Oracle Cloud Infrastructure-Konsole an.
- Öffnen Sie das Navigationsmenü, und wählen Sie Identität und Sicherheit → Identität → Policys aus.
- Wählen Sie Policy erstellen aus, geben Sie einen Namen für die Policy an. Beispiel: ocifn_policy, und wählen Sie das Root Compartment des Mandanten aus.
- Wählen Sie in Policy Builder in der Liste Policy-Anwendungsfälle die Option Funktionen aus, und richten Sie Ihre Policy auf der Vorlage Erstellen, Bereitstellen und Verwalten von Funktionen und Anwendungen durch Benutzer zulassen aus.
- Wählen Sie die zuvor erstellte Gruppe ocifn_group und ocifn_compartment für den Speicherort aus. Dadurch erhalten Sie eine Policy-Anweisung ähnlich der folgenden:
Allow group 'Default'/'ocifn_grp' to use cloud-shell in tenancy Allow group 'Default'/'ocifn_grp' to manage repos in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to read objectstorage-namespaces in tenancy Allow group 'Default'/'ocifn_grp' to manage logging-family in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to read metrics in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to manage functions-family in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to use virtual-network-family in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to use apm-domains in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to read vaults in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to use keys in compartment ocifn_compartment Allow service faas to use apm-domains in compartment ocifn_compartment Allow service faas to read repos in tenancy where request.operation='ListContainerImageSignatures' Allow service faas to {KEY_READ} in compartment ocifn_compartment where request.operation='GetKeyVersion' Allow service faas to {KEY_VERIFY} in compartment ocifn_compartment where request.operation='Verify'
Weitere Informationen zum Erstellen von Policys für OCI Functions finden Sie unter Policys für die Kontrolle des Zugriffs auf Netzwerk- und funktionsbezogene Ressourcen erstellen
Anwendung zur Gruppierung von OCI Functions erstellen
In OCI Functions ist eine Anwendung eine logische Gruppierung von Funktionen. Die Eigenschaften, die Sie für eine Anwendung angeben, bestimmen die Ressourcenzuweisung und -konfiguration für alle Funktionen in dieser Anwendung. Sie müssen eine Funktion innerhalb einer Anwendung erstellen. Daher muss mindestens eine Anwendung vorhanden sein, bevor Sie eine Funktion in OCI Functions erstellen können.
- Melden Sie sich bei der Oracle Cloud Infrastructure-Konsole als Funktionsentwickler an.
- Öffnen Sie das Navigationsmenü, und wählen Sie Entwicklerservices → Funktionen → Anwendungen.
- Wählen Sie das Compartment aus, das Sie für generische REST-orchestrierte Systemfunktionen verwenden.
- Klicken Sie auf Anwendung erstellen.
- Fügen Sie einen Namen für die Anwendung hinzu. Beispiel: agcs-generic-rest-connector. Sie stellen Ihre Funktionen in dieser Anwendung bereit und geben diese Anwendung beim Aufrufen der Funktion an.
- Wählen Sie das VCN und das Subnetz aus, in dem die Funktion ausgeführt werden soll.
- Klicken Sie auf Erstellen.
Ausführliche Informationen zum Erstellen von Anwendungen mit OCI Functions finden Sie unter Anwendungen erstellen.
Umgebung für die Entwicklung von OCI Functions einrichten
Um Ihre OCI Functions zu erstellen und bereitzustellen, müssen Sie eine Entwicklungsumgebung installieren und einrichten.
- Docker installieren und starten
- API-Signaturschlüssel und OCI-Profil einrichten
- Fn-Projekt-Befehlszeilenschnittstelle (CLI) installieren
- Fn-Projekt-CLI-Kontextprovider einrichten
- Fn-Projekt-CLI-Kontextkonfiguration abschließen
- Authentifizierungstoken generieren
- Bei Registrierung anmelden
Sobald Ihre Entwicklungsumgebung eingerichtet ist, können Sie mit der Entwicklung und Bereitstellung von Funktionen für das generische REST-Orchestrierte System beginnen.
Funktionen für OCI entwickeln und bereitstellen
Um das generische REST-Orchestrierte System bereitzustellen, müssen Sie eine OCI-Funktion entwickeln und bereitstellen, mit der Sie eine Verbindung zu dem identitätsbezogenen System herstellen können, das Sie mit REST in Oracle Access Governance integrieren möchten.
So entwickeln Sie OCI Functions zur Verwendung mit dem generischen REST-Orchestrierten System und stellen es bereit:
Beispielimplementierung einrichten
Zur Unterstützung bei der Entwicklung von OCI Functions wird eine Beispielimplementierung mit dem generischen REST-Orchestrierten System bereitgestellt. Um dieses Beispiel herunterzuladen, befolgen Sie die Anweisungen in der Prozedur System auswählen.
In den folgenden Details wird das Verzeichnis, in das Sie die Beispielimplementierung entpackt haben, als
<SampleBase> bezeichnet. Verwenden Sie diese Option, um die genannten Dateien zu suchen. Beispiel:Wenn Sie die Beispielimplementierung in ein Verzeichnis dekomprimieren, z.B. /myagfunctions, finden Sie die Datei <SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml unter /myagfunctions/grc-schema-template/src/main/resources/schema/config.yaml.
- idm-agcs-serverless-getting-started-sample: Dies ist ein einfaches und leicht verständliches Beispiel mit minimalem Code, das die Funktionsweise von Funktionen demonstriert. Dieser Anwendungsfall eignet sich ideal für Kunden, die eine einzelne Anwendung mit dem generischen REST-Connector integrieren müssen und eine minimale Konfiguration erfordern. Das anfängliche Setup erfolgt mit einer Oracle Identity Cloud Service-(IDCS-)Anwendung. Ausführliche Schritte zum Konfigurieren und Bereitstellen dieser Funktion finden Sie in der Datei `README.md` in diesem Verzeichnis.
- idm-agcs-serverless-IDCS-application-sample: Dieses Beispiel konzentriert sich auf das IDCS-Anwendungsbeispiel mit minimaler Konfiguration. Es enthält das Framework, um zukünftig weitere Anwendungen innerhalb dieser Funktion hinzuzufügen. Konfigurations- und Bereitstellungsschritte werden in der Datei `README.md` in diesem Verzeichnis ausführlich beschrieben.
- idm-agcs-serverless-azuread-application-sample: Dieses Beispiel ist speziell für Kunden gedacht, die ein AzureAD-Anwendungsbeispiel mit minimaler Konfiguration benötigen. Es enthält das Framework, um in dieser Funktion zukünftig weitere Anwendungen hinzuzufügen. Detaillierte Schritte zum Konfigurieren und Bereitstellen dieser Funktion sind in der Datei `README.md` in diesem Verzeichnis verfügbar.
- idm-agcs-serverless-multi-application-sample: Dieses Beispiel ist für Kunden gedacht, die IDCS- und AzureAD-Anwendungsbeispiele mit minimaler Konfiguration benötigen. Es enthält das Framework, um zukünftig weitere Anwendungen innerhalb dieser Funktion hinzuzufügen. Die Datei README.md in diesem Verzeichnis enthält alle erforderlichen Schritte zum Konfigurieren und Bereitstellen dieser Funktion.
Funktionen für Ihre Anwendung erstellen
Erstellen Sie die Funktionen für Ihr eigenes REST-basiertes identitätsbezogenes System, indem Sie auf die Referenzvorlagen verweisen und die Funktionen wie unten definiert mit anwendungsspezifischen Werten konfigurieren.
| Artikel | Beschreibung |
|---|---|
| Eingabe | Name des orchestrierten Systems |
| Konfiguration |
Liste der konfigurierten benutzerdefinierten REST-Identitätssysteme: Beispielimplementierung:
Liste der orchestrierten Systeme, die mit einem benutzerdefinierten REST-Identitätssystem verknüpft sind: Beispielimplementierung:
|
| Ausgabe |
JSON-Schema-Vorlagendokument mit einem oder mehreren Entityschemas, einschließlich eines der folgenden Entitytypen:
Ein Beispiel aus der Beispielimplementierung finden Sie unter Schemaausgabe. |
| Artikel | Beschreibung |
|---|---|
| Eingabe |
|
| Konfiguration |
Liste der konfigurierten benutzerdefinierten REST-Identitätssysteme: Beispielimplementierung:
Liste der orchestrierten Systeme, die mit einem benutzerdefinierten REST-Identitätssystem verknüpft sind: Beispielimplementierung:
|
| Ausgabe |
JSON-Vorlagendokument für definierte Entitys und Vorgänge:
Entitys
Vorgänge
Ein Beispiel aus der Beispielimplementierung finden Sie unter Anforderungsausgabe. |
| Artikel | Beschreibung |
|---|---|
| Eingabe |
|
| Konfiguration |
Liste der konfigurierten benutzerdefinierten REST-Identitätssysteme: Beispielimplementierung:
Liste der orchestrierten Systeme, die mit einem benutzerdefinierten REST-Identitätssystem verknüpft sind: Beispielimplementierung:
|
| Ausgabe |
JSON Response-Vorlagendokument für definierte Entitys und Vorgänge:
Entitys
Vorgänge
Ein Beispiel aus der Beispielimplementierung finden Sie unter Antwortausgabe. |
| Artikel | Beschreibung |
|---|---|
| Eingabe | Name des orchestrierten Systems |
| Konfiguration |
Liste der konfigurierten benutzerdefinierten REST-Identitätssysteme: Beispielimplementierung:
Liste der orchestrierten Systeme, die mit einer benutzerdefinierten REST-Identitätsanwendung verknüpft sind: Beispielimplementierung:
|
| Ausgabe |
Vorlagendokument für JSON-Testanforderung: Beispielimplementierung:
|
Test-Infra-Modulhandbuch
Anforderungs- und Antwortvorlagen sind komplex, und während der Entwicklung können Fehler auftreten. Es ist wichtig, alle konfigurierten Anforderungs- und Antwortvorlagen während der Erstellungszeit selbst zu identifizieren und auf Richtigkeit zu validieren.
Um diese Herausforderung zu bewältigen, wurde das Modul grc-test-infra eingeführt. Dieses Modul enthält Tests, die jeder konfigurierten Anforderungs- und Antwortvorlage entsprechen. Mit diesen Tests werden die Anforderungen an die REST-API der Zielanwendung und die empfangenen Antworten geprüft. Um dies zu erreichen, verwenden die Tests ein Utility, wie einen generischen Anforderungs- und Antwortprozessor, der in der Lage ist, jeden im Modul entwickelten REST-API-Aufruf zu verarbeiten. Im Wesentlichen interagiert es intern mit den Endpunkten der Zielanwendung und validiert die Antworten basierend auf den konfigurierten Antwortvorlagen.
- Entwickeln Sie Tests gemäß dem folgenden Beispiel:Grc-Test-Infra-Probentest
package com.oracle.idm.agcs.grc.fn.test.infra; public class RequestResponseTemplateValidationTest { public void validateSearchUserAsIdentityRequestResponseTemplate() throws IOException, URISyntaxException, InterruptedException { // Get the configured Request template by passing the connectedSystem Name, entity name, and operation RequestTemplateOutput requestTemplate = getRequestTemplateOutput(connectedSystemName, UserAsIdentityEntity, Operation.SEARCH); // Get the configured Response template by passing the connectedSystem Name, entity name, and operation ResponseTemplateOutput responseTemplate = getResponseTemplateOutput(connectedSystemName, UserAsIdentityEntity, Operation.SEARCH); // Pass the required attributes in the request template by putting them in the attribute map HashMap<String, Object> attributesMap = new HashMap<>(); // Call the generic utility method to validate request and response template Map<String, Object> lastRecord = processAndValidateRequestAndResponseTemplate(requestTemplate, responseTemplate, attributesMap); // Retrieve the necessary data from the response for further processing userAsIdentityUid = ((ArrayList<String>) lastRecord.get("uid")).get(0); } }- Die erste Zeile im Test besteht darin, die konfigurierte Anforderungsvorlage abzurufen, indem Sie den connectedSystem-Namen, den Entitynamen und den Vorgang übergeben.
- Die zweite Zeile ruft die konfigurierte Antwortvorlage mit ähnlichen Parametern ab.
- Benutzer müssen die erforderlichen Attribute in der Anforderungsvorlage übergeben, indem sie sie in die Attributzuordnung aufnehmen.
- Anschließend müssen Benutzer nur die generische Utilitymethode processAndValidateRequestAndResponseTemplate aufrufen, mit der sowohl die Anforderungs- als auch die Antwortvorlagen intern auf Richtigkeit validiert werden, indem die API aufgerufen und ihre Antwort der konfigurierten Antwortvorlage zugeordnet wird.
- Der Test ist erfolgreich, wenn die konfigurierten Anforderungs- und Antwortvorlagen korrekt konfiguriert sind. Andernfalls verläuft der Test nicht erfolgreich, sodass Benutzer den Fehlergrund anzeigen und die Vorlagen entsprechend korrigieren können.
Die Beispieltestdatei finden Sie in der Beispielimplementierung am folgenden Speicherort:
<SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java - Fügen Sie die folgenden Voraussetzungen hinzu, bevor Sie den Test ausführen:
- Aktualisieren Sie die Datei
<SampleBase>/grc-test-infra/src/test/resources/configmit den folgenden Werten für Ihre Umgebung:[DEFAULT] user=<<USER>> fingerprint=<<FINGERPRINT>> key_file=<<PEM_FILE_RELATIVE_PATH>> tenancy=<<TENANCY>> region=<<REGION>> - Aktualisieren Sie die Datei
<SampleBase>/grc-test-infra/src/test/resources/config.propertiesmit dem folgenden Wert für Ihre Umgebung:connectedSystemName=<connectedSystemName> - Fügen Sie den privaten SSH-Schlüssel (.pem-Datei) für den API-Signaturschlüssel an folgendem Speicherort hinzu:
<SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
- Aktualisieren Sie die Datei
- Führen Sie den entwickelten Test aus, und erstellen Sie die Funktion:
- Navigieren Sie zum Verzeichnis
functionsder Beispielimplementierung. - Funktionen kompilieren und verpacken
mvn clean package-DisDevMode=true
- Navigieren Sie zum Verzeichnis
Funktion erstellen und bereitstellen
- Bauen Sie Ihre Funktion auf.
cd <SampleBase> mvn package - Stellen Sie Ihre Funktion auf OCI bereit. Die Schritte sollten für jede Funktion ausgeführt werden
- grc-Schema-Vorlage
- grc-Anforderung-Vorlage
- grc-Antwortvorlage
- GRC-Testvorlage
cd <SampleBase>/grc-schema-template fn -v deploy --app <ApplicationName>