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