ошибка=”ошибка получения учетных записей для текущего пользователя или роли: ошибка ListSinks: WebIdentityErr: не удалось получить учетные данные\nпричина

Вопрос или проблема

Привет, я обновил тег, и после обновления потерял связь между Grafana и CloudWatch, я включил режим отладки и увидел ошибки получения регионов, я настроил Helm на автоматическую загрузку источника данных с регионом, и это сработало, но через несколько дней это перестало работать. Я не могу заставить это работать после этого, я уже несколько раз воссоздавал окружение, я уже вернул версию стека на 60.
Я уже следовал приведенному ниже руководству, чтобы проверить, не ошибся ли я где-то, и всё верно, просто всё перестало работать.
https://plainenglish.io/blog/understanding-webidentityerr-error-in-aws-lb

logger=accesscontrol t=2024-10-21T15:23:24.325086981Z level=debug msg="Оценка разрешений" id=user:1 orgID=1 permissions="action:datasources:query scopes:"
logger=secrets.kvstore t=2024-10-21T15:23:24.325147093Z level=debug msg="получено секретное значение из кэша" orgId=1 type=datasource namespace=CloudWatchTest2
logger=tsdb.cloudwatch endpoint=callResource pluginId=cloudwatch dsName=CloudWatchTest2 dsUID=cloudwatch2 uname=admin t=2024-10-21T15:23:24.335618333Z level=error msg="Ошибка обработки запроса ресурса" error="ошибка получения учетных записей для текущего пользователя или роли: ошибка ListSinks: WebIdentityErr: не удалось получить учетные данные\nвызвано: AccessDenied: не разрешено выполнять sts:AssumeRoleWithWebIdentity\n\tкод состояния: 403, id запроса: 77b679a2-1048-4e69-8e82-9866891cfb94"
logger=context userId=1 orgId=1 uname=admin t=2024-10-21T15:23:24.335706829Z level=error msg="Запрос завершен" method=GET path=/api/datasources/6/resources/accounts status=500 remote_addr=17.240.244.251 time_ms=16 duration=16.253871ms size=521 referer=https://xxxxxxxx/grafana/connections/datasources/edit/cloudwatch2 handler=/api/datasources/:id/resources/* status_source=downstream
logger=tsdb.cloudwatch endpoint=callResource pluginId=cloudwatch dsName=CloudWatchTest2 dsUID=cloudwatch2 uname=admin t=2024-10-21T15:23:24.343068525Z level=error msg="Не удалось получить регионы: " error="WebIdentityErr: не удалось получить учетные данные\nвызвано: AccessDenied: не разрешено выполнять sts:AssumeRoleWithWebIdentity\n\tкод состояния: 403, id запроса: f739b2b2-8103-4539-bc3c-ed5c3277309f"
logger=sqlstore t=2024-10-21T15:23:26.094048802Z level=debug msg="ReadReplica не настроен, используется основная SQLStore"
logger=sqlstore t=2024-10-21T15:23:26.094921065Z level=debug msg="ReadReplica не настроен, используется основная SQLStore"
logger=sqlstore t=2024-10-21T15:23:26.09568902Z level=debug msg="ReadReplica не настроен, используется основная SQLStore"
logger=accesscontrol t=2024-10-21T15:23:26.097495331Z level=debug msg="Оценка разрешений" id=user:1 orgID=1 permissions="action:datasources:query scopes:"
logger=datasources t=2024-10-21T15:23:26.097521823Z level=debug msg="Запрос источника данных через SQL store" uid=cloudwatch2 orgId=1
logger=secrets.kvstore t=2024-10-21T15:23:26.097979448Z level=debug msg="получено секретное значение из кэша" orgId=1 type=datasource namespace=CloudWatchTest2

После настройки доверенного с OIDC и добавления его в AWS Load Balancer в EKS аннотация должна работать, она начала работать, и ни с того ни с сего снова перестала работать, и я не знаю, что делать дальше.

Ответ или решение

Решение проблемы с ошибкой WebIdentityErr в Grafana для AWS CloudWatch

Ваша проблема связана с ошибкой аутентификации и авторизации при взаимодействии Grafana с Amazon CloudWatch через OIDC. Ниже приведены шаги, которые помогут вам выявить и устранить источник неисправности.

1. Причины возникновения ошибки

Ошибка, которую вы наблюдаете:

WebIdentityErr: failed to retrieve credentials caused by: AccessDenied: Not authorized to perform sts:AssumeRoleWithWebIdentity

указывает на проблемы с разрешениями в AWS. Конкретно, роль, которую Grafana пытается использовать для доступа к CloudWatch через веб-идентичность, не имеет необходимых прав.

2. Проверка конфигурации OIDC

  1. Параметры OIDC в AWS: Убедитесь, что настройки вашего OIDC правильно сконфигурированы в AWS:

    • Параметры URL, клиентский идентификатор и секрет OIDC корректно настроены.
    • Проверьте, правильно ли добавлены необходимые разрешения для sts:AssumeRoleWithWebIdentity.
  2. Роли и политики: Убедитесь, что роль, которую вы используете для доступа через OIDC, имеет политику, позволяющую выполнение действий на ресурсах AWS (в вашем случае — CloudWatch). Добавьте следующие разрешения:

    {
       "Version": "2012-10-17",
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "cloudwatch:*",
                   "logs:*",
                   "sts:AssumeRoleWithWebIdentity"
               ],
               "Resource": "*"
           }
       ]
    }

3. Проверка аннотаций в EKS LoadBalancer

Убедитесь, что аннотации, используемые в конфигурации вашего EKS LoadBalancer, применяются корректно. Например:

service.beta.kubernetes.io/aws-load-balancer-iam-role: arn:aws:iam::ACCOUNT_ID:role/YOUR_ROLE

Проверьте, соответствует ли IAM роль, указанная в аннотациях, всем необходимым условиям для выполнения sts:AssumeRoleWithWebIdentity.

4. Отладка доступа

Запустите следующие команды для диагностики:

  • Проверка роли:
    Проверьте, под какой ролью работает ваш под в Kubernetes:

    kubectl get pods -o=jsonpath='{.items[*].spec.serviceAccountName}'
  • Логи:
    Проверьте логи, чтобы получить дополнительную информацию. Возможно, вы получите подсказки о том, где и почему происходит сбой.

5. Повторная конфигурация и тестирование

После внесения всех изменений рекомендуется заново развернуть все компоненты:

  • Убедитесь, что все компоненты (Helm, Grafana) завершают перезагрузку, чтобы изменения применились.
  • Запустите тестовые запросы к Datasource в Grafana, чтобы проверить, решена ли проблема.

Заключение

Если после всех вышеописанных шагов проблема не решается, необходимо обратиться к документации Grafana и AWS, а также на форумах сообщества для поиска специфических рекомендаций. Вы можете также рассмотреть возможность создания поддержки в AWS для более детальной диагностики на уровне облачных услуг. Надеемся, что данное руководство поможет вам устранить возникшую проблему и восстановить связь между Grafana и AWS CloudWatch.

Оцените материал
Добавить комментарий

Капча загружается...