Rotación de secreto de base de datos sin función de cartera
Descubra cómo utilizar la función predefinida Rotación de secretos de base de datos sin cartera en OCI Functions para rotar secretos mediante una conexión TLS a la base de datos.
Casos de Uso Común
Utilice la rotación de secretos de base de datos sin PBF de cartera para rotar automáticamente secretos de la base de datos mediante la creación de una conexión JDBC TLS sin una cartera.
Los servicios relacionados con la función Rotación de secreto de base de datos sin cartera incluyen:
Ámbito
Las consideraciones de ámbito para esta función incluyen:
- La función predefinida se puede utilizar con cualquier base de datos que soporte una URL de JDBC.
- El servicio secreto utiliza la función creada por la función creada previamente para rotar los secretos de la base de datos.
Requisitos y recomendaciones
A continuación, se muestran las mejores prácticas al utilizar esta función incorporada:
- Establezca el tiempo de espera de la función predefinida en 300 segundos.
- Asegúrese de que la VCN enlazada a la aplicación facilita el acceso a otros servicios de OCI mediante un gateway de servicio, un gateway de Internet o un gateway de NAT.
- Asegúrese de que la subred asociada a la VCN tenga una tabla de rutas y una lista de seguridad.
- Asegúrese de que la tabla de rutas de la subred incluya una regla que utilice un gateway de servicio creado dentro de la VCN. Asegúrese de que el gateway de servicios tiene acceso a los servicios de OCI de la región para la que está configurando rotaciones secretas.
- Asegúrese de que la lista de seguridad de la subred incluya una regla de salida que tenga un destino definido en el gateway de servicio creado dentro de la VCN.
Asegúrese de haber configurado el acceso de red para la base de datos autónoma a fin de permitir las solicitudes entrantes de la aplicación en la que se va a crear la función incorporada, de la siguiente forma:
- Al utilizar la consola de OCI para crear o actualizar la base de datos autónoma, muestre el área Seleccionar acceso de red o el área Actualizar acceso de red de la página. Para obtener más información, consulte la documentación de Autonomous Database Serverless.
- Seleccione uno de los siguientes tipos de acceso de red:
- Permitir acceso seguro desde cualquier lugar: seleccione esta opción si desea que se acceda a la base de datos autónoma desde Internet.
- Acceso seguro solo desde IP y VCN permitidas: seleccione esta opción si solo desea que se acceda a la base de datos autónoma desde las VCN y las IP en una lista de control de acceso (ACL). Agregue una o más reglas de control de acceso, según la red desde la que desee acceder a la base de datos autónoma.
- Solo acceso de punto final privado: seleccione esta opción si desea que se acceda a la base de datos autónoma desde un punto final privado dentro de una VCN de OCI. Seleccione la VCN y la subred desde la que desea acceder a la base de datos autónoma.
Configuración de la rotación de secreto de base de datos sin función de cartera
Para configurar una función de rotación de secretos de base de datos sin cartera, realice los siguientes pasos:
El cuadro de diálogo de despliegue muestra las tareas para desplegar la función (consulte Finalización del despliegue de funciones incorporadas).
Opciones de Configuración
Permisos
La ejecución de una función requiere determinadas políticas de IAM.
Para la función Rotación de secreto de base de datos sin cartera, debe crear un grupo dinámico y configurar una política de IAM para permitir que el servicio de rotación de secretos llame a la función. Para definir las políticas adecuadas, realice los siguientes pasos:
- Creación de un grupo dinámico con la regla:
resource.type='vaultsecret'
Esta regla incluye todos los secretos del almacén en el grupo dinámico. Puede limitar qué secreto de almacén se incluye en el grupo dinámico mediante una regla más restrictiva. Por ejemplo:
resource.id='<secret-id>'
- Configure una política de IAM que permita a los recursos incluidos en el grupo dinámico llamar a funciones. Por ejemplo:
Allow dynamic-group <vs-dynamic-group-name> to manage functions-family in tenancy
Nota
Sustituya<vs-dynamic-group-name>
por el nombre del grupo dinámico que ha creado para el secreto de almacén.
Además, si ha seleccionado la opción No crear un grupo dinámico y una política de IAM al crear la función, debe definir el grupo dinámico y la política de IAM usted mismo para permitir que la función gestione secretos. Para definir las políticas adecuadas, realice los siguientes pasos:
- Creación de un grupo dinámico con la regla:
resource.type='fnfunc'
Esta regla incluye todas las funciones del grupo dinámico. Puede limitar qué función se incluye en el grupo dinámico mediante una regla más restrictiva. Por ejemplo:
resource.id='<function-ocid>'
- Configure una política de IAM mediante el grupo dinámico:
Allow dynamic-group <dynamic-group-name> to manage secret-family in tenancy
Puede limitar qué secretos de almacén puede gestionar la función mediante una política más restrictiva. Por ejemplo:
Allow dynamic-group <dynamic-group-name> to manage secret-family in compartment <compartment-name> where target.secret.id = "<secret-ocid>"
Sustituya
<function-ocid>
por el OCID de la función que ha creado en los pasos anteriores. Sustituya
<dynamic-group-name>
por el nombre del grupo dinámico que ha creado con el OCID de la función.Sustituya
<compartment_ocid>
por el OCID del compartimento que contiene la función.Llamando a esta función
El servicio secreto llamaría a la función creada mediante este PBF para rotar el secreto.
- Cree una función con este PBF y copie el ID de función.
-
- Abra el menú de navegación, seleccione Identidad y seguridad y, a continuación, seleccione Almacén.
- En Ámbito de lista, seleccione un compartimento que contenga los secretos que ha creado en un almacén.
-
En la lista de secretos, seleccione un nombre de secreto que necesite rotar mediante este PBF o cree un nuevo secreto.
- Para crear un nuevo secreto, consulte Creación de un secreto.
- Para actualizar un secreto existente, consulte Actualización de un secreto.
- Seleccione Tipo de sistema de destino como Función para las rotaciones.
- Agregue el ID de función copiado del paso 1 como ID de sistema de destino.
- Asegúrese de que el secreto cumpla estos requisitos:
- La primera versión del secreto se debe crear manualmente. Seleccione Generación de secreto manual con el contenido del secreto en el siguiente formato JSON:
{ "username": "<required: username>", "password": "<required: password>", "connectionString": "<required: DB connection string>" }
- La contraseña debe ser la misma que se define para que se rote la base de datos.
- Después de la creación correcta del secreto, se debe activar Generación automática de secretos para que el servicio secreto pueda generar automáticamente las versiones posteriores del secreto.
- Edite el secreto recién creado, active Generación automática de secretos y proporcione el contenido del secreto en el siguiente formato JSON:
{ "username": "<required: username>", "password": "%GENERATED_PASSPHRASE%", "connectionString": "<required: DB connection string>" }
- En Generación automática de secretos, la contraseña se proporciona como
%GENERATED_PASSPHRASE%
para que el servicio secreto pueda generar automáticamente la contraseña en este campo. - El nombre de usuario y la contraseña deben establecer una conexión con la base de datos con el formato:
jdbc:oracle:thin:@<connectionString>?user=<username>&password=<example-password>
- Asegúrese de utilizar la conexión TLS. Nota
Esta función no es compatible con la conexión MTLS.
- La primera versión del secreto se debe crear manualmente. Seleccione Generación de secreto manual con el contenido del secreto en el siguiente formato JSON:
Solución de Problemas
Códigos de estado comunes de OCI Functions
En la siguiente tabla se resumen los errores comunes de OCI Functions que puede encontrar al trabajar con funciones predefinidas:
Código de Error | Mensaje de Error | Acción |
---|---|---|
200 | Correcto | Ninguno |
404 | NotAuthorizedOrNotFound | Verifique que las políticas necesarias estén configuradas (consulte Running Fn Project CLI commands devuelve un error 404). |
444 | Timeout |
La conexión entre el cliente y OCI Functions se interrumpió durante la ejecución de la función (consulte La llamada a una función hace que el cliente informe de un timeout y se muestra un error 444 en los logs de la función). Un reintento podría resolver el problema. Tenga en cuenta que la mayoría de los clientes tienen un timeout interno de 60 segundos. Incluso cuando el timeout de la función predefinida se establece en 300 segundos, es posible que se requiera lo siguiente:
Para obtener más información, consulte Cómo llamar a funciones. |
502 504 | (varios) | La mayoría de los problemas devuelven un código de estado 502 (consulte Invocación de una función que devuelve un mensaje de fallo de función y un error 502). Es posible que se resuelva un error 502 con el mensaje "error receive function response" al aumentar la asignación de memoria. Un 502 puede ocurrir ocasionalmente cuando la función está en algún estado transitorio. Un reintento podría resolver el problema. |
Para identificar aún más la causa, active las funciones de registro para la función predefinida (consulte Almacenamiento y visualización de logs de funciones). Para obtener información detallada sobre la resolución de problemas de una función, consulte Solución de problemas de OCI Functions.
Rotación de secreto de base de datos sin mensajes de error de función predefinidos de cartera
En la siguiente tabla se resumen los errores que se pueden encontrar al trabajar con esta función predefinida:
Escalón | Código de Estado | Mensaje de Respuesta | Descripción |
---|---|---|---|
VERIFY_CONNECTION | 200 | La conexión con la versión del secreto pendiente se ha realizado correctamente. | Existe una versión pendiente del secreto y la conexión a la base de datos se ha establecido correctamente con esa versión. |
La conexión con la versión del secreto actual se ha realizado correctamente. | La conexión a la base de datos se ha realizado correctamente con la versión del secreto actual. | ||
400 | La conexión con la versión del secreto actual no se ha realizado correctamente. | Credenciales no válidas en la versión del secreto actual o en cualquier versión pendiente (si existe), o la configuración de red para la conexión entre la función y la base de datos es incorrecta. | |
404 | No se ha encontrado la versión actual del secreto | No existe ninguna versión actual del secreto con el secretId proporcionado. | |
500 | <MENSAJE DE EXCEPCIÓN> | Se lanza cuando se produce alguna excepción al verificar la conexión. | |
CREATE_PENDING_VERSION | 200 | La versión pendiente ya existe. | Ya existe una versión pendiente del secreto. No crea una nueva versión pendiente. |
La versión pendiente se ha creado correctamente. | No existe una versión pendiente, se crea una nueva versión pendiente del secreto. | ||
<CÓDIGO DE EXCEPCIÓN> | Fallo al crear la versión pendiente. | Excepción del cliente de DP al intentar crear una nueva versión pendiente del secreto. | |
500 | <MENSAJE DE EXCEPCIÓN> | Se lanza cuando se produce alguna excepción al crear una nueva versión. | |
UPDATE_TARGET_SYSTEM | 200 | El sistema de destino ya se ha actualizado. | La base de datos se puede conectar mediante la versión del secreto pendiente, lo que indica que esta versión se ha utilizado anteriormente para actualizar las credenciales de la base de datos. |
Sistema de destino actualizado correctamente | Las credenciales de base de datos se han actualizado con la versión pendiente del secreto. | ||
404 | No existe ninguna versión pendiente. | No existe ninguna versión pendiente del secreto que se pueda utilizar para actualizar el sistema de destino. | |
500 | Fallo de actualización del sistema de destino. | Se ha intentado actualizar el sistema de destino con las nuevas credenciales de versión pendientes, pero ha fallado la verificación de la conexión a la base de datos con esas credenciales. | |
<MENSAJE DE EXCEPCIÓN> | Se activa cuando se produce alguna excepción al actualizar el sistema de destino. | ||
PROMOTE_PENDING_VERSION | 200 | ¡Versión pendiente ascendida! | La versión pendiente se ha ascendido correctamente a actual. |
500 | <MENSAJE DE EXCEPCIÓN> | Se lanza cuando se produce alguna excepción al promocionar la versión pendiente. |
Para identificar aún más la causa, active las funciones de registro para la función predefinida (consulte Almacenamiento y visualización de logs de funciones).
Consejos de análisis de logs
Todas las funciones predefinidas proporcionan una opción para especificar el nivel de registro como parámetro de configuración. Puede definir el nivel de registro en DEBUG
para obtener más información.
Dado que una aplicación tiene varias funciones, las entradas del log de funciones predefinidas se identifican con el prefijo "PBF | <PBF NAME> ".
Por ejemplo, una entrada de log para la rotación de secreto de base de datos sin la función incorporada de cartera tiene un aspecto similar al siguiente:
"PBF | Database Secret Rotation without Wallet | INFO | 2024-01-31T18:06:50.809Z | Fetching details from Events JSON"