使用非匿名 authLevel 在 Docker 中触发 Azure 函数

Mau*_*kom 5 docker azure-functions azure-functions-runtime

我正在 Docker 容器中使用 Http 触发的 Azure 函数。到目前为止,我在设置此设置时找到的所有教程和指南都将 Azure 函数配置authLevel"anonymous.

仔细阅读此博客后,似乎也可以(虽然棘手)配置其他身份验证级别。不幸的是,承诺的后续博客文章尚未(尚未)编写。

谁能帮我澄清一下我将如何进行设置?

Kai*_*ter 7

为了控制功能主机在启动时使用的主密钥 - 而不是生成随机密钥 - 准备我们自己的host_secrets.json文件,如

{
    "masterKey": {
        "name": "master",
        "value": "asGmO6TCW/t42krL9CljNod3uG9aji4mJsQ7==",
        "encrypted": false
    },
    "functionKeys": [{
        "name": "default",
        "value": "asGmO6TCW/t42krL9CljNod3uG9aji4mJsQ7==",
        "encrypted": false
    }]
}
Run Code Online (Sandbox Code Playgroud)

然后将此文件输入到 Function 主机 ( Dockerfile)的指定 secrets 文件夹中:

对于 V1 函数(假设您的运行时根目录是 C:\WebHost):

...
ADD host_secrets.json C:\\WebHost\\SiteExtensions\\Functions\\App_Data\\Secrets\\host.json
...
Run Code Online (Sandbox Code Playgroud)

对于 V2 函数(假设您的运行时根目录是 C:\runtime):

...
ADD host_secret.json C:\\runtime\\Secrets\\host.json

USER ContainerAdministrator
RUN icacls "c:\runtime\secrets" /t /grant Users:M
USER ContainerUser

ENV AzureWebJobsSecretStorageType=files
...
Run Code Online (Sandbox Code Playgroud)

功能键可用于调用受保护的功能,如.../api/myfunction?code=asGmO6TCW/t42krL9CljNod3uG9aji4mJsQ7==

主密钥可用于调用 Functions Admin APIKey management API

我的博客中,我描述了将 V1 和更高版本的 V2 Functions 运行时引入Docker容器并在 Service Fabric 中托管它们的整个过程。

对于 Windows 上的 V3 函数:

ENV FUNCTIONS_SECRETS_PATH=C:\Secrets
ENV AzureWebJobsSecretStorageType=Files
ADD host_secrets.json C:\\Secrets\\host.json
Run Code Online (Sandbox Code Playgroud)

对于 Linux 上的 V3 函数:

RUN mkdir /etc/secrets/
ENV FUNCTIONS_SECRETS_PATH=/etc/secrets
ENV AzureWebJobsSecretStorageType=Files
ADD host_secrets.json /etc/secrets/host.json
Run Code Online (Sandbox Code Playgroud)