機能実行環境に付与される権限

OCI Functionsを使用してファンクション実行環境に付与されている権限を確認します。

OCI Functionsにデプロイしたファンクションが呼び出されると、実行環境で実行されます(たとえば、イメージベースのファンクションはコンテナ内で実行されます)。実行環境で実行できる操作は、環境の起動時に指定されたユーザーID (UID)およびグループID (GID)によって決まります。UIDまたはGIDが指定されない場合、プロセスはルート・ユーザーとして実行され、すべてのデフォルト機能が有効になります。

ファンクションの実行を開始するとき、OCI Functionsでは常に、ユーザー名「fn」にUIDが1000、グループ名「fn」にGIDが1000を指定します。UID 1000およびGID 1000には権限が付与されていないため、実行環境(およびこの環境で実行されているファンクション)はデフォルト機能を取得しません(たとえば、Dockerドキュメントにリストされているデフォルト・コンテナ機能)。また、実行環境では権限が取得されません。

そのため、次のようなファンクションは作成およびデプロイしないでください:

  • 使用できない機能に依存
  • 権限昇格(たとえば、su、sudoまたはsetuid)に依存する

イメージベースの関数の場合、独自のDockerfileを使用している場合は、次の行を含めます。

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

例:

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

前の例のDockerfileにイメージベース・ファンクションのgroupadd行とadduser行を含めない場合、次のエラー・メッセージが表示されることがあります。

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