Configuración de OCI Serverless Fn para conectarse con la aplicación de reconocimiento de identidad basada en REST
¿Cómo utiliza OCI Functions el sistema orquestado REST genérico?
Oracle Access Governance aprovecha las integraciones de OCI Functions para la API de REST. Cada sistema REST orquestado genérico que cree está asociado a una función de OCI que contiene la lógica para procesar solicitudes y generar respuestas. Llama a las API de REST del sistema gestionado para las operaciones de conciliación y aprovisionamiento de datos cuando se disparan mediante Oracle Access Governance.
Para obtener más información sobre cómo utilizar OCI Functions, consulte Oracle Cloud Infrastructure Functions.
Configuración del arrendamiento para activar OCI Functions
Para poder utilizar OCI Functions para crear y desplegar funciones, debe crear recursos de Oracle Cloud Infrastructure para soportar esto. Entre los recursos que debe crear se incluyen una cuenta de usuario, un grupo al que pertenecerá la cuenta de usuario, un compartimento, una red virtual en la nube (VCN), almacenes y secretos, y políticas para otorgar al grupo (y a las cuentas de usuario que le pertenecen) acceso a recursos relacionados con la función. Si ya existen recursos adecuados, no es necesario crear otros nuevos.
Crear compartimento
- Conéctese a la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
- Abra el menú de navegación y seleccione Identity & Security → Identity → Compartments.
- Seleccione Crear compartimento y agregue un compartimento, por ejemplo ocifn_compartment: para obtener más información sobre la creación de un compartimento, consulte Para crear un compartimento
Cree un compartimento propio:
- Recursos de la red
- Recursos relacionados con la función
Crear VCN y subredes
- Conéctese a la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
- Abra el menú de navegación y seleccione Networking → Virtual cloud networks.
- Seleccione Iniciar asistente de VCN para crear una nueva VCN.
- En el cuadro de diálogo, seleccione Create VCN with Internet Connectivity y haga clic en Start VCN Wizard.
- En el asistente, introduzca los siguientes detalles:
- Nombre de VCN: introduzca el nombre de la VCN, por ejemplo, ocifn_vcn.
- Compartimento: introduzca el compartimento en el que se crearán los recursos de la VCN, por ejemplo ocifn_compartment.
- Haga clic en Siguiente y, a continuación, en Crear para crear la VCN y los recursos de red relacionados.
Para obtener más información sobre todas las opciones al crear la VCN, consulte Creación de la VCN y las subredes que se deben utilizar con OCI Functions.
Crear OCI Vault y secreto
Si no tiene un almacén adecuado en el que almacenar las credenciales de cliente:
- Inicie sesión en la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
- Abra el menú de navegación y seleccione Identity & Security → Key Management & Secret Management.
- Haga clic en Crear almacén.
- Seleccione el compartimento en el que se creará el almacén y asigne un nombre al almacén. Haga clic en Crear almacén.
- Abra el almacén que ha creado y haga clic en Crear clave. Cree la clave en el mismo compartimento en el que ha creado el almacén. Asigne un nombre a la clave y haga clic en Create Key.
- Desde el menú Recursos, seleccione Secretos. Haga clic en Crear secreto.
- En la página Crear secreto, agregue detalles para el compartimento, el nombre y la descripción. Seleccione la clave que ha creado en la lista desplegable Clave de cifrado. Seleccione la opción Generación manual de secretos e introduzca el código de cliente y el secreto de cliente en uno de los siguientes formatos en el campo Contenido secreto.
-
Autorización basada en OAuth
Para ver el código de ejemplo para crear un token de autorización para la autorización basada en OAuth, consulte OAuth Authorization - Sample Token Creation Code.
{ "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa", "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" } -
Autorización Básica
.
{ "username": "69b48365-14e2-430a-bd75-171f89c158fa", "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" }
-
Autorización basada en OAuth
- Seleccione Crear secreto para guardar los cambios.
El secreto que ha creado se puede utilizar para transferir secretos de cliente en la función de solicitud. Seleccione el secreto que ha creado y copie el valor del OCID del secreto, que tendrá un aspecto similar a ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0.
<SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml y agregue los detalles del secreto y la región, por ejemplo:secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"
Para obtener más información sobre los secretos de OCI Vault, consulte Gestión de secretos de Vault.
Crear o actualizar un grupo dinámico
Para utilizar OCI Vault y los servicios secretos, la función debe formar parte de un grupo dinámico. Para obtener más información sobre cómo crear el grupo dinámico, siga las instrucciones proporcionadas en Gestión de grupos dinámicos.
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }
Crear política para OCI Vault y el secreto
Cree una nueva política que permita al grupo dinámico creado en el paso anterior leer secret-family en su arrendamiento. Para obtener más información sobre la creación de políticas de OCI, consulte Sintaxis de políticas.
- Inicie sesión en la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
- Abra el menú de navegación y seleccione Identity & Security → Identity → Policies.
- Seleccione Crear política, especifique un nombre para la política, por ejemplo ocifn_policy, y seleccione el compartimento raíz del arrendamiento.
- Agregue una sentencia de política similar a:
Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy
Crear política para grupo y servicio
- Conéctese a la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
- Abra el menú de navegación y seleccione Identity & Security → Identity → Policies.
- Seleccione Crear política, especifique un nombre para la política, por ejemplo ocifn_policy, y seleccione el compartimento raíz del arrendamiento.
- Mediante Policy Builder, seleccione Functions en la lista Casos de uso de política y base la política en la plantilla Permitir a los usuarios crear, desplegar y gestionar funciones y aplicaciones.
- Seleccione el grupo creado anteriormente, ocifn_group y ocifn_compartment para la ubicación. Esto debería proporcionarle una sentencia de política similar 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'
Para obtener más información sobre la creación de políticas para OCI Functions, consulte Creación de políticas para controlar el acceso a los recursos relacionados con funciones y de red
Creación de una aplicación para agrupar sus funciones de OCI
En OCI Functions, una aplicación es una agrupación lógica de funciones. Las propiedades que especifique para una aplicación determinan la asignación y configuración de recursos para todas las funciones de esa aplicación. Tiene que crear una función en una aplicación, por lo que debe existir al menos una aplicación para poder crear una función en OCI Functions.
- Conectarse a la consola de Oracle Cloud Infrastructure como desarrollador de funciones.
- Abra el menú de navegación y seleccione Developer Services → Functions → Applications.
- Seleccione el compartimento que está utilizando para las funciones del sistema orquestadas de REST genéricas.
- Haga clic en Create application.
- Agregue un nombre para la aplicación, por ejemplo, agcs-generic-rest-connector. Desplegará las funciones en esta aplicación y especificará esta aplicación al llamar a la función.
- Seleccione la VCN y la subred en las que se va a ejecutar la función.
- Haga clic en Crear.
Para obtener más información sobre la creación de aplicaciones con OCI Functions, consulte Creación de aplicaciones.
Configurar entorno para desarrollar funciones de OCI
Para crear y desplegar OCI Functions, debe instalar y configurar un entorno de desarrollo.
- Instalar e iniciar Docker
- Configurar clave de firma de API y perfil de OCI
- Instalación de la interfaz de línea de comandos (CLI) de Fn Project
- Configurar proveedor de contexto de CLI de Fn Project
- Completar configuración de contexto de la CLI de Fn Project
- Generar token de autorización
- Iniciar sesión en el registro
Una vez configurado el entorno de desarrollo, puede empezar a desarrollar y desplegar funciones para el sistema REST Orchestrated System genérico.
Desarrollo y despliegue de funciones en OCI
Para desplegar el sistema REST orquestado genérico, debe desarrollar y desplegar una función de OCI que le permita conectarse al sistema consciente de la identidad que desea integrar con Oracle Access Governance mediante REST.
Para desarrollar y desplegar OCI Functions para su uso con el sistema REST Orchestrated System genérico:
Configurar implementación de ejemplo
Para ayudar con el desarrollo de sus funciones de OCI, se proporciona una implantación de ejemplo con el sistema REST Orchestrated System genérico. Para descargar este ejemplo, debe seguir las instrucciones proporcionadas en el procedimiento Select System (Seleccionar sistema).
En los detalles que siguen, el directorio en el que ha descomprimido la implantación de ejemplo se denomina
<SampleBase>. Utilice esta opción para localizar los archivos mencionados. Por ejemplo:Si descomprime la implementación de ejemplo en un directorio, por ejemplo, /myagfunctions, el archivo <SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml se puede encontrar en /myagfunctions/grc-schema-template/src/main/resources/schema/config.yaml.
- idm-agcs-serverless-getting-started-sample: se trata de un ejemplo básico y fácil de entender con un código mínimo, que muestra cómo funcionan las funciones. Este caso de uso es ideal para los clientes que necesitan integrar una única aplicación con el conector REST genérico, lo que requiere una configuración mínima. La configuración inicial se realiza con una aplicación de Oracle Identity Cloud Service (IDCS). Los pasos detallados para configurar y desplegar esta función se pueden encontrar en el archivo `README.md` de este directorio.
- idm-agcs-serverless-IDCS-application-sample: este ejemplo se centra en el ejemplo de aplicación de IDCS con una configuración mínima. Incluye el marco para agregar más aplicaciones en el futuro dentro de esta función. Los pasos de configuración y despliegue se detallan en el archivo `README.md` ubicado en este directorio.
- idm-agcs-serverless-azuread-application-sample: este ejemplo es específicamente para clientes que necesitan un ejemplo de aplicación AzureAD con una configuración mínima. Contiene el marco para agregar más aplicaciones en el futuro dentro de esta función. Los pasos detallados para configurar y desplegar esta función están disponibles en el archivo `README.md` dentro de este directorio.
- idm-agcs-serverless-multi-application-sample: este ejemplo es para clientes que necesitan ejemplos de aplicaciones IDCS y AzureAD con una configuración mínima. Incluye el marco para agregar más aplicaciones en el futuro dentro de esta función. El archivo `README.md` de este directorio proporciona todos los pasos necesarios para configurar y desplegar esta función.
Creación de funciones para la aplicación
Cree las funciones para su propio sistema consciente de la identidad basado en REST, haciendo referencia a las plantillas de referencia y configurando las funciones como se definen a continuación, con valores específicos para su aplicación.
| Artículo | Descripción |
|---|---|
| Entrada | Nombre del sistema orquestado |
| Configuración |
Lista de sistemas de reconocimiento de identidad REST personalizados configurados: Por ejemplo, de la implantación de ejemplo:
Lista de sistemas orquestados enlazados al sistema de reconocimiento de identidad REST personalizado: Por ejemplo, de la implantación de ejemplo:
|
| Salida |
Documento de plantilla de esquema JSON, con uno o más esquemas de entidad, incluido cualquiera de los siguientes tipos de entidad:
Para ver un ejemplo de la implementación de ejemplo, consulte Salida de esquema. |
| Artículo | Descripción |
|---|---|
| Entrada |
|
| Configuración |
Lista de sistemas de reconocimiento de identidad REST personalizados configurados: Por ejemplo, de la implantación de ejemplo:
Lista de sistemas orquestados enlazados al sistema de reconocimiento de identidad REST personalizado: Por ejemplo, de la implantación de ejemplo:
|
| Salida |
Documento de plantilla de solicitud de JSON para entidades y operaciones definidas:
Entidades
Operaciones
Para ver un ejemplo de la implementación de ejemplo, consulte Request Output (Salida de solicitud). |
| Artículo | Descripción |
|---|---|
| Entrada |
|
| Configuración |
Lista de sistemas de reconocimiento de identidad REST personalizados configurados: Por ejemplo, de la implantación de ejemplo:
Lista de sistemas orquestados enlazados al sistema de reconocimiento de identidad REST personalizado: Por ejemplo, de la implantación de ejemplo:
|
| Salida |
Documento de plantilla de respuesta JSON para entidades y operaciones definidas:
Entidades
Operaciones
Para ver un ejemplo de la implementación de ejemplo, consulte Response Output. |
| Artículo | Descripción |
|---|---|
| Entrada | Nombre del sistema orquestado |
| Configuración |
Lista de sistemas de reconocimiento de identidad REST personalizados configurados: Por ejemplo, de la implantación de ejemplo:
Lista de sistemas orquestados enlazados a la aplicación de reconocimiento de identidad REST personalizada: Por ejemplo, de la implantación de ejemplo:
|
| Salida |
Documento de plantilla de solicitud de prueba JSON: Por ejemplo, de la implantación de ejemplo:
|
Guía del módulo de infraestructura de prueba
Las plantillas de solicitud y respuesta son complejas y se pueden producir errores durante el desarrollo. Es crucial identificar y validar todas las plantillas de solicitud y respuesta configuradas para que sean correctas durante el tiempo de creación en sí.
Para abordar este desafío, se introdujo el módulo grc-test-infra. Este módulo incluye pruebas correspondientes a cada plantilla de solicitud y respuesta configurada. Estas pruebas tienen como objetivo verificar las solicitudes realizadas a la API de REST de la aplicación de destino y las respuestas recibidas. Para lograr esto, las pruebas utilizan una utilidad, como un procesador genérico de solicitud y respuesta, capaz de manejar cualquier llamada de API de REST desarrollada dentro del módulo. Básicamente, interactúa internamente con los puntos finales de la aplicación de destino y valida las respuestas en función de las plantillas de respuesta configuradas.
- Desarrolle pruebas siguiendo el ejemplo que se describe a continuación:ensayo de muestras de 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 primera línea dentro de la prueba es obtener la plantilla de solicitud configurada transfiriendo el nombre, el nombre de entidad y la operación connectedSystem.
- La segunda línea obtiene la plantilla Response configurada mediante parámetros similares.
- Los usuarios deben transferir los atributos necesarios en la plantilla de solicitud colocándolos en la asignación de atributos.
- A continuación, los usuarios solo tienen que llamar al método de utilidad genérica processAndValidateRequestAndResponseTemplate, que valida internamente las plantillas de solicitud y respuesta para que sean correctas llamando a la API y asignando su respuesta a la plantilla de respuesta configurada.
- La prueba se superará si las plantillas de solicitud y respuesta configuradas están configuradas correctamente; de lo contrario, fallará, lo que permitirá a los usuarios ver la razón del fallo y corregir las plantillas según corresponda.
El archivo de prueba de ejemplo se puede encontrar en la implementación de ejemplo en la siguiente ubicación:
<SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java - Agregue los siguientes requisitos previos antes de ejecutar la prueba:
- Actualice el archivo
<SampleBase>/grc-test-infra/src/test/resources/configcon los siguientes valores para su entorno:[DEFAULT] user=<<USER>> fingerprint=<<FINGERPRINT>> key_file=<<PEM_FILE_RELATIVE_PATH>> tenancy=<<TENANCY>> region=<<REGION>> - Actualice el archivo
<SampleBase>/grc-test-infra/src/test/resources/config.propertiescon el siguiente valor para su entorno:connectedSystemName=<connectedSystemName> - Agregue la clave SSH privada (archivo .pem) para la clave de firma de API a la siguiente ubicación:
<SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
- Actualice el archivo
- Ejecute la prueba desarrollada y cree la función:
- Navegue hasta el directorio
functionsde la implementación de ejemplo. - Compilar y empaquetar las funciones
mvn clean package-DisDevMode=true
- Navegue hasta el directorio
Creación y despliegue de la función
- Construya su función.
cd <SampleBase> mvn package - Despliegue su función en OCI. Los pasos deben llevarse a cabo para cada función
- grc-esquema-plantilla
- grc-solicitud-plantilla
- plantilla de respuesta de grupo
- grc-test-plantilla
cd <SampleBase>/grc-schema-template fn -v deploy --app <ApplicationName>