Imposta OCI Serverless Fn per la connessione con l'applicazione Identity Aware basata su REST
In che modo il sistema orchestrato REST generico utilizza le funzioni OCI?
Oracle Access Governance utilizza le funzioni OCI per le integrazioni delle API REST. Ogni sistema orchestrato REST generico creato è associato a una funzione OCI che contiene la logica per elaborare le richieste e generare risposte. Richiama le API REST del sistema gestito per le operazioni di riconciliazione e provisioning dei dati quando vengono attivate da Oracle Access Governance.
Per i dettagli completi su come utilizzare OCI Functions fai riferimento a Oracle Cloud Infrastructure Functions.
Configurazione della tenancy per abilitare le funzioni OCI
Prima di poter utilizzare OCI Functions per creare e distribuire funzioni, devi creare le risorse Oracle Cloud Infrastructure per supportarle. Le risorse da creare includono un account utente, un gruppo a cui apparterrà l'account utente, un compartimento, una rete cloud virtuale (VCN), vault e segreti e criteri per concedere al gruppo (e agli account utente che vi appartengono) l'accesso alle risorse correlate alle funzioni. Se esistono già risorse adeguate, non è necessario crearne di nuove.
Crea compartimento
- Connettersi alla console di Oracle Cloud Infrastructure come amministratore della tenancy.
- Aprire il menu di navigazione e selezionare Identità e sicurezza → Identità → Compartimenti.
- Selezionare Crea compartimento e aggiungere un compartimento, ad esempio ocifn_compartment: per i dettagli sulla creazione di un compartimento, vedere Per creare un compartimento
È possibile creare un compartimento in cui essere proprietari:
- Risorse della rete
- Risorse correlate alle funzioni
Creare VCN e subnet
- Connettersi alla console di Oracle Cloud Infrastructure come amministratore della tenancy.
- Aprire il menu di navigazione e selezionare Networking → Virtual Cloud Networks.
- Selezionare Avvia procedura guidata VCN per creare una nuova VCN.
- Nella finestra di dialogo selezionare Crea VCN con connettività Internet e fare clic su Avvia procedura guidata VCN.
- Nella procedura guidata immettere i dettagli riportati di seguito.
- Nome VCN: immettere il nome della VCN, ad esempio ocifn_vcn.
- Compartimento: immettere il compartimento entro il quale verranno create le risorse VCN, ad esempio ocifn_compartment.
- Fare clic su Avanti, quindi su Crea per creare la VCN e le risorse di rete correlate.
Per i dettagli su tutte le opzioni durante la creazione della VCN, vedere Creazione della VCN e delle subnet da utilizzare con le funzioni OCI.
Crea vault e segreto OCI
Se non si dispone di un vault adatto in cui memorizzare le credenziali client:
- Connettersi alla console di Oracle Cloud Infrastructure come amministratore della tenancy.
- Aprire il menu di navigazione e selezionare Identity & Security → Key Management & Secret Management
- Fare clic su Crea vault.
- Selezionare il compartimento in cui verrà creato il vault e assegnare un nome al vault. Fare clic su Crea vault.
- Aprire il vault creato e fare clic su Crea chiave. Creare la chiave nello stesso compartimento in cui è stato creato il vault. Assegnare un nome alla chiave e fare clic su Crea chiave.
- Nel menu Risorse, selezionare Segreti. Fare clic su Crea segreto.
- Nella pagina Crea segreto aggiungere i dettagli per il compartimento, il nome e la descrizione. Selezionare la chiave creata dall'elenco a discesa Chiave di cifratura. Selezionare l'opzione Generazione manuale dei segreti e immettere il codice client e il segreto client in uno dei formati seguenti nel campo Contenuto segreto.
-
Autorizzazione basata su OAuth
Per il codice di esempio per la creazione del token di autorizzazione per l'autorizzazione basata su OAuth, vedere OAuth Authorization - Sample Token Creation Code.
{ "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa", "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" } -
Autorizzazione di base
.
{ "username": "69b48365-14e2-430a-bd75-171f89c158fa", "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" }
-
Autorizzazione basata su OAuth
- Selezionare Crea segreto per salvare le modifiche.
Il segreto creato può essere utilizzato per passare i segreti client nella funzione di richiesta. Selezionare il segreto creato e copiare il valore dell'OCID segreto, che avrà un aspetto simile a ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0.
<SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml e aggiungere i dettagli del segreto e dell'area, ad esempio:secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"
Per ulteriori dettagli sui segreti di OCI Vault, vedere Gestione dei segreti del vault.
Crea o aggiorna il gruppo dinamico
Per utilizzare OCI Vault and Secret Services, la funzione deve far parte di un gruppo dinamico. Per informazioni dettagliate sulla creazione del gruppo dinamico, seguire le istruzioni fornite in Gestione dei gruppi dinamici.
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }
Crea criterio per vault e segreto OCI
Creare un nuovo criterio che consenta al gruppo dinamico creato nel passo precedente di leggere secret-family nella tenancy. Per ulteriori informazioni sulla creazione dei criteri OCI, vedere Sintassi dei criteri.
- Connettersi alla console di Oracle Cloud Infrastructure come amministratore della tenancy.
- Aprire il menu di navigazione e selezionare Identità e sicurezza → Identità → Criteri.
- Selezionare Crea criterio, specificare un nome per il criterio, ad esempio ocifn_policy, quindi selezionare il compartimento radice della tenancy.
- Aggiungere un'istruzione di criterio simile alla seguente:
Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy
Crea criterio per gruppo e servizio
- Connettersi alla console di Oracle Cloud Infrastructure come amministratore della tenancy.
- Aprire il menu di navigazione e selezionare Identità e sicurezza → Identità → Criteri.
- Selezionare Crea criterio, specificare un nome per il criterio, ad esempio ocifn_policy, quindi selezionare il compartimento radice della tenancy.
- Utilizzando Costruzione guidata criteri, selezionare Funzioni dalla lista Casi d'uso dei criteri e basare il criterio sul modello Consenti agli utenti di creare, distribuire e gestire funzioni e applicazioni.
- Selezionare il gruppo creato in precedenza, ocifn_group e ocifn_compartment per la posizione. Questo dovrebbe fornire una dichiarazione politica simile a:
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'
Per ulteriori dettagli sulla creazione di criteri per le funzioni OCI, vedere Creazione di criteri per controllare l'accesso alla rete e alle risorse correlate alle funzioni
Creare un'applicazione per raggruppare le funzioni OCI
Nelle funzioni OCI, un'applicazione è un raggruppamento logico di funzioni. Le proprietà specificate per un'applicazione determinano l'allocazione e la configurazione delle risorse per tutte le funzioni in tale applicazione. È necessario creare una funzione all'interno di un'applicazione, quindi deve esistere almeno un'applicazione prima di poter creare una funzione in OCI Functions.
- Accedi alla console di Oracle Cloud Infrastructure come sviluppatore di funzioni.
- Aprire il menu di navigazione e selezionare Developer Services → Functions → Applications.
- Selezionare il compartimento in uso per le funzioni di sistema orchestrate REST generiche.
- Fare clic su Crea applicazione,
- Aggiungere un nome per l'applicazione, ad esempio agcs-generic-rest-connector. Le funzioni verranno distribuite in questa applicazione e specificate durante il richiamo della funzione.
- Selezionare la VCN e la subnet in cui eseguire la funzione.
- Fare clic su Crea.
Per i dettagli completi sulla creazione di applicazioni con OCI Functions, vedere Creazione di applicazioni.
Impostazione dell'ambiente per lo sviluppo delle funzioni OCI
Per creare e distribuire le funzioni OCI è necessario installare e configurare un ambiente di sviluppo.
- Installa e avvia Docker
- Imposta chiave di firma API e profilo OCI
- Installa interfaccia a riga di comando (CLI) di Fn Project
- Imposta fornitore contesto CLI progetto Fn
- Completa configurazione contesto CLI progetto Fn
- Genera token di autenticazione
- Esegui login al registro
Dopo aver impostato l'ambiente di sviluppo, è possibile iniziare a sviluppare e distribuire le funzioni per il sistema orchestrato REST generico.
Sviluppa e distribuisci la funzione su OCI
Per distribuire il sistema orchestrato REST generico, è necessario sviluppare e distribuire una funzione OCI che consente di connettersi al sistema dipendente dalle identità che si desidera integrare con Oracle Access Governance utilizzando REST.
Per sviluppare e distribuire le funzioni OCI da utilizzare con il sistema orchestrato REST generico:
Imposta implementazione campione
Per facilitare lo sviluppo delle funzioni OCI, viene fornita un'implementazione di esempio con il sistema orchestrato REST generico. Per scaricare questo esempio, è necessario seguire le istruzioni fornite nella procedura Select System.
Nei dettagli seguenti, la directory in cui è stata decompressa l'implementazione di esempio viene definita
<SampleBase>. Utilizzare questa opzione per individuare i file menzionati. Ad esempio:Se si decomprime l'implementazione di esempio in una directory, ad esempio /myagfunctions, il file <SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml è disponibile all'indirizzo /myagfunctions/grc-schema-template/src/main/resources/schema/config.yaml.
- idm-agcs-serverless-getting-started-sample: questo è un esempio di base e di facile comprensione con un codice minimo, che dimostra il funzionamento delle funzioni. Questo caso d'uso è ideale per i clienti che devono integrare una singola applicazione con il connettore REST generico, richiedendo una configurazione minima. L'impostazione iniziale viene eseguita con un'applicazione Oracle Identity Cloud Service (IDCS). I passi dettagliati per configurare e distribuire questa funzione sono disponibili nel file `README.md` all'interno di questa directory.
- idm-agcs-serverless-IDCS-application-sample: questo esempio è incentrato sull'esempio dell'applicazione IDCS con una configurazione minima. Include il framework per aggiungere altre applicazioni in futuro all'interno di questa funzione. I passi di configurazione e distribuzione sono descritti nel file `README.md` che si trova in questa directory.
- idm-agcs-serverless-azuread-application-sample: questo esempio è specifico per i clienti che hanno bisogno di un esempio di applicazione AzureAD con una configurazione minima. Contiene il framework per aggiungere altre applicazioni in futuro all'interno di questa funzione. I passi dettagliati per configurare e distribuire questa funzione sono disponibili nel file `README.md` all'interno di questa directory.
- idm-agcs-serverless-multi-application-sample: questo esempio è rivolto ai clienti che necessitano di esempi di applicazioni IDCS e AzureAD con una configurazione minima. Include il framework per aggiungere altre applicazioni in futuro all'interno di questa funzione. Il file `README.md` in questa directory fornisce tutti i passi necessari per configurare e distribuire questa funzione.
Crea funzioni per l'applicazione
Crea le funzioni per il tuo sistema di riconoscimento delle identità basato su REST, facendo riferimento ai modelli di riferimento e configurando le funzioni come definite di seguito, con valori specifici dell'applicazione.
| Elemento | Descrizione |
|---|---|
| Input | Nome sistema orchestrato |
| Configurazione |
Lista dei sistemi di riconoscimento identità REST personalizzati configurati: Ad esempio, dall'implementazione di esempio:
Lista di sistemi orchestrati collegati al sistema di riconoscimento identità REST personalizzato: Ad esempio, dall'implementazione di esempio:
|
| Output |
Documento modello di schema JSON, con uno o più schemi di entità, incluso uno dei tipi di entità seguenti:
Per un esempio dell'implementazione di esempio, vedere Output schema. |
| Elemento | Descrizione |
|---|---|
| Input |
|
| Configurazione |
Lista dei sistemi di riconoscimento identità REST personalizzati configurati: Ad esempio, dall'implementazione di esempio:
Lista di sistemi orchestrati collegati al sistema di riconoscimento identità REST personalizzato: Ad esempio, dall'implementazione di esempio:
|
| Output |
Documento modello di richiesta JSON per entità e operazioni definite:
Entità
Operazioni
Per un esempio dell'implementazione di esempio, vedere Richiedi output. |
| Elemento | Descrizione |
|---|---|
| Input |
|
| Configurazione |
Lista dei sistemi di riconoscimento identità REST personalizzati configurati: Ad esempio, dall'implementazione di esempio:
Lista di sistemi orchestrati collegati al sistema di riconoscimento identità REST personalizzato: Ad esempio, dall'implementazione di esempio:
|
| Output |
Documento modello di risposta JSON per entità e operazioni definite:
Entità
Operazioni
Per un esempio dell'implementazione di esempio, vedere Output risposta. |
| Elemento | Descrizione |
|---|---|
| Input | Nome sistema orchestrato |
| Configurazione |
Lista dei sistemi di riconoscimento identità REST personalizzati configurati: Ad esempio, dall'implementazione di esempio:
Lista di sistemi orchestrati collegati all'applicazione con riconoscimento dell'identità REST personalizzata: Ad esempio, dall'implementazione di esempio:
|
| Output |
Documento modello di richiesta di test JSON: Ad esempio, dall'implementazione di esempio:
|
Guida al modulo Infra test
I modelli di richiesta e risposta sono complessi e possono verificarsi errori durante lo sviluppo. È fondamentale identificare e convalidare tutti i modelli di richiesta e risposta configurati per la correttezza durante il tempo di creazione stesso.
Per affrontare questa sfida, è stato introdotto il modulo grc-test-infra. Questo modulo include test corrispondenti a ciascun modello di richiesta e risposta configurato. Questi test hanno lo scopo di verificare le richieste effettuate all'API REST dell'applicazione di destinazione e le risposte ricevute. Per raggiungere questo obiettivo, i test utilizzano una utility, come un processore di richiesta e risposta generico, in grado di gestire qualsiasi chiamata API REST sviluppata all'interno del modulo. In sostanza, interagisce internamente con gli endpoint dell'applicazione target e convalida le risposte in base ai modelli di risposta configurati.
- Sviluppare test seguendo l'esempio descritto di seguito:prova del campione grc-test-infra
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); } }- La prima riga del test consiste nel recuperare il modello di richiesta configurato passando il nome connectedSystem, il nome dell'entità e l'operazione.
- La seconda riga recupera il modello di risposta configurato utilizzando parametri simili.
- Gli utenti devono passare gli attributi richiesti nel modello di richiesta inserendoli nella mappa degli attributi.
- Quindi, gli utenti devono solo chiamare il metodo di utility generica processAndValidateRequestAndResponseTemplate, che convalida internamente sia i modelli di richiesta che quelli di risposta per la correttezza richiamando l'API e mappando la sua risposta con il modello di risposta configurato.
- Il test verrà superato se i modelli di richiesta e risposta configurati sono configurati correttamente; in caso contrario, si verificherà un errore, consentendo agli utenti di visualizzare il motivo dell'errore e correggere di conseguenza i modelli.
Il file di test di esempio è disponibile nell'implementazione di esempio nella seguente posizione:
<SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java - Aggiungere i prerequisiti seguenti prima di eseguire il test:
- Aggiornare il file
<SampleBase>/grc-test-infra/src/test/resources/configcon i valori seguenti per l'ambiente in uso:[DEFAULT] user=<<USER>> fingerprint=<<FINGERPRINT>> key_file=<<PEM_FILE_RELATIVE_PATH>> tenancy=<<TENANCY>> region=<<REGION>> - Aggiornare il file
<SampleBase>/grc-test-infra/src/test/resources/config.propertiescon il valore seguente per l'ambiente in uso:connectedSystemName=<connectedSystemName> - Aggiungere la chiave SSH privata (file .pem) per la chiave di firma API alla seguente posizione:
<SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
- Aggiornare il file
- Eseguire il test sviluppato e costruire la funzione:
- Passare alla directory
functionsdell'implementazione di esempio. - Compilare e raggruppare le funzioni
mvn clean package-DisDevMode=true
- Passare alla directory
Crea e distribuisci la tua funzione
- Costruisci la tua funzione.
cd <SampleBase> mvn package - Distribuire la funzione su OCI. I passaggi devono essere eseguiti per ogni funzione
- modello-schema-grc
- grc-request-template
- modello risposta grc
- modello test grc
cd <SampleBase>/grc-schema-template fn -v deploy --app <ApplicationName>