Autorisations accordées aux conteneurs exécutant des fonctions

Découvrez les droits d'accès accordés aux conteneurs exécutant des fonctions avec OCI Functions.

Lorsqu'une fonction déployée vers OCI Functions est appelée, elle est exécutée dans un conteneur. Les opérations qu'un conteneur peut effectuer sont déterminées par l'ID utilisateur (UID) et l'ID de groupe (GID) indiqués lors du démarrage du conteneur. Si aucun UID ou GID n'est indiqué, le conteneur exécute les processus en tant qu'utilisateur root, avec toutes les fonctionnalités par défaut activées.

Lors du démarrage d'un conteneur pour exécuter une fonction, OCI Functions indique toujours un utilisateur nommé 'fn' avec un UID de 1000 et un nom de groupe 'fn' avec un GID de 1000. Aucun privilège n'est accordé à UID 1 000 et GID 1 000, de sorte que le conteneur (et la fonction qui s'y exécute) n'obtient pas les fonctionnalités par défaut répertoriées dans la documentation Docker. En outre, le conteneur ne peut obtenir aucun privilège.

Par conséquent, ne créez pas ni ne déployez de fonctions :

  • qui dépendent de fonctionnalités non disponibles,
  • qui dépendent de l'élévation des privilèges (par exemple, su, sudo ou setuid).

Si vous utilisez votre propre fichier Docker, incluez les lignes suivantes :

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

Par exemple :

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 vous n'incluez pas les lignes groupadd et adduser dans l'exemple de fichier Docker ci-dessus, le message d'erreur suivant s'affiche :

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