JenkinsのLDAP(ActiveDirectory)認証設定
Jenkinsのデフォルトでは、ユーザ認証なしでアクセスができてしまう。 ユーザ認証を行うためには、jenkinsで独自のユーザ管理で行うことは可能ではあるが、ユーザ数が増え、システム数が増えることで、個別にユーザ管理をするのは、管理が大変になります。 そこでJenkinsもActiveDirectory/LDAPを利用してユーザ認証ができる手順を紹介します。Jenkins連携設定
LDAP(Kerberos)認証関連プラグインとして、「ActiveDirectoryプラグイン」や「LDAP Plugin」がありが、Apacheの基本認証の アカウントをそのまま利用できるプラグイン「Reverse Proxy Auth Plugin」を利用したAD連携方法を説明します。Header User Name | X-Forwarded-User |
---|---|
Header Groups Name | X-Forwarded-Groups |
Apache連携設定
■Apache設定変更# vi /etc/httpd/conf.d/jenkins.conf
<Location /jenkins>
Order allow,deny
Allow from all
BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
ProxyPass http://127.0.0.1:8080/jenkins
ProxyPassReverse http://127.0.0.1:8080/jenkins
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1,NS]
RequestHeader set X-Forwarded-User %{RU}e
# AuthMySQLNoPasswd Off
# AuthMYSQLEnable On
# AuthMySQLHost localhost
# AuthMySQLDB alminium
# AuthMySQLUser alminium
# AuthMySQLPassword alminium
# AuthMySQLUserTable users
# AuthMySQLNameField login
# AuthMySQLPasswordField hashed_password
# AuthMySQLPwEncryption sha1-rm
# AuthMySQLSaltField salt
# AuthMySQLGroupField groups
# AuthName "Redmine User"
# AuthType Basic
# require valid-user
#基本認証(AD連携)
AuthType Basic
AuthName "ActiveDirectory Auth"
AuthBasicProvider ldap
AuthLDAPURL "ldap://172.20.1.203:389/OU=web-clients,DC=ad,DC=hogehoge,DC=com?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "ad\ldapuser01"
AuthLDAPBindPassword "Password"
AuthzLDAPAuthoritative off
Require valid-user
</Location>
Apacheの基本認証でアクセスしたユーザをそのままJenkinsに引き渡される。
入門LDAP/OpenLDAP―ディレクトリサービス導入・運用ガイド |
RedmineとGitのLDAP(ActiveDirectory)認証設定
RedmineとGitのユーザ認証をActiveDirectoryに登録しているユーザで認証連携させる方法を説明します。RedmineのLDAP認証
■Redmineの管理メニューに[LDAP認証]をクリックする項目 | 説明 | 設定値 |
---|---|---|
名前 | 任意の名前 | TEST用LDAP |
ホスト | LDAPサーバのホスト名 | 172.20.1.204(DCサーバ) |
ポート | LDAPポート番号(デフォルトは389) | 389 |
LDAPS | ディレクトリにLDAPSでアクセスしたい、もしくはLDAPSが要求される場合はチェックしてください。 | - |
アカウント | LDAPの読み取りアクセスが可能なユーザーを入力してください。匿名アクセスが許可されている場合は、この欄は空白にします。 | tmpad\testredmine |
パスワード | アカウントのパスワード | - |
検索範囲 | 検索を許可するLDAPディレクトリツリー | OU=web-clients,DC=tmpad,DC=dev,DC=basis |
あわせてユーザーを作成 | ActiveDirectoryユーザがRedmineに未登録の場合、Redmineユーザを作成する | チェック |
属性 | Redmineのユーザ名として使用するLDAP属性 | - |
ログイン名属性 | sAMAccountName |
---|---|
名前属性 | givenName |
苗字属性 | sN |
メール属性 | |
GitのLDAP認証
RedmineのLDAP認証設定に引き続き、GitのLDAP認証も行っていきます。Auth::Simple | EPEL testing リポジトリからRPMファイルを入手してインストール |
---|---|
CPANサイトからインストール(要インターネット接続) | |
Auth::Simple::LDAP | CPANサイトからインストール(要インターネット接続) |
# yum install perl-LDAP perl-Params-Validate perl-Module-Runtime \ perl-Module-Implementation perl-Class-Accessor perl-Class-Data-Inheritable \ perl-Crypt-PasswordMD5 perl-Test-Simple
# yum --enablerepo=epel-testing install grep perl-Authen-Simple
# yum install perl-CPAN perl-YAML・[Auth::Simple::LDAP]のインストール
# perl -MCPAN -e shell cpan[1]> o conf prerequisites_policy follow prerequisites_policy [follow] Please use 'o conf commit' to make the config permanent! cpan[2]> o conf commit commit: wrote '/usr/share/perl5/CPAN/Config.pm' cpan[3]> install Authen::Simple::LDAP CPAN: Storable loaded ok (v2.20) CPAN: LWP::UserAgent loaded ok (v5.833) Warning: no success downloading '/root/.cpan/sources/authors/01mailrc.txt.gz.tmp29553'. Giving up on it. at /usr/share/perl5/CPAN/Index.pm line 225 Appending installation info to /usr/lib64/perl5/perllocal.pod CHANSEN/Authen-Simple-LDAP-0.3.tar.gz /usr/bin/make install -- OK
vi /etc/httpd/conf.d/vcs.conf
PerlLoadModule Apache::Authn::Redmine # Gitの設定 PerlLoadModule Authen::Simple::LDAP SetEnv GIT_PROJECT_ROOT /var/opt/alminium/git SetEnv GIT_HTTP_EXPORT_ALL SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/ <Location /git/> PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName Git # for Redmine Authentication RedmineDSN "DBI:mysql:database=alminium;host=172.20.1.205" RedmineDbUser "alminium" RedmineDbPass "password01" RedmineGitSmartHttp yes Require valid-user </Location>※RedmineのDBは、別サーバ(172.20.1.205)としています。ただし、RedmineのWEBとGitは同じサーバである必要があります。
プロジェクト - [設定]
[設定]画面 - [リポジトリ]タブ - [新しいリポジトリ]
[新しいリポジトリ] - バージョン管理システム[Git] - 識別子[プロジェクト識別子と同じ] - [リポジトリの作成]
# git config --global http.sslVerify false # git clone https://user01@localhost/git/pj01 Password: warning: You appear to have cloned an empty repository.※自己証明書の場合のみ「git config --global http.sslVerify false」を実行する。
CentOSをドメイン参加させずにKerberos認証させる
複数のCentOSサーバを管理する上で、ユーザの統合管理を行いたいが、LDAPの管理は敷居が高い。 そこでActiveDirectoryを導入し、ドメイン参加させずにユーザ認証する方法を探していたところ、PAM認証でActiveDirectoryと連携する方法がありましたので、紹介します。ドメイン名 | TMPAD.DEV.BASIS |
---|---|
DCサーバ1 | 172.20.1.203 |
DCサーバ2 | 172.20.1.204 |
# yum install pam_krb5 fprintd-pam
# authconfig --enablekrb5 --krb5kdc=172.20.1.204 --krb5realm=TMPAD.DEV.BASIS --update
krb5.confの修正点 | ・不要なEXAMPLE.COMに関する設定を消す ・DCサーバ指定を追加(DC2台構成の場合) |
---|
# vi /etc/krb5.conf
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = TMPAD.DEV.BASIS dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] TMPAD.DEV.BASIS = { kdc = 172.20.1.203:88 kdc = 172.20.1.204:88 } [domain_realm] tmpad.dev.basis = TMPAD.DEV.BASIS .tmpad.dev.basis = TMPAD.DEV.BASIS※赤字箇所は環境により読み替えてください。
# cat /etc/pam.d/system-auth-ac
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_krb5.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadow account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_krb5.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_krb5.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_krb5.so※赤字箇所が追加されたKeberos認証関連の設定です。
# useradd -u 10001 user01※UIDは各環境に合わせてください。しかしUID番号は、全サーバで統一することをお勧めします。
基礎から分かる Samba 4 構築&運用入門 |
Software Design (ソフトウェア デザイン) 2014年 06月号 |