{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: 私有化部署
{{< /details >}}
以下是与 LDAP 相关的 Rake 任务。
检查
LDAP 检查 Rake 任务测试 bind_dn
和 password
凭证(如果已配置),并列出 LDAP 用户的示例。此任务也是 gitlab:check
任务的一部分,但可以使用下面的命令独立运行。
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
sudo gitlab-rake gitlab:ldap:check
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:check
{{< /tab >}}
{{< /tabs >}}
默认情况下,该任务返回 100 个 LDAP 用户的示例。通过向检查任务传递一个数字来更改此限制:
rake gitlab:ldap:check[50]
运行群组同步
{{< details >}}
- Tier: 专业版, 旗舰版
- Offering: 极狐GitLab 私有化部署
{{< /details >}}
以下任务立即运行 群组同步。这在您希望更新所有配置的群组成员资格与 LDAP 同步时非常有用,而无需等待下一个计划的群组同步运行。
{{< alert type=”note” >}}
如果您想更改群组同步执行的频率,请调整 cron 计划。
{{< /alert >}}
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
sudo gitlab-rake gitlab:ldap:group_sync
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:group_sync
{{< /tab >}}
{{< /tabs >}}
重命名提供者
如果您在 gitlab.yml
或 gitlab.rb
中更改 LDAP 服务器 ID,则需要更新所有用户身份,否则用户将无法登录。输入旧的和新的提供者,此任务会更新数据库中所有匹配的身份。
old_provider
和 new_provider
是由前缀 ldap
加上配置文件中的 LDAP 服务器 ID 派生而来的。例如,在 gitlab.yml
或 gitlab.rb
中,您可能会看到如下 LDAP 配置:
main:
label: 'LDAP'
host: '_your_ldap_server'
port: 389
uid: 'sAMAccountName'
# ...
main
是 LDAP 服务器 ID。组合起来,唯一的提供者是 ldapmain
。
{{< alert type=”warning” >}}
如果您输入了错误的新提供者,用户将无法登录。如果发生这种情况,请使用错误的提供者作为 old_provider
,正确的提供者作为 new_provider
再次运行任务。
{{< /alert >}}
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
sudo gitlab-rake gitlab:ldap:rename_provider[old_provider,new_provider]
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:rename_provider[old_provider,new_provider]
{{< /tab >}}
{{< /tabs >}}
示例
考虑以默认服务器 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_provider
和 new_provider
,任务会提示您输入它们:
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
sudo gitlab-rake gitlab:ldap:rename_provider
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:rename_provider
{{< /tab >}}
{{< /tabs >}}
示例输出:
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 密钥的内容。
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
sudo gitlab-rake gitlab:ldap:secret:show
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:secret:show
{{< /tab >}}
{{< /tabs >}}
示例输出:
main:
password: '123'
bind_dn: 'gitlab-adm'
编辑密钥
在您的编辑器中打开密钥内容,退出时将结果内容写入加密的密钥文件。
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
sudo gitlab-rake gitlab:ldap:secret:edit EDITOR=vim
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
sudo RAILS_ENV=production EDITOR=vim -u git -H bundle exec rake gitlab:ldap:secret:edit
{{< /tab >}}
{{< /tabs >}}
写入原始密钥
通过在 STDIN 上提供新密钥内容来写入。
{{< tabs >}}
{{< tab title=”Linux package (Omnibus)” >}}
echo -e "main:\n password: '123'" | sudo gitlab-rake gitlab:ldap:secret:write
{{< /tab >}}
{{< tab title=”Self-compiled (source)” >}}
echo -e "main:\n password: '123'" | sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:ldap:secret:write
{{< /tab >}}
{{< /tabs >}}
密钥示例
编辑器示例
写入任务可用于编辑命令无法与编辑器配合使用的情况:
# 将现有密钥写入明文文件
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