Как я могу добавить секрет клиента oidc в хранилище ключей Elasticsearch, когда оно работает в K8S?

#elasticsearch #kubernetes

Вопрос:

У меня есть собственный кластер Elasticsearch, работающий в AWS EKS, и я хотел бы настроить аутентификацию oidc. Я последовал инструкции: https://www.elastic.co/guide/en/cloud/current/ec-secure-clusters-oidc.html#ec-oidc-client-secret

В client-secret настройках он упоминает

 You’ll need to add the client secret to the keystore
 

поэтому я запустил кластер ES с базовой аутентификацией и добавил секрет в хранилище ключей с помощью команды elasticsearch-keystore add xpack.security.authc.realms.oidc.oidc-realm.rp.client_secret .

После этого я обновляю файл ES yaml, чтобы включить конфигурацию:

 xpack:
  security:
    authc:
      realms:
        oidc:
          oidc-realm-name: 
            order: 2 
            rp.client_id: "client-id" 
            rp.response_type: "code"
            rp.redirect_uri: "<KIBANA_ENDPOINT_URL>/api/security/v1/oidc" 
            op.issuer: "<check with your OpenID Connect Provider>" 
            op.authorization_endpoint: "<check with your OpenID Connect Provider>" 
            op.token_endpoint: "<check with your OpenID Connect Provider>" 
            op.userinfo_endpoint: "<check with your OpenID Connect Provider>" 
            op.jwkset_path: "<check with your OpenID Connect Provider>" 
            claims.principal: sub 
            claims.groups: "http://example.info/claims/groups" 
 

затем я запускаю rollout restart , чтобы перезапустить модуль, но при запуске кластера Elasticsearch я получил ошибку ниже:

 java.lang.IllegalStateException: security initialization failed
Likely root cause: SettingsException[The configuration setting [xpack.security.authc.realms.oidc.oidc-realm.rp.client_secret] is required]
 

похоже, ES не находит секрет, который я добавил в хранилище ключей.

Затем я понимаю, что он потерял хранилище ключей, когда я запускаю rollout restart , чтобы применить конфигурацию oidc. итак, мой вопрос в том, как правильно добавить OIDC в Elasticsearch в K8S?

Ответ №1:

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