У меня есть бот Discord, который я использую для включения и выключения виртуальных машин Azure, и в настоящее время этот бот проверяет подлинность в Azure с помощью токена доступа, который я генерирую с помощью команды az CLI. Однако это означает, что время от времени мне приходится восстанавливать токен, что раздражает. Я хотел бы использовать что-то постоянное, например управляемое удостоверение, но этот бот не работает в Azure, он работает в локальном кластере k8s, и я бы хотел оставить его в таком виде. Есть ли какой-нибудь постоянный способ аутентификации бота в Azure, чтобы мне не приходилось повторно создавать токен аутентификации?
Помимо Service Principals есть еще один способ. Федеративные учетные данные — но их сложнее поддерживать для одного приложения Learn.microsoft.com/en-us/graph/api/resources/… Особенно с Kubernetes вы можете использовать удостоверение рабочей нагрузки, но для этого снова потребуется приложение Регистрация. Learn.microsoft.com/en-us/azure/aks/…
Создайте субъект-службу с секретом (ключом) или сертификатом для аутентификации. Затем сохраните это (безопасно) в своем кластере k8s и используйте для входа в Azure и получения токенов аутентификации: https://learn.microsoft.com/en-us/azure/developer/java/sdk/identity-service -принципал-аутентификация
Управляемое удостоверение Azure работает только в том случае, если код выполняется на одной виртуальной машине. Если код выполняется вне виртуальной машины, он не будет работать. В таких случаях вы можете использовать субъект службы, который служит аналогичной цели для удостоверений, работающих за пределами виртуальной машины.