当你有很多中间件时,你可能会需要在每个中间件都配置账号密码,但更好的做法是使用其中一个中间件作为登录中心,一般来说,我们会选用代码仓库,你可以没有其他中间件,但你不可能没有代码仓库吧!

Elastic如何集成GitLab

我这里有两篇文档:

1、https://www.elastic.co/guide/en/cloud/current/ec-secure-clusters-oidc.html

2、https://gitlab.com/.well-known/openid-configuration

相信你作为工程师,有这两个东西已经能自己搞定了~

如果还不行,我这里还有两份配置配置样例

这是kibana的

xpack.security.authc.providers:
  oidc.oidc1:
    order: 0
    realm: gitlab
    description: "Log in with GitLab"
    icon: "your_icon_url"
  basic.basic1:
    order: 1
    icon: "logoElasticsearch"

这是elasticsearch的

xpack.security.authc.realms.oidc.gitlab:
  order: 2
  rp.client_id: "YOUR_CLIENT_ID"
  rp.response_type: code
  rp.redirect_uri: "YOUR_KIBANA_URL/api/security/oidc/callback"
  op.issuer: "https://gitlab.com"
  op.authorization_endpoint: "https://gitlab.com/oauth/authorize"
  op.token_endpoint: "https://gitlab.com/oauth/token"
  op.jwkset_path: https://gitlab.com/oauth/discovery/keys
  op.userinfo_endpoint: "https://gitlab.com/oauth/userinfo"
  rp.post_logout_redirect_uri: "YOUR_KIBANA_URL/security/logged_out"
  claims.principal: sub
  claims.groups: "https://gitlab.org/claims/groups/developer"

我使用的是gitlab.com作为代码仓库,如果你是本地部署的,请改为你自己的地址。

我使用的是Elastic Cloud, 如果你是本机部署的,请多看看官方文档,找一找你的client_secret应该配在哪里。有可能是文件里配个:rp.client_secret 就好了
文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.13/security-settings.html#ref-oidc-settings

如果你想做权限控制的话,可以使用gitlab的group来做,不同的group给不同的权限,在role_mappings配置