System.UnauthorizedAccessException: доступ к пути 'C:\runtime\Secrets\host.json' запрещен в контейнере Windows функций Azure

На основе этого Dockerfile я запускаю среду выполнения функций Azure внутри контейнера Windows.

Я хочу принести свои секреты. Поэтому я добавляю свой собственный host.json в runtime\secrets папку и установите тип хранения files:

host_secret.json:

{
  "masterKey": {
    "name": "master",
    "value": "***fancy-code-for-host-admin-and-keys-api***",
    "encrypted": false
  },
  "functionKeys": [
    {
      "name": "default",
      "value": "***fancy-code-for-functions***",
      "encrypted": false
    }
  ]
}

Dockerfile:

....
ADD host_secret.json C:\\runtime\\Secrets\\host.json
ENV AzureWebJobsSecretStorageType=files
....

При запуске контейнера и приложения-функции оно не отвечает и показывает

Функция хоста не работает.

проверяя логи, которые я нахожу

System.UnauthorizedAccessException: доступ к пути 'C:\runtime\Secrets\host.json' запрещен

1 ответ

Решение

Контейнер работает как ContainerUser и, следовательно, этому пользователю нужен доступ к этому файлу.

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

Это дает возможность изменять права доступа пользователям внутри контейнера - группы. ContainerUser является членом.

Другие вопросы по тегам