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
ousetuid
)
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