Help us learn about your current experience with the documentation. Take the survey.

LDAP Rake 任务

  • 版本:Free, Premium, Ultimate
  • 产品:GitLab Self-Managed

以下是 LDAP 相关的 Rake 任务。

检查

LDAP 检查 Rake 任务会测试 bind_dnpassword 凭据(如果已配置),并列出 LDAP 用户样本。此任务也会作为 gitlab:check 任务的一部分执行,但也可以使用以下命令独立运行。

sudo gitlab-rake gitlab:ldap:check
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:check

默认情况下,该任务会返回 100 个 LDAP 用户样本。您可以通过向检查任务传递一个数字来更改此限制:

rake gitlab:ldap:check[50]

运行组同步

  • 版本:Premium, Ultimate
  • 产品:GitLab Self-Managed

以下任务会立即运行组同步。 当您希望根据 LDAP 更新所有已配置的组成员资格,而无需等待下一次计划的组同步运行时,此功能非常有用。

如果您想更改组同步的执行频率,请改为调整 cron 计划

sudo gitlab-rake gitlab:ldap:group_sync
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:group_sync

重命名提供商

如果您在 gitlab.ymlgitlab.rb 中更改了 LDAP 服务器 ID,则需要更新所有用户身份,否则用户将无法登录。输入旧的和新的提供商,此任务将更新数据库中所有匹配的身份。

old_providernew_provider 由前缀 ldap 加上配置文件中的 LDAP 服务器 ID 组成。例如,在 gitlab.ymlgitlab.rb 中,您可能会看到如下 LDAP 配置:

main:
  label: 'LDAP'
  host: '_your_ldap_server'
  port: 389
  uid: 'sAMAccountName'
  # ...

main 是 LDAP 服务器 ID。组合起来,唯一的提供商就是 ldapmain

如果您输入了错误的 new_provider,用户将无法登录。如果发生这种情况,请再次运行该任务,将错误的提供商作为 old_provider,将正确的提供商作为 new_provider

sudo gitlab-rake gitlab:ldap:rename_provider[old_provider,new_provider]
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:rename_provider[old_provider,new_provider]

示例

假设您从默认的服务器 ID main(完整提供商为 ldapmain)开始。 如果我们将 main 更改为 mycompany,那么 new_provider 就是 ldapmycompany。 要重命名所有用户身份,请运行以下命令:

sudo gitlab-rake gitlab:ldap:rename_provider[ldapmain,ldapmycompany]

示例输出:

100 users with provider 'ldapmain' will be updated to 'ldapmycompany'.
If the new provider is incorrect, users will be unable to sign in.
Do you want to continue (yes/no)? yes

User identities were successfully updated

其他选项

如果您没有指定 old_providernew_provider,任务会提示您输入:

sudo gitlab-rake gitlab:ldap:rename_provider
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:rename_provider

示例输出

What is the old provider? Ex. 'ldapmain': ldapmain
What is the new provider? Ex. 'ldapcustom': ldapmycompany

此任务还接受 force 环境变量,该变量会跳过确认对话框:

sudo gitlab-rake gitlab:ldap:rename_provider[old_provider,new_provider] force=yes

密钥

GitLab 可以使用 LDAP 配置密钥 从加密文件中读取信息。 以下 Rake 任务用于更新加密文件的内容。

显示密钥

显示当前 LDAP 密钥的内容。

sudo gitlab-rake gitlab:ldap:secret:show
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:secret:show

示例输出

main:
  password: '123'
  bind_dn: 'gitlab-adm'

编辑密钥

在您的编辑器中打开密钥内容,并在您退出时将结果内容写入加密的密钥文件。

sudo gitlab-rake gitlab:ldap:secret:edit EDITOR=vim
sudo RAILS_ENV=production EDITOR=vim -u git -H bundle exec rake gitlab:ldap:secret:edit

写入原始密钥

通过 STDIN 提供新密钥内容以进行写入。

echo -e "main:\n  password: '123'" | sudo gitlab-rake gitlab:ldap:secret:write
echo -e "main:\n  password: '123'" | sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:secret:write

密钥示例

编辑器示例

edit 命令与您的编辑器不兼容时,可以使用 write 任务:

# 将现有密钥写入纯文本文件
sudo gitlab-rake gitlab:ldap:secret:show > ldap.yaml
# 在您的编辑器中编辑 ldap 文件
...
# 重新加密文件
cat ldap.yaml | sudo gitlab-rake gitlab:ldap:secret:write
# 删除纯文本文件
rm ldap.yaml

KMS 集成示例

它也可以用作接收由 KMS 加密内容的应用程序:

gcloud kms decrypt --key my-key --keyring my-test-kms --plaintext-file=- --ciphertext-file=my-file --location=us-west1 | sudo gitlab-rake gitlab:ldap:secret:write

Google Cloud 密钥集成示例

它也可以用作从 Google Cloud 获取密钥的接收应用程序:

gcloud secrets versions access latest --secret="my-test-secret" > $1 | sudo gitlab-rake gitlab:ldap:secret:write