コンテンツ
Tips
Active Directory(LDAP)で管理されているユーザを、Helix Core(P4D)と連携させ、
Helix Coreアカウントとして使用する際の手順です。
手順
1. LDAP属性値の選定
認証のキーとする情報や、連携時に取得する情報元を選定します。
※本手順では、認証キーに"givenName"、取得元情報に"displayName"、"mail"を利用しています。
displayName・givenName・mail・cn・sn・sAMAccountName・name
■Active Directory上のユーザプロパティ
① sn
② givenName
③ displayName,name,cn
④ mail
⑤ sAMAccountName
2. LDAP仕様の作成
Perforce サーバが認証先の LDAP を特定するためのLDAP仕様を作成します。
① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。
p4 -u super login
・super:管理者権限ユーザ
② ldapコマンドを実行し、LDAP仕様を編集します。(テキストエディタが起動します)
編集後、内容を保存し、テキストエディタを終了します。
p4 ldap ldap_property
Name: ldap_property
Host: 192.168.XXX.XX
Port: 389
Encryption: none
BindMethod: search
Options: nodowncase getattrs norealminusername
SearchBaseDN: CN=test-perforce,DC=co,DC=jp
SearchFilter: sAMAccountName=%user%
SearchScope: subtree
SearchBindDN: CN=administrator,CN=Users,DC=test-perforce,DC=co,DC=jp
SearchPasswd: ********
GroupSearchScope: subtree
AttributeUid: givenName
AttributeName: displayName
AttributeEmail: mail
LDAP仕様フィールド値一覧 | |
---|---|
Port: | LDAP通信用ポート番号"389"(ldap)、 もしくは"636"(ldaps)を指定 |
Encryption: | 暗号化方式(SSL 利用の場合)を指定 |
BindMethod: | 検索方式(simple,search,sasl)を指定 ※本手順では"search"方式を指定しています |
Options: | Perforceサーバにおける LDAP 仕様オプションを指定 ・downcase:LDAP上に大文字で登録されているユーザ名をPerforceサーバに小文字で登録する ・getattrs:自動的に作成されたユーザに対してLDAPから追加情報(メール、フルネームなど)を取得する ・realminusername:レルムをSASLのユーザ名から取得する |
SearchBaseDN: | ユーザ検索時に基底となるActive Directoryのドメインを指定 例:DC=test-perforce,DC=co,DC=jp |
SearchFilter: | 検索時のフィルター条件を設定 例:givenName=%user% |
SearchScope: | ユーザの検索範囲を指定 ・baseonly:指定の"BaseDN"に該当するエントリ ・children:指定の"BaseDN"配下のエントリ ・subtree:指定の"BaseDN"とその配下のエントリ ※本手順では、"subtree"を指定しています |
SearchBindDN: | LDAPを検索できる権限を持ったユーザを指定 例:CN=administrator,CN=Users,DC=test-perforce,DC=co,dc=jp |
SearchPasswd: | "SearchBindDN"ユーザのパスワードを指定 |
GroupSearchScope: | ユーザの検索範囲を指定 ・baseonly:指定の"BaseDN"に該当するエントリ ・children:指定の"BaseDN"配下のエントリ ・subtree:指定の"BaseDN"とその配下のエントリ ※本手順では、"subtree"を指定しています |
"Options:"で"getattrs"指定した場合 | |
AttributeUid: | ユーザIDの取得元となるLDAP側属性値を指定 |
AttributeName: | フルネームの取得元となるLDAP側属性値を指定 |
AttributeEmail: | メールアドレスの取得元となるLDAP側属性値を指定 |
3. 認証確認
手順2で作成したLDAP仕様を利用して認証確認を行います。
① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。
p4 -u super login
・super:管理者権限ユーザ
② ldapコマンドを実行し、LDAP認証を確認します。
p4 -u super ldap -t bruno ldap_property
・super:管理者権限ユーザ
・bruno:LDAP上に存在する任意のユーザ
・ldap_property:手順2で作成したLDAP仕様名
Enter password:
Authentication successful.
Discovered FullName: Perforce bruno
Discovered Email: bruno@test-perforce.co.jp
Enter password:
User not found by LDAP search "givenName=bruno" starting at cn=User,dc=test-perforce,dc=co,dc=jp
LDAP search failed:
4. Perforce構成可能変数の設定
手順2で作成したLDAP仕様を利用して認証するように、Perforceサーバに対して構成可能変数を設定します
① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。
p4 -u super login
・super:管理者権限ユーザ
② 構成可能変数を設定します。
p4 -u super configure set auth.ldap.order.1=ldap_property
p4 -u super configure set auth.default.method=ldap
p4 -u super configure set auth.ldap.userautocreate=1
p4 -u super configure set auth.ldap.timeout=60
LDAPに関連した構成可能変数一覧 | |
---|---|
auth.ldap.order.N | 手順2で作成したLDAP仕様の検索順序を指定 デフォルト値:なし。Nが小さいほど優先順位が高くなる |
auth.default.method | 新しいユーザがPerforceサーバで認証を行うか、LDAPを利用して認証行うかを指定 perforce:perforceサーバ(デフォルト値) ldap:AD/LDAPサーバ |
auth.ldap.userautocreate | LDAP認証を使用するとき、ログイン時に新しいユーザを自動で作成するか否かを指定 0:作成しない(デフォルト値) 1:作成する |
auth.ldap.timeout | 接続の試行をあきらめるまでの時間を秒単位で指定 デフォルト値:30秒 |
auth.ldap.cafile | LDAPにSSL/TLSが使用される場合、証明書ファイルへのパスを指定 ※この手順では利用していません |
auth.ldap.ssllevel | SSL証明書の検証レベルを指定 ※この手順では利用していません |
dm.user.noautocreate | ユーザの自動作成をより詳細に制御する ※LDAP連携によりユーザを作成する場合は、"0"を設定 ※この手順では利用していません |
③ 設定した構成可能変数を確認するには以下のコマンドを実行します。
p4 -u super configure show
5. LDAP認証グループの作成
LDAP連携に利用するグループを作成します。
補足情報
手順4までの設定で、Perforceサーバへのログイン認証にLDAP認証を利用できますが、Active Directory(LDAP)上に存在する全てのユーザがPerforceサーバへログイン可能となるため、セキュリティ上好ましくない環境です。
そのため、LDAP上のユーザを事前にPerforceグループへメンバ登録し、プロテクションテーブルの設定と合わせることで、事前登録されたメンバのみがPerforceサーバへアクセスできるように設定します。
① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。
p4 -u super login
・super:管理者権限ユーザ
② groupコマンドを実行し、グループ仕様を編集します。(テキストエディタが起動します)
編集完了後、内容を保存し、テキストエディタを終了します。
※ADのグループ:Perforceusers が Perforceのグループ:ldapgroup と連携するように編集しています
※グループ名は任意です
p4 group ldapgroup
Group: ldapgroup
MaxResults: unset
MaxScanRows: unset
MaxLockTime: unset
MaxOpenFiles: unset
Timeout: 43200
PasswordTimeout: unset
LdapConfig: ldap_property
LdapSearchQuery: (&(objectClass=user)(memberOf=CN=Perforceusers,CN=Users,DC=test-perforce,DC=co,DC=jp))
LdapUserAttribute: givenName
Owners:
super
Users:
LDAP連携に関連するグループ仕様フィールド値一覧 | |
---|---|
LdapConfig: | LDAP検索クエリからグループのメンバリストを作成する際に使用するLDAP仕様を指定 |
LdapSearchQuery: | グループメンバの識別するためのLDAPクエリを指定 |
LdapUserAttribute: | ユーザ登録に使用するLDAP属性値を指定 |
Owners: | グループの所有者を指定 |
6. LDAP認証メンバ同期
手順5で作成したPerforceグループへユーザを同期します
① コマンドプロンプトから Perforce サーバへ管理者権限でログインします
p4 -u super login
・super:管理者権限ユーザ
② コマンドを実行し、Perforceグループのメンバへ検索クエリの対象となったLDAPユーザを同期します。
※"-n"オプションを使用し、実際の同期前に同期結果を確認することができます。
p4 -u super ldapsync -n-g ldapgroup
Added user Karl to group ldapgroup
Added user moris to group ldapgroup
Added user perf to group ldapgroup
Added user bruno to group ldapgroup
③ コマンド結果に問題がなければ、実際に同期します。
p4 -u super ldapsync -g ldapgroup
Added user Karl to group ldapgroup
Added user moris to group ldapgroup
Added user perf to group ldapgroup
Added user bruno to group ldapgroup
④ グループ仕様を確認し、メンバが[Users]フィールドに追加されていることを確認します。
p4 group -o ldapgroup
...
Owners:
super
Users:
Karl
moris
perf
bruno
7. LDAP認証メンバ自動同期の設定
グループへのメンバ同期を自動で行うように構成可能変数を設定します。
① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。
p4 -u super login
・super:管理者権限ユーザ
② 構成可能変数を設定します。
p4 configure set "server_id#startup.1=ldapsync -g ldapgroup -i 1800"
・30秒間隔で、"ldapgroup"グループにActive Directory上で更新されたメンバ情報が同期される設定
8. プロテクションテーブルの設定
同期されたユーザのみがPerforceサーバへアクセスできるように、プロテクションテーブルを定義します。
① コマンドプロンプトから Perforce サーバへ管理者権限でログインします。
p4 -u super login
・super:管理者権限ユーザ
② コマンドを実行し、プロテクションテーブルを編集します。(テキストエディタが起動します)
編集完了後、内容を保存し、テキストエディタを終了します。
p4 protect
■ 編集内容
※全てのユーザに対して"write"権限が与えられていた場合の編集例です。
編集前 | write user * * //... |
編集後 | write group ldapgroup * //... |
Helix Core(P4D)とActive Directory(LDAP)との連携手順は、以上となります。