Autorizzazioni concesse alle funzioni di esecuzione dei container

Scopri le autorizzazioni concesse ai container che eseguono funzioni con OCI Functions.

Quando viene richiamata una funzione distribuita in OCI Functions, viene eseguita all'interno di un contenitore. Le operazioni che un contenitore può eseguire sono determinate dall'ID utente (UID) e dall'ID gruppo (GID) specificati all'avvio del contenitore. Se non viene specificato un UID o un GID, il contenitore esegue i processi come utente root, con tutte le funzionalità predefinite abilitate.

Quando si avvia un contenitore per eseguire una funzione, OCI Functions specifica sempre un utente denominato 'fn' con un UID pari a 1000 e un nome di gruppo 'fn' con un GID pari a 1000. Non viene concesso alcun privilegio a UID 1000 e GID 1000, pertanto il contenitore (e la funzione in esecuzione al suo interno) non acquisisce le funzionalità predefinite elencate nella documentazione Docker. Inoltre, al contenitore viene impedito di ottenere privilegi.

Di conseguenza, non creare e distribuire funzioni che:

  • dipendono da funzionalità non disponibili
  • dipendono dalla quota altimetrica dei privilegi (ad esempio, su, sudo o setuid)

Se si utilizza il proprio Dockerfile, includere le seguenti righe:

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

Ad esempio:

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

Tenere presente che se non si includono le righe groupadd e adduser nel Dockerfile di esempio precedente, verrà visualizzato il seguente messaggio di errore:

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