Configurer OCI Serverless Fn pour la connexion à l'application Identity Aware basée sur REST
Comment le système orchestré REST générique utilise-t-il le service des fonctions pour OCI?
Oracle Access Governance tire parti d'OCI Functions pour les intégrations d'API REST. Chaque système REST orchestré générique que vous créez est associé à une fonction OCI qui contient la logique de traitement des demandes et de génération des réponses. Il appelle les API REST du système géré pour les opérations de rapprochement et de provisionnement des données lorsqu'elles sont déclenchées par Oracle Access Governance.
Pour plus de détails sur l'utilisation du service des fonctions pour OCI, voir Oracle Cloud Infrastructure Functions.
Configuration de votre location pour activer le service des fonctions pour OCI
Pour pouvoir utiliser le service des fonctions pour OCI pour créer et déployer des fonctions, vous devez créer des ressources Oracle Cloud Infrastructure pour prendre en charge cette fonction. Les ressources que vous devez créer comprennent un compte d'utilisateur, un groupe auquel le compte d'utilisateur appartient, un compartiment, un réseau en nuage virtuel (VCN), des chambres fortes et des clés secrètes, ainsi que des politiques permettant au groupe (et aux comptes d'utilisateur qui lui appartiennent) d'accéder aux ressources liées aux fonctions. Si des ressources appropriées existent déjà, il n'est pas nécessaire d'en créer de nouvelles.
Créer un compartiment
- Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Compartiments.
- Sélectionnez Créer un compartiment et ajoutez un compartiment, par exemple ocifn_compartment : Pour plus de détails sur la création d'un compartiment, voir Pour créer un compartiment.
Vous créez un compartiment dont vous êtes responsable :
- Ressources de réseau
- Ressources liées aux fonctions
Créez un réseau en nuage virtuel et des sous-réseaux
- Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
- Ouvrez le menu de navigation et sélectionnez Service de réseau → réseaux en nuage virtuels.
- Sélectionnez Démarrer l'Assistant VCN pour créer un nouveau VCN.
- Dans la boîte de dialogue, sélectionnez Créer un VCN avec connectivité Internet et cliquez sur l'Assistant Démarrer le VCN.
- Dans l'assistant, entrez les détails suivants :
- Nom du VCN : Entrez le nom du VCN, par exemple ocifn_vcn.
- Compartiment : Entrez le compartiment dans lequel les ressources de VCN seront créées, par exemple ocifn_compartment.
- Cliquez sur Suivant, puis sur Créer pour créer le VCN et les ressources de réseau connexes.
Pour plus de détails sur toutes les options lors de la création du VCN, voir Création du VCN et des sous-réseaux à utiliser avec le service des fonctions pour OCI.
Créer une chambre forte et une clé secrète OCI
Si vous ne disposez pas d'une chambre forte appropriée dans laquelle stocker les données d'identification du client :
- Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Gestion des clés et des clés secrètes.
- Cliquez sur Créer une chambre forte.
- Sélectionnez le compartiment dans lequel la chambre forte sera créée et donnez un nom à la chambre forte. Cliquez sur Créer une chambre forte.
- Ouvrez la chambre forte que vous avez créée et cliquez sur Créer une clé. Créez la clé dans le compartiment que vous avez créé votre chambre forte. Donnez un nom à la clé et cliquez sur Créer une clé.
- Dans le menu Ressources, sélectionnez Clés secrètes. Cliquez sur Créer une clé secrète.
- Dans la page Créer une clé secrète, ajoutez des détails pour le compartiment, le nom et la description. Sélectionnez la clé que vous avez créée dans la liste déroulante Clé de chiffrement. Sélectionnez l'option Génération manuelle des clés secrètes et entrez votre code client et votre clé secrète client dans l'un des formats suivants dans le champ Contenu de la clé secrète.
-
Autorisation basée sur OAuth
Pour un exemple de code permettant de créer un jeton d'autorisation pour une autorisation basée sur OAuth, voir OAuth Authorization - Sample Token Creation Code.
{ "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa", "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" } -
Autorisation de base
.
{ "username": "69b48365-14e2-430a-bd75-171f89c158fa", "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" }
-
Autorisation basée sur OAuth
- Sélectionnez Créer une clé secrète pour enregistrer vos modifications.
La clé secrète que vous avez créée peut être utilisée pour transmettre des clés secrètes de client dans votre fonction de demande. Sélectionnez la clé secrète que vous avez créée et copiez la valeur de l'OCID de la clé secrète, qui ressemblera à ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0.
<SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml et ajoutez les détails de la clé secrète et de la région, par exemple :secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"
Pour plus de détails sur les clés secrètes de chambre forte OCI, voir Gestion des clés secrètes de chambre forte.
Créer ou mettre à jour un groupe dynamique
Pour utiliser OCI Vault and Secret Services, votre fonction doit faire partie d'un groupe dynamique. Pour plus de détails sur la création de votre groupe dynamique, suivez les instructions sous Gestion des groupes dynamiques.
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }
Créer une politique pour la chambre forte et la clé secrète OCI
Créez une politique qui permet au groupe dynamique créé à l'étape ci-dessus de lire secret-family dans votre location. Pour plus d'informations sur la création de politiques OCI, voir Syntaxe de politique.
- Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Politiques.
- Sélectionnez Créer une politique, spécifiez un nom pour la politique, par exemple ocifn_policy, et sélectionnez le compartiment racine de la location.
- Ajoutez un énoncé de politique similaire à :
Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy
Créer une politique pour le groupe et le service
- Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
- Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Politiques.
- Sélectionnez Créer une politique, spécifiez un nom pour la politique, par exemple ocifn_policy, et sélectionnez le compartiment racine de la location.
- À l'aide du générateur de politiques, sélectionnez Fonctions dans la liste Cas d'utilisation de politique et basez votre politique sur le modèle Permettre aux utilisateurs de créer, de déployer et de gérer des fonctions et des applications.
- Sélectionnez le groupe créé précédemment, ocifn_group et ocifn_compartment pour l'emplacement. Cela devrait vous donner un énoncé de politique similaire à :
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'
Pour plus de détails sur la création de politiques pour le service des fonctions pour OCI, voir Création de politiques pour contrôler l'accès aux ressources de réseau et aux ressources liées aux fonctions
Créer une application pour regrouper vos fonctions OCI
Dans OCI Functions, une application est un regroupement logique de fonctions. Les propriétés que vous spécifiez pour une application déterminent l'allocation et la configuration des ressources pour toutes les fonctions de cette application. Vous devez créer une fonction dans une application, de sorte qu'au moins une application doit exister pour que vous puissiez créer une fonction dans OCI Functions.
- Connectez-vous à la console Oracle Cloud Infrastructure en tant que développeur de fonctions.
- Ouvrez le menu de navigation et sélectionnez Services de développement → Fonctions → Applications.
- Sélectionnez le compartiment que vous utilisez pour les fonctions de système orchestrées REST génériques.
- Cliquez sur Créer une application.
- Ajoutez un nom pour l'application, par exemple agcs-generic-rest-connector. Vous allez déployer vos fonctions dans cette application et spécifier cette application lors de l'appel de la fonction.
- Sélectionnez le VCN et le sous-réseau dans lesquels exécuter la fonction.
- Cliquez sur Créer.
Pour plus de détails sur la création d'applications avec le service des fonctions pour OCI, voir Création d'applications.
Configurer l'environnement pour développer le service des fonctions pour OCI
Pour créer et déployer OCI Functions, vous devez installer et configurer un environnement de développement.
- Installer et démarrer Docker
- Configurer la clé de signature d'API et le profil OCI
- Installer l'interface de ligne de commande Fn Project
- Configurer le fournisseur de contexte de l'interface de ligne de commande Fn Project
- Terminer la configuration du contexte de l'interface de ligne de commande Fn Project
- Générer le jeton d'authentification
- Se connecter au registre
Une fois votre environnement de développement configuré, vous pouvez commencer à développer et à déployer des fonctions pour le système orchestré REST générique.
Développer et déployer une fonction pour OCI
Pour déployer le système orchestré REST générique, vous devez développer et déployer une fonction OCI qui vous permet de vous connecter au système sensible aux identités que vous souhaitez intégrer à Oracle Access Governance à l'aide de REST.
Pour développer et déployer OCI Functions à utiliser avec le système orchestré REST générique :
Configurer l'exemple de mise en oeuvre
Pour faciliter le développement de votre service des fonctions pour OCI, un exemple de mise en oeuvre est fourni avec le système orchestré REST générique. Pour télécharger cet exemple, vous devez suivre les instructions fournies dans la procédure Sélectionner un système.
Dans les détails qui suivent, le répertoire vers lequel vous avez décompressé l'exemple de mise en oeuvre est appelé
<SampleBase>. Utilisez cette option pour localiser les fichiers mentionnés. Par exemple :Si vous décompressez l'exemple de mise en oeuvre dans un répertoire, par exemple, /myagfunctions, le fichier <SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml se trouve à l'adresse /myagfunctions/grc-schema-template/src/main/resources/schema/config.yaml.
- idm-agcs-serverless-getting-started-sample : Il s'agit d'un échantillon de base facile à comprendre avec un code minimal, montrant comment fonctionnent les fonctions. Ce cas d'utilisation est idéal pour les clients qui doivent intégrer une seule application au connecteur REST générique, nécessitant une configuration minimale. La configuration initiale est effectuée avec une application Oracle Identity Cloud Service (IDCS). Les étapes détaillées de configuration et de déploiement de cette fonction se trouvent dans le fichier `README.md` de ce répertoire.
- idm-agcs-serverless-IDCS-application-sample : Cet exemple se concentre sur l'exemple d'application IDCS avec une configuration minimale. Il inclut la structure permettant d'ajouter d'autres applications à l'avenir dans cette fonction. Les étapes de configuration et de déploiement sont détaillées dans le fichier `README.md` situé dans ce répertoire.
- idm-agcs-serverless-azuread-application-sample : Cet exemple est destiné spécifiquement aux clients qui ont besoin d'un exemple d'application AzureAD avec une configuration minimale. Il contient la structure permettant d'ajouter d'autres applications à l'avenir dans cette fonction. Des étapes détaillées pour configurer et déployer cette fonction sont disponibles dans le fichier `README.md` dans ce répertoire.
- idm-agcs-serverless-multi-application-sample : Cet exemple est destiné aux clients nécessitant à la fois des exemples d'application IDCS et AzureAD avec une configuration minimale. Il inclut la structure permettant d'ajouter d'autres applications à l'avenir dans cette fonction. Le fichier `README.md` de ce répertoire fournit toutes les étapes nécessaires pour configurer et déployer cette fonction.
Créer des fonctions pour votre application
Créer les fonctions pour votre propre système basé sur REST sensible aux identités, en se référant aux modèles de référence et en configurant les fonctions telles que définies ci-dessous, avec des valeurs spécifiques à votre application.
| Élément | Description |
|---|---|
| Entrée | Nom du système orchestré |
| Configuration |
Liste des systèmes REST personnalisés configurés : Par exemple, à partir de l'exemple de mise en oeuvre :
Liste des systèmes orchestrés liés à un système REST personnalisé : Par exemple, à partir de l'exemple de mise en oeuvre :
|
| Sortie |
Document de modèle de schéma JSON, avec un ou plusieurs schémas d'entité, y compris l'un des types d'entité suivants :
Pour un exemple de mise en oeuvre, voir Sortie de schéma. |
| Élément | Description |
|---|---|
| Entrée |
|
| Configuration |
Liste des systèmes REST personnalisés configurés : Par exemple, à partir de l'exemple de mise en oeuvre :
Liste des systèmes orchestrés liés à un système REST personnalisé : Par exemple, à partir de l'exemple de mise en oeuvre :
|
| Sortie |
Document de modèle de demande JSON, pour les entités et les opérations définies :
Entités
Opérations
Pour un exemple de mise en oeuvre, voir Sortie de demande. |
| Élément | Description |
|---|---|
| Entrée |
|
| Configuration |
Liste des systèmes REST personnalisés configurés : Par exemple, à partir de l'exemple de mise en oeuvre :
Liste des systèmes orchestrés liés à un système REST personnalisé : Par exemple, à partir de l'exemple de mise en oeuvre :
|
| Sortie |
Document de modèle de réponse JSON, pour les entités et les opérations définies :
Entités
Opérations
Pour un exemple de mise en oeuvre, voir Sortie de réponse. |
| Élément | Description |
|---|---|
| Entrée | Nom du système orchestré |
| Configuration |
Liste des systèmes REST personnalisés configurés : Par exemple, à partir de l'exemple de mise en oeuvre :
Liste des systèmes orchestrés liés à une application REST personnalisée sensible aux identités : Par exemple, à partir de l'exemple de mise en oeuvre :
|
| Sortie |
Document de modèle de demande de test JSON : Par exemple, à partir de l'exemple de mise en oeuvre :
|
Guide du module Infra de test
Les modèles de demande et de réponse sont complexes et des erreurs peuvent survenir lors du développement. Il est essentiel d'identifier et de valider tous les modèles de demande et de réponse configurés pour qu'ils soient corrects pendant la création elle-même.
Pour relever ce défi, le module grc-test-infra a été introduit. Ce module comprend des tests correspondant à chaque modèle de demande et de réponse configuré. Ces tests visent à vérifier les demandes faites à l'API REST de l'application cible et les réponses reçues. Pour ce faire, les tests utilisent un utilitaire, tel qu'un processeur de demande et de réponse générique, capable de gérer tout appel d'API REST développé dans le module. Essentiellement, il interagit en interne avec les points d'extrémité de l'application cible et valide les réponses en fonction des modèles de réponse configurés.
- Développez des tests en suivant l'exemple décrit ci-dessous :grc-test-infra test d'échantillon
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 première ligne du test consiste à obtenir le modèle de demande configuré en transmettant le nom, le nom d'entité et l'opération connectedSystem.
- La deuxième ligne obtient le modèle de réponse configuré à l'aide de paramètres similaires.
- Les utilisateurs doivent transmettre les attributs requis dans le modèle de demande en les plaçant dans le mappage d'attributs.
- Ensuite, les utilisateurs doivent simplement appeler la méthode d'utilitaire générique processAndValidateRequestAndResponseTemplate, qui valide en interne les modèles de demande et de réponse pour vérifier leur exactitude en appelant l'API et en mappant sa réponse avec le modèle de réponse configuré.
- Le test réussit si les modèles de demande et de réponse configurés sont correctement configurés. Sinon, il échoue, permettant aux utilisateurs de voir le motif de l'échec et de corriger les modèles en conséquence.
L'exemple de fichier de test se trouve dans l'exemple de mise en oeuvre à l'emplacement suivant :
<SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java - Ajoutez les préalables suivants avant d'exécuter le test :
- Mettez à jour le fichier
<SampleBase>/grc-test-infra/src/test/resources/configavec les valeurs suivantes pour votre environnement :[DEFAULT] user=<<USER>> fingerprint=<<FINGERPRINT>> key_file=<<PEM_FILE_RELATIVE_PATH>> tenancy=<<TENANCY>> region=<<REGION>> - Mettez à jour le fichier
<SampleBase>/grc-test-infra/src/test/resources/config.propertiesavec la valeur suivante pour votre environnement :connectedSystemName=<connectedSystemName> - Ajoutez la clé SSH privée (fichier .pem) pour la clé de signature d'API à l'emplacement suivant :
<SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
- Mettez à jour le fichier
- Exécutez le test développé et créez la fonction :
- Naviguez jusqu'au répertoire
functionsde l'exemple de mise en oeuvre. - Compiler et packager les fonctions
mvn clean package-DisDevMode=true
- Naviguez jusqu'au répertoire
Créer et déployer votre fonction
- Construisez votre fonction.
cd <SampleBase> mvn package - Déployez votre fonction sur OCI. Les étapes doivent être effectuées pour chaque fonction
- grc-schéma-modèle
- grc-request-template
- grc-réponse-modèle
- grc-test-modèle
cd <SampleBase>/grc-schema-template fn -v deploy --app <ApplicationName>