我正在Docker容器中使用Http触发的Azure函数。到目前为止,我发现的所有设置此教程的指南都将authLevel"
设置为anonymous
来配置Azure功能。
仔细阅读this blog之后,似乎也可以(尽管很棘手)配置其他身份验证级别。不幸的是,尚未编写承诺的后续博客文章。
任何人都可以帮助我阐明如何进行设置吗?
答案 0 :(得分:1)
要控制功能主机在启动时使用的主密钥-而不是生成随机密钥-准备我们自己的host_secrets.json
文件,如
{
"masterKey": {
"name": "master",
"value": "asGmO6TCW/t42krL9CljNod3uG9aji4mJsQ7==",
"encrypted": false
},
"functionKeys": [
{
"name": "default",
"value": "asGmO6TCW/t42krL9CljNod3uG9aji4mJsQ7==",
"encrypted": false
}
]
}
,然后将此文件输入到功能主机(Dockerfile
)的指定机密文件夹中:
用于V1功能(假设您的运行时根为C:\ WebHost):
...
ADD host_secrets.json C:\\WebHost\\SiteExtensions\\Functions\\App_Data\\Secrets\\host.json
...
用于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
...
功能键可用于调用受保护的功能,例如.../api/myfunction?code=asGmO6TCW/t42krL9CljNod3uG9aji4mJsQ7==
。
主键可用于调用函数Admin API和Key management API。
在my blog中,我描述了将V1和更高版本的V2 Functions运行时引入Docker
容器并将其托管在Service Fabric中的整个过程。
答案 1 :(得分:0)
我为我找到了一个解决方案,尽管这篇文章已经过时了。我的目标是使用 function authLevel 在 Docker 容器中运行 Http Trigger Azure 函数。为此,我使用以下 Docker 映像:来自 Docker hub 的 Azure Functions Python。
在我的存储库准备就绪后,我将创建的容器推送到 Azure 容器注册表。我想通过 Azure Function 运行我的无服务器容器。所以我遵循了 following post 并在我的 Azure 门户中创建了一个新的 Azure Functions。
因此,容器内容对应一个Azure Function Image,容器本身的操作由Azure Function通过Azure实现。这种方式可能并不总是流行,但提供了在那里托管容器的优势。可以通过 Deployment Center 从 Azure 容器注册表中轻松选择容器。
为了通过 function authLevel 访问容器映像,Azure Function ~3 不能创建主机密钥,因为它是在容器内管理的。所以我进行了如下操作:
"authLevel": "function",
"type": "httpTrigger",
azure-webjobs-secrets
我的功能名称
{“主密钥”:{ "name": "主人", "value": "myprivatekey", "encrypted": false }, "functionKeys": [ ] }
AzureWebJobsStorage = 存储帐户连接字符串
<块引用>WEBSITE_CONTENTAZUREFILECONNECTIONSTRING = 存储帐户连接字符串
<块引用>WEBSITE_CONTENTSHARE = 我的功能名称
从现在开始,存储的 Azure Function 主密钥可用。因此,容器 API 是通过 authLevel function 配置的,并且只能使用相应的密钥访问。
网址: https://my-function-name.azurewebsites.net/api/helloworld
HEADER: x-functions-key = myprivatekey