Permissões Concedidas às Funções de Execução de Contêineres

Saiba mais sobre as permissões concedidas aos contêineres que executam funções com o OCI Functions.

Quando uma função que você implantou no OCI Functions é chamada, ela é executada dentro de um contêiner. As operações que um contêiner pode executar são determinadas pelo ID do usuário (UID) e pelo GID (ID do grupo) especificados quando o contêiner é iniciado. Se um UID ou GID não for especificado, o contêiner executará processos como o usuário raiz, com todos os recursos padrão ativados.

Ao iniciar um contêiner para executar uma função, o OCI Functions sempre especifica um usuário chamado 'fn' com um UID de 1000 e um nome de grupo 'fn' com um GID de 1000. Nenhum privilégio é concedido ao UID 1000 e GID 1000. Portanto, o contêiner (e a função em execução dentro dele) não adquire os recursos padrão listados na documentação do Docker. Além disso, o contêiner é impedido de obter privilégios.

Como resultado, não crie e implante funções que:

  • dependem dos recursos que estão indisponíveis
  • dependem da elevação do privilégio (por exemplo, su, sudo ou setuid)

Se você estiver usando seu próprio Dockerfile, inclua as seguintes linhas:

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

Por exemplo:

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

Observe que, se você não incluir as linhas groupadd e adduser no exemplo de Dockerfile acima, você verá a seguinte mensagem de erro:

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