Autorisations accordées aux conteneurs exécutant des fonctions

Découvrez les autorisations accordées aux conteneurs exécutant des fonctions avec le service des fonctions pour OCI.

Lorsqu'une fonction que vous avez déployée dans le service des fonctions pour OCI est appelée, elle s'exécute dans un conteneur. Les opérations qu'un conteneur peut exécuter sont déterminées par l'ID utilisateur (UID) et l'ID groupe (IDG) indiqués au démarrage du conteneur. Si aucun UID ou IDG n'est spécifié, le conteneur exécute les processus en tant qu'utilisateur racine, avec toutes les fonctions par défaut activées.

Lors du démarrage d'un conteneur pour exécuter une fonction, le service des fonctions pour OCI spécifie toujours un utilisateur nommé 'fn' avec un UID de 1000 et un nom de groupe 'fn' avec un IDG de 1000. Comme aucun privilège n'est accordé à l'UID 1000 et à l'IDG 1000, le conteneur (et la fonction qui s'exécute dedans) n'obtient pas les capacités par défaut indiquées dans la documentation sur Docker. En outre, le conteneur ne peut pas obtenir de privilèges.

En conséquence, ne créez pas et ne déployez pas des fonctions qui :

  • Dépendent de capacités qui sont indisponibles
  • Dépendent de l'élévation de privilège (par exemple, su, sudo ou setuid)

Si vous utilisez votre propre fichier Dockerfile, 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

Notez que si vous n'incluez pas les lignes groupadd et adduser dans l'exemple de fichier Dockerfile ci-dessus, le message d'erreur suivant s'affiche :

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