Как решить проблему с журналированием на GKE ответил "403 несанкционированный" - PullRequest
0 голосов
/ 28 декабря 2018

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

Теперь я столкнулся с проблемой, как описано ниже.

【logs】

https://logging.googleapis.com/v2/entries:write?alt=json возвращено «Пользователь не авторизован для доступа 209122328335»> Здесь выводится

ссылка, указанная выше (★).

    def __logging_v1(self):
        def create_service():
            from oauth2client.client import GoogleCredentials
            credentials = GoogleCredentials.get_application_default()

            print(credentials.service_account_email) # ☆

            from googleapiclient import discovery
            return discovery.build('logging',
                                   'v2', 
                             discoveryServiceUrl=discovery.V2_DISCOVERY_URI, 
                                   credentials=credentials,
                                   cache_discovery=False)

        body = self.__get_body()
        req = create_service().entries().write(body=body)

        try:
            req.execute()
        except Exception as err:
            # for system-log to detect an abnormality
            print('StackDriver AlertTag')
            print(err) # ★Here

По точке (☆),Я подтвердил, что назначена служебная учетная запись, которая смонтирована на контейнере в качестве sercret-ключа и имеет некоторые роли (■ 1), установленные IAM.

■ 1

App Engine manager
BigQuery manager
Stackdriver Debugger agent
Stackdriver Profiler agent
Cloud SQL manager
Cloud Taskmanager
Cloud Trace manager
Compute manager
Cloud Datastore index manager
Cloud Datastore oner
Error Reporting manager
Logging manager
Monitoring manager
Pub/Sub manager
Service Management manager
Service controller
Source Repository manager
Stackdriver Account editer
Storage manager

Другие условия:

1) Действительная служба API

Compute Engine API
Stackdriver Logging API
Stackdriver Monitoring API
BigQuery API
Cloud Build API
Cloud Datastore API
Cloud Firestore API
Cloud OS Login API
Cloud Pub/Sub API
Cloud Source Repositories API
Cloud SQL
Compute Engine Instance Group Manager API
Container Registry API
Firebase Rules API
Google Cloud APIs
Google Cloud Deployment Manager V2 API
Google Cloud DNS API
Google Cloud Memorystore for Redis API
Google Cloud Storage
Google Cloud Storage JSON API
Google Compute Engine Instance Group Updater API
Google Compute Engine Instance Groups API
Kubernetes Engine API
Service Management API
Service Usage API
Stackdriver API
Stackdriver Debugger API
Stackdriver Profiler API
Stackdriver Provisioning Service Private 
Stackdriver Trace API

2) Настройки кластера

Stackdriver Logging **Valid**
Stackdriver Monitoring **Valid**

3) Тот же источник и такое же состояниев другом проекте

Выше журнала ошибок не появляется, и ведение журнала точно работает .

◆ 1

oauthScopes:
  - https://www.googleapis.com/auth/cloud-platform
  serviceAccount: default
nodeIpv4CidrSize: 24
nodePools:
- autoscaling:
    enabled: true
    maxNodeCount: 3
  config:
    diskSizeGb: 100
    diskType: pd-standard
--
    oauthScopes:
    - https://www.googleapis.com/auth/cloud-platform
    serviceAccount: default
  initialNodeCount: 2
  instanceGroupUrls:
  - https://www.googleapis.com/****
  management:
    autoRepair: true
  name: default-pool
  selfLink:
        https://container.googleapis.com/****
  status: RUNNING

1 Ответ

0 голосов
/ 19 января 2019

Разрешение : Используйте сервисную учетную запись, созданную без ограничений в качестве ресурса.Подробно, при выдаче учетной записи службы на шаге 3 нет никаких настроек (Предоставить доступ пользователям или группам, которые должны выполнять действия в качестве этой учетной записи службы.).На шаге может быть установлено ограничение на использование служебной учетной записи для некоторых пользователей

By @ Delta

...