Permisos otorgados a contenedores que ejecutan funciones
Obtenga información sobre los permisos otorgados a los contenedores que ejecutan funciones con OCI Functions.
Cuando se llama a una función desplegada en OCI Functions, se ejecuta dentro de un contenedor. Las operaciones que puede realizar un contenedor están determinadas por el ID de usuario (UID) y el ID de grupo (GID) especificados cuando se inicia el contenedor. Si no se especifica un UID o GID, el contenedor ejecuta procesos como usuario raíz con todas las capacidades por defecto activadas.
Al iniciar un contenedor para ejecutar una función, OCI Functions siempre especifica un usuario denominado "fn" con un UID de 1000 y un nombre de grupo "fn" con un GID de 1000. No se ha otorgado ningún privilegio al UID 1000 ni al GID 1000, por lo que el contenedor (y la función en ejecución dentro de él) no adquiere las capacidades por defecto que se muestran en la documentación de Docker. Además, el contenedor no puede obtener privilegios.
Como resultado, no cree ni despliegue funciones que:
- Dependan de las capacidades que no están disponibles.
- Dependan de la elevación de privilegios (por ejemplo,
su
,sudo
osetuid
).
Si utiliza su propio 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
Tenga en cuenta que si no incluye las líneas groupadd
y adduser
en el dockerfile de ejemplo anterior, verá el siguiente mensaje de error:
cx_Oracle.DatabaseError: ORA-12560: TNS:protocol adapter error