Как разрешить ссылки KeyVault на секреты через настройки приложения в функциональных приложениях? - PullRequest
0 голосов
/ 25 сентября 2019

Я настроил отдельную среду тестирования, чтобы попытаться получить секреты приложения из хранилища ключей Azure.Ссылка @ Microsoft.KeyVault (...) в настройках приложения не разрешает ни секрет, ни текст ссылки, когда запускается тестовая функция для возврата переменных среды.

После this документация для создания службы приложения и аутентификации ее в хранилище ключей. Я создал управляемый идентификатор для своей функции, добавил его в AAD, создал специальную политику доступа для этого управляемого идентификатора с областью действия Get Secret в моем хранилище ключей,и пробовал оба с / без включения области чтения для приложения в качестве пользователя.

Запуск диагностического инструмента для разрешения ссылок на настройки приложения приложения функции не выдает никаких ошибок.Ввод параметра приложения в виде @ Microsoft.KeyVault (SecretUri = SecretUri)

или

@Microsoft.KeyVault(VaultName=myvault;SecretName=mysecret;SecretVersion={version})

, по-видимому, ничего не меняет.Я подождал до получаса, чтобы изменения в настройках реплицировались в Azure, и убедитесь, что сделанные мной изменения являются постоянными.

Вот мое приложение-функция для возврата переменных среды (написано на python):

import json
import logging
import os
import azure.functions as func


def main(req=None) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    try:
        name = [os.environ["CLIENTID"]]
    except:
        name=dict()

        for d in os.environ:
            name[d]=os.environ[d]
    if name:
        return func.HttpResponse("Params\n{}".format(json.dumps(name, sort_keys=True, indent=4)))
    else:
        return func.HttpResponse(
             "Please pass a name on the query string or in the request body",
             status_code=400
        )

Я ожидал, что смогу получить переменную среды CLIENTID.Вместо этого захват этой переменной завершается неудачей, и все переменные окружения возвращаются.Я намеренно возвращаю все переменные окружения, если не могу вернуть единственную переменную, так как хотел убедиться, что перехватил ее, если переменная была переименована или возникла проблема с типизацией / чувствительностью к регистру.

1 Ответ

1 голос
/ 26 сентября 2019

У меня та же проблема, что и у вас, я включил MSI для своей функции и предоставил все разрешения политики доступа в хранилище ключей Azure, но мне было отказано в доступе: enter image description here enter image description here

Я удалил элемент «CLIENTID» в настройках приложения, сохранил обновление и снова создал элемент «CLINETID», сохранил обновление.После успешного обновления настроек приложения нажмите кнопку «Изменить», и вы увидите, что его состояние было решено: enter image description here Результат теста: enter image description here Надеюсь, это поможет.

...