Permisos otorgados a entornos de ejecución de funciones

Obtén más información sobre los permisos otorgados a los entornos de ejecución de funciones con OCI Functions.

Cuando se llama a una función que ha desplegado en OCI Functions, se ejecuta en un entorno de ejecución (por ejemplo, una función basada en imágenes se ejecuta dentro de un contenedor). Las operaciones que puede realizar el entorno de ejecución están determinadas por el ID de usuario (UID) y el ID de grupo (GID) especificados cuando se inicia el entorno. Si no se especifica un UID o GID, los procesos se ejecutan como usuario raíz y todas las capacidades por defecto están activadas.

Al iniciar un entorno de ejecución para ejecutar una función, OCI Functions siempre especifica un usuario denominado 'fn' con un UID de 1000 y un nombre a grupo 'fn' con un GID de 1000. No se han otorgado privilegios al UID 1000 ni al GID 1000, por lo que el entorno de ejecución (y la función que se ejecuta dentro de él) no adquiere las capacidades por defecto (por ejemplo, las capacidades por defecto del contenedor que se muestran en la documentación deDocker). Además, se impide que el entorno de ejecución obtenga privilegios.

Como resultado, no cree ni despliegue funciones que:

  • dependerá de las capacidades no disponibles
  • Dependan de la elevación de privilegios (por ejemplo, su, sudo o setuid).

Para las funciones basadas en imágenes, si utiliza su propio archivo Dockerfile, incluya las siguientes líneas:

groupadd --gid 1000 fn && \
adduser --uid 1000 --gid fn fn

Por ejemplo:

FROM oraclelinux:7-slim

RUN  yum -y install oracle-release-el7 oracle-nodejs-release-el7 && \
     yum-config-manager --disable ol7_developer_EPEL && \
     yum -y install oracle-instantclient19.3-basiclite nodejs && \
     rm -rf /var/cache/yum && \
     groupadd --gid 1000 fn && \
     adduser --uid 1000 --gid fn fn

WORKDIR /function
ADD . /function/
RUN npm install

CMD exec node func.js

Si no incluye las líneas groupadd y adduser en el archivo Dockerfile de ejemplo anterior para una función basada en imágenes, puede que aparezca el siguiente mensaje de error:

cx_Oracle.DatabaseError: ORA-12560: TNS:protocol adapter error