Configuration d'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 les fonctions OCI ?

Oracle Access Governance utilise 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 d'informations sur l'utilisation d'OCI Functions, reportez-vous à Oracle Cloud Infrastructure Functions.

Configuration de votre location pour activer OCI Functions

Pour pouvoir utiliser OCI Functions afin de créer et de déployer des fonctions, vous devez créer des ressources Oracle Cloud Infrastructure pour la prendre en charge. Les ressources à créer incluent un compte utilisateur, un groupe auquel le compte utilisateur appartiendra, un compartiment, un réseau cloud virtuel (VCN), des coffres et des clés secrètes, ainsi que des stratégies permettant au groupe (et aux comptes 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

Si vous ne disposez pas d'un compartiment approprié dans lequel vous pouvez créer des ressources réseau et des ressources OCI Functions :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Compartiments.
  3. 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, reportez-vous à Procédure de création d'un compartiment.
Remarque

Vous créez un compartiment dont vous êtes propriétaire :
  • Ressources réseau
  • Ressources liées aux fonctions
Vous pouvez créer un compartiment unique contenant les deux ensembles de ressources, ou vous pouvez créer des compartiments distincts pour les ressources réseau et les ressources liées aux fonctions.

Créez un réseau cloud virtuel et des sous-réseaux

Si vous ne disposez pas d'un VCN approprié pour créer des ressources réseau :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Fonctions de réseau → Réseaux Cloud virtuels.
  3. Sélectionnez Démarrer l'assistant VCN pour créer un VCN.
  4. Dans la boîte de dialogue, sélectionnez Créer un VCN avec connectivité Internet, puis cliquez sur Démarrer l'assistant VCN.
  5. Dans l'assistant, entrez les détails suivants :
    1. Nom du VCN : entrez le nom du VCN, par exemple ocifn_vcn.
    2. Compartiment : entrez le compartiment dans lequel les ressources VCN seront créées, par exemple ocifn_compartment.
  6. Cliquez sur Suivant, puis sur Créer pour créer le VCN et les ressources réseau associées.

Pour plus de détails sur toutes les options lors de la création du VCN, reportez-vous à Création du VCN et des sous-réseaux à utiliser avec les fonctions OCI.

Créer un coffre OCI et une clé secrète

Si vous ne disposez pas d'un coffre approprié dans lequel stocker les informations d'identification client :

  1. Connectez-vous à l'administrateur de location de la console Oracle Cloud Infrastructure.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Gestion des clés et des clés secrètes.
  3. Cliquez sur Créer un coffre.
  4. Sélectionnez le compartiment dans lequel le coffre sera créé et attribuez un nom au coffre. Cliquez sur Créer un coffre.
  5. Ouvrez le coffre que vous avez créé et cliquez sur Créer une clé. Créez la clé dans le compartiment dans lequel vous avez créé le coffre. Donnez un nom à la clé et cliquez sur Créer une clé.
  6. Dans le menu Ressources, sélectionnez Clés secrètes. Cliquez sur Créer une clé secrète.
  7. Sur la page Créer une clé secrète, ajoutez des détails sur le compartiment, le nom et la description. Sélectionnez la clé que vous avez créée dans la liste déroulante Clé de cryptage. Sélectionnez l'option Génération manuelle de clé secrète, puis entrez le code client et la clé secrète client dans l'un des formats suivants dans le champ Contenu de clé secrète.
    1. Autorisation basée sur OAuth
      {
        "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa",
        "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      Pour obtenir un exemple de code permettant de créer un jeton d'autorisation pour l'autorisation basée sur OAuth, reportez-vous à OAuth Authorization - Sample Token Creation Code.
    2. Autorisation de base
      {
        "username": "69b48365-14e2-430a-bd75-171f89c158fa",
        "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      .
    Pour obtenir un exemple de code permettant de créer un jeton d'autorisation pour l'autorisation de base, reportez-vous à Autorisation de base - Exemple de code de création de jeton.
  8. 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 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 clé secrète, qui ressemblera à ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0.

Modifiez le fichier <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 OCI Vault, reportez-vous à Gestion des clés secrètes Vault.

Créer ou mettre à jour un groupe dynamique

Pour utiliser OCI Vault et Secret Services, votre fonction doit faire partie d'un groupe dynamique. Pour plus d'informations sur la création d'un groupe dynamique, suivez les instructions fournies dans Gestion des groupes dynamiques.

Dans le cadre de la création de votre groupe dynamique, vous devrez définir un ensemble de règles de correspondance pour définir le membre du groupe. Lorsque vous indiquez la règle de mise en correspondance, il est recommandé de mettre en correspondance toutes les fonctions d'un compartiment avec la règle suivante :
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }

Créer une stratégie pour OCI Vault et Secret

Créez une stratégie qui permet au groupe dynamique créé à l'étape ci-dessus de lire la famille de clés secrètes dans votre location. Pour plus d'informations sur la création de stratégies OCI, reportez-vous à Syntaxe de stratégie.

  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Stratégies.
  3. Sélectionnez Créer une stratégie, indiquez le nom de la stratégie, par exemple ocifn_policy, puis sélectionnez le compartiment racine de la location.
  4. Ajoutez une instruction de stratégie semblable à la suivante :
    Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy

Créer une stratégie pour le groupe et le service

Si un ou plusieurs utilisateurs OCI Functions, par exemple, ocifn_user n'est pas un administrateur de location :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Stratégies.
  3. Sélectionnez Créer une stratégie, indiquez le nom de la stratégie, par exemple ocifn_policy, puis sélectionnez le compartiment racine de la location.
  4. A l'aide du générateur de stratégies, sélectionnez Fonctions dans la liste Cas d'utilisation de stratégie, puis basez votre stratégie sur le modèle Autoriser les utilisateurs à créer, déployer et gérer des fonctions et des applications.
  5. Sélectionnez le groupe créé précédemment, ocifn_group et ocifn_compartment pour l'emplacement. Vous devriez ainsi obtenir une instruction de stratégie semblable à la suivante :
    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 stratégies pour OCI Functions, reportez-vous à Création de stratégies de contrôle d'accès aux ressources liées au réseau et aux fonctions

Création d'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. Par conséquent, au moins une application doit exister pour pouvoir créer une fonction dans OCI Functions.

Pour créer une demande :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant que développeur de fonctions.
  2. Ouvrez le menu de navigation et sélectionnez Services de développeur → Fonctions → Applications.
  3. Sélectionnez le compartiment que vous utilisez pour les fonctions système orchestrées REST génériques.
  4. Cliquez sur Create application (Créer une application).
  5. Ajoutez un nom pour l'application, par exemple agcs-generic-rest-connector. Vous allez déployer vos fonctions dans cette application et indiquer cette application lors de l'appel de la fonction.
  6. Sélectionnez le VCN et le sous-réseau dans lesquels exécuter la fonction.
  7. Cliquez sur Créer.

Pour obtenir des détails complets sur la création d'applications avec OCI Functions, reportez-vous à Création d'applications.

Environnement de configuration pour le développement de fonctions OCI

Pour créer et déployer vos fonctions OCI, vous devez installer et configurer un environnement de développement.

Pour pouvoir créer des fonctions OCI pour le système REST orchestré générique, vous devez installer et configurer un environnement de développement, si vous n'en avez pas déjà un disponible. La configuration d'un environnement de développement peut être effectuée de plusieurs manières. Elle comprend tout ou partie des étapes suivantes :
  • installer et démarrer Docker
  • Configurer la clé de signature d'API et le profil OCI
  • Installation de l'interface de ligne de commande du projet Fn (CLI)
  • Configurer le fournisseur de contexte CLI du projet Fn
  • Terminer la configuration du contexte de l'interface de ligne de commande du projet Fn
  • Générer un jeton d'authentification
  • Se connecter au registre
Vous trouverez des détails complets sur la configuration de votre environnement de développement dans différents contextes dans la documentation Oracle Cloud Infrastructure, comme suit :

Une fois votre environnement de développement configuré, vous pouvez commencer à développer et à déployer des fonctions pour le système REST orchestré générique.

Développer et déployer une fonction vers 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 tenant compte des identités à intégrer à Oracle Access Governance à l'aide de REST.

Pour développer et déployer des fonctions OCI à utiliser avec le système orchestré REST générique :

Configurer l'exemple d'implémentation

Pour faciliter le développement de vos fonctions OCI, un exemple d'implémentation est fourni avec le système REST orchestré générique. Pour télécharger cet exemple, suivez les instructions fournies dans la procédure Sélectionner un système.

L'exemple d'implémentation téléchargé, idm-agcs-generic-rest-reference-implementation.zip, comprend quatre cas d'utilisation. Lors de la décompression du fichier, vous verrez les quatre répertoires suivants dans lesquels vous pouvez choisir un exemple qui répond à vos besoins.
Remarque

Dans les détails qui suivent, le répertoire dans lequel vous avez décompressé l'exemple d'implémentation est appelé <SampleBase>. Utilisez ceci pour localiser les fichiers mentionnés. Par exemple :

Si vous décompressez l'exemple d'implémentation 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.

  1. idm-agcs-serverless-getting-started-sample : échantillon de base et facile à comprendre avec un minimum de code, illustrant le fonctionnement des fonctions. Ce cas d'emploi est idéal pour les clients qui ont besoin d'intégrer une seule application au connecteur REST générique, ce qui nécessite 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.
  2. idm-agcs-serverless-IDCS-application-sample : cet exemple se concentre sur l'exemple d'application IDCS avec une configuration minimale. Il inclut le cadre pour 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.
  3. idm-agcs-serverless-azuread-application-sample : cet exemple s'adresse spécifiquement aux clients qui ont besoin d'un exemple d'application AzureAD avec une configuration minimale. Il contient le framework pour ajouter d'autres applications à l'avenir dans cette fonction. Les étapes détaillées de configuration et de déploiement de cette fonction sont disponibles dans le fichier `README.md` de ce répertoire.
  4. idm-agcs-serverless-multi-application-sample : cet exemple s'adresse aux clients qui ont besoin d'exemples d'application IDCS et AzureAD avec une configuration minimale. Il inclut le cadre pour 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éation de fonctions pour votre application

Créez les fonctions de votre propre système tenant compte des identités basé sur REST, en vous référant aux modèles de référence et en configurant les fonctions telles que définies ci-dessous, avec des valeurs propres à votre application.

MODÈLE DE SCHÉMA GRC
Elément Description
Entrée Nom du système orchestré
Configuration

Liste des systèmes REST personnalisés configurés prenant en compte les identités :<SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à un système personnalisé de connaissance des identités REST : <SampleBase>/grc-schema-template/src/main/resources/schema/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
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 :
  • ACCOUNT
  • DROIT
  • CODE EXPRESS
  • COMPTE CIBLE

<SampleBase>/grc-schema-template/src/main/resources/schema/applications/<YourApplicationName>/TEMPLATE.json

Pour obtenir un exemple d'implémentation, reportez-vous à la section Schema Output.

GRC-DEMANDE-MODÈLE
Elément Description
Entrée
  • Nom du système orchestré
  • Nom de l'opération
  • Nom d'entité
Configuration

Liste des systèmes REST personnalisés configurés prenant en compte les identités : <SampleBase>/grc-request-template/src/main/resources/request/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à un système personnalisé de connaissance des identités REST : <SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<CONNECTED_SYSTEM_NAME_1>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_1>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_1>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_1>>"
  - connectedSystemName: "<<CONNECTED_SYSTEM_NAME_2>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_2>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_2>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_2>>"
  - connectedSystemName: "<<CONNECTED_SYSTEM_NAME_3>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_3>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_3>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_3>>"
Sortie

Document de modèle de demande JSON, pour les entités et opérations définies :

Entités
  • ACCOUNT
  • DROIT
  • CODE EXPRESS
  • COMPTE CIBLE
Opérations
  • CRÉER
  • GET
  • RECHERCHER
  • SUPPRIMER
  • METTRE À JOUR
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ENABLE
  • DISABLE

<SampleBase>/grc-schema-template/src/main/resources/request/applications/<YourApplicationName>/<EntityName>/<Operation>_TEMPLATE.json

Pour obtenir un exemple d'implémentation, reportez-vous à Demande de sortie.

GRC-RÉPONSE-MODÈLE
Elément Description
Entrée
  • Nom du système orchestré
  • Nom de l'opération
  • Nom d'entité
Configuration

Liste des systèmes REST personnalisés configurés prenant en compte les identités : <SampleBase>/grc-response-template/src/main/resources/response/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à un système personnalisé de connaissance des identités REST : <SampleBase>/grc-response-template/src/main/resources/response/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
Sortie

Document de modèle de réponse JSON, pour les entités et opérations définies :

Entités
  • ACCOUNT
  • DROIT
  • CODE EXPRESS
  • COMPTE CIBLE
Opérations
  • CRÉER
  • GET
  • RECHERCHER
  • SUPPRIMER
  • METTRE À JOUR
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ENABLE
  • DISABLE

<SampleBase>/grc-response-template/src/main/resources/response/applications/<YourApplicationName>/<EntityName>/<Operation>_TEMPLATE.json

Pour obtenir un exemple d'implémentation, reportez-vous à Sortie de réponse.

GRC-TEST-MODÈLE
Elément Description
Entrée Nom du système orchestré
Configuration

Liste des systèmes REST personnalisés configurés prenant en compte les identités : <SampleBase>/grc-test-template/src/main/resources/test/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à l'application personnalisée de connaissance des identités REST : <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple d'implémentation :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_1>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_1>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_2>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_2>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_3>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_3>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_3>>"
Sortie

Document de modèle de demande de test JSON : <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/TEMPLATE.json

Par exemple, à partir de l'exemple d'implémentation :
{
  "id": "1",
  "name": "Test connectivity invoking schema API",
  "method": "GET",
  "uri":
  {
    "scheme": "<<SCHEME>>",
    "host": "<<HOST>>",
    "path": "/admin/v1/Schemas"
  },
  "queryParameters":
  [
    {
      "name": "startIndex",
      "value": "1"
    },
    {
      "name": "count",
      "value": "1"
    }
  ],
  "headers":
  [
    {
      "name": "Content-Type",
      "value": "application/json"
    },
    {
      "name": "Authorization",
      "value": "<<CREDENTIALS>>"
    }
  ]
}

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 vérifier leur exactitude pendant le temps de paramétrage lui-même.

Pour résoudre ce problème, le module grc-test-infra a été introduit. Ce module inclut 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 générique de demande et de réponse, capable de gérer tout appel d'API REST développé dans le module. Essentiellement, il interagit en interne avec les adresses de l'application cible et valide les réponses en fonction des modèles de réponse configurés.

Pour identifier et valider efficacement tous les modèles de demande et de réponse GRC configurés en vue de leur exactitude lors de la création, procédez comme suit :
  1. Développez des tests en suivant l'exemple présenté ci-dessous :
    test grc-test-essai-échantillon 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 première ligne du test consiste à obtenir le modèle de demande configuré en transmettant le nom connectedSystem, le nom d'entité et l'opération.
    • 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 la correspondance d'attributs.
    • Ensuite, les utilisateurs doivent simplement appeler la méthode utilitaire générique processAndValidateRequestAndResponseTemplate, qui valide en interne les modèles de demande et de réponse pour vérifier l'exactitude en appelant l'API et en mettant en correspondance sa réponse avec le modèle de réponse configuré.
    • Le test réussira si les modèles de demande et de réponse configurés sont correctement configurés ; sinon, il échouera, 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 d'implémentation à l'emplacement suivant : <SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java

  2. Ajoutez les prérequis suivants avant d'exécuter le test :
    1. Mettez à jour le fichier <SampleBase>/grc-test-infra/src/test/resources/config avec les valeurs suivantes pour votre environnement :
      [DEFAULT]
      user=<<USER>>
      fingerprint=<<FINGERPRINT>>
      key_file=<<PEM_FILE_RELATIVE_PATH>>
      tenancy=<<TENANCY>>
      region=<<REGION>>
    2. Mettez à jour le fichier <SampleBase>/grc-test-infra/src/test/resources/config.properties avec la valeur suivante pour votre environnement :
      connectedSystemName=<connectedSystemName>
    3. Ajoutez la clé SSH privée (fichier .pem) de la clé de signature d'API à l'emplacement suivant :
      <SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
  3. Exécutez le test développé et créez la fonction :
    1. Accédez au répertoire functions de l'exemple d'implémentation.
    2. Compiler et packager les fonctions
      mvn clean package-DisDevMode=true

Création et déploiement de la fonction

  1. Construisez votre fonction.
    cd <SampleBase>
    mvn package
    
  2. Déployez votre fonction sur OCI. Les étapes doivent être réalisées pour chaque fonction
    • grc-schéma-modèle
    • grc-request-template
    • modèle-réponse-grc
    • modèle-test-grc
    cd <SampleBase>/grc-schema-template
    fn -v deploy --app <ApplicationName>