Berechtigungen für Container, die Funktionen ausführen

Informieren Sie sich über die Berechtigungen, die Containern erteilt werden, die Funktionen mit OCI Functions ausführen.

Wird eine in OCI Functions bereitgestellte Funktion aufgerufen, wird sie in einem Container ausgeführt. Die Vorgänge, die ein Container ausführen kann, werden durch die Benutzer-ID (UID) und die Gruppen-ID (GID) bestimmt, die bei Start des Containers angegeben wurde. Wenn keine UID oder GID angegeben ist, führt der Container Prozesse als Root-Benutzer aus, wobei alle Standardfunktionen aktiviert sind.

Wenn Sie einen Container zum Ausführen einer Funktion starten, gibt OCI Functions immer einen Benutzer mit dem Namen "fn" mit der UID 1000 und einen Gruppennamen "fn" mit der GID 1000 an. Der UID 1000 und der GID 1000 werden keine Berechtigungen erteilt, sodass der Container (und die darin ausgeführte Funktion) die in der Docker-Dokumentation aufgeführten Standardfunktionen nicht anfordern kann. Außerdem kann der Container keine Berechtigungen einholen.

Sie sollten daher keine Funktionen erstellen und bereitstellen, die:

  • von nicht verfügbaren Funktionen abhängig sind.
  • von einer Berechtigungserweiterung abhängig sind (Beispiel: su, sudo oder setuid).

Wenn Sie Ihre eigene Dockerfile verwenden, nehmen Sie die folgenden Zeilen auf:

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

Beispiel:

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

Wenn Sie die Zeilen groupadd und adduser nicht in die obige Beispiel-Dockerfile aufnehmen, wird die folgende Fehlermeldung angezeigt:

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