OpenLDAPのユーザー・グループエントリに使われる主要属性まとめ

はじめに

前回の記事では、GUIツールの Apache Directory Studio を使って OpenLDAP サーバーに接続し、テスト用のユーザーエントリを追加する方法を紹介しました(こちら)。

本記事ではその続編として、LDAPでユーザーを登録する際によく使われる「属性」 に焦点を当て、cnsnuidmail などの項目の意味と使い方をやさしく解説します。

まず、LDAPにおける「エントリ (entry)」とは一人のユーザーや一つのオブジェクトに相当し、DN (Distinguished Name) という一意の名前で識別されます。エントリは属性 (attribute) の集合で表現され、各属性に名前と値が設定されています。

では、具体的にどのような属性項目があるのかを紹介します。

目次

主なLDAP属性とその意味(一覧)

まずは、主な属性をユーザー・グループエントリごとに一覧にまとめました。

ユーザエントリ

属性名意味・用途(説明)
cn (Common Name)共通名。エントリ(オブジェクト)の名前を表す属性。ユーザーの場合は通常「氏名」など人を識別する名称を入れます
sn (Surname)姓。ユーザーの名字(苗字)を表す属性です
objectClassオブジェクトクラス。エントリの種別(スキーマ)を指定する属性で、複数持つ場合があります
givenName名前。ユーザーの名前(下の名前)を表す属性。snと組み合わせてフルネームを構成します
uid (User ID)ユーザーID。ユーザーを識別するためのログイン名や社員ID等を入れます。 一意であることが望ましいです
mailメールアドレス。ユーザーの電子メールアドレスを表します。複数あれば属性を繰り返して登録可能です
ou組織単位。ユーザーの所属部署名やチーム名など、組織上の単位を表します
title役職名。ユーザーの職位・肩書きを表します
telephoneNumber電話番号。ユーザーの連絡先電話番号です。複数の電話番号(内線と携帯など)がある場合は属性を繰り返し追加します
memberOfメンバーオブ。ユーザーエントリが属するグループのDNを示す属性。OpenLDAPでグループエントリのmemberに追加された際に、自動的に追加される項目です。memberOf属性も繰り返し追加されます
userPasswordユーザーパスワード。ユーザーのパスワード(ハッシュ値)を格納する属性です。
description説明。エントリの説明や備考を自由記述するための属性。任意フィールドで、メモ書きや追加情報を入れる用途に使われます

cn (Common Name)、sn (Surname)、objectClass の3つは必須項目です

グループエントリ

属性名意味・用途(説明)
cn (Common Name)共通名。エントリ(オブジェクト)の名前を表す属性。グループ名を入れます
objectClassオブジェクトクラス。エントリの種別(スキーマ)を指定する属性で、複数持つ場合があります
memberメンバー。グループエントリに属するメンバーのDNを登録する属性です。複数人を所属させたい場合は、member属性を繰り返し追加して登録します
description説明。エントリの説明や備考を自由記述するための属性。任意フィールドで、メモ書きや追加情報を入れる用途に使われます

cn (Common Name)、objectClass の2つは必須項目です

分かりにくい項目の補足

objectClass

各エントリには少なくとも1つ以上の objectClass を指定する必要があります。これはそのエントリが「どういう種類のものか(=スキーマ)」を表す情報です。たとえば新規ユーザーを inetOrgPerson として登録する場合、エントリには通常以下のようなクラスを指定します。

ユーザエントリの場合:

  • objectClass: top
  • objectClass: person
  • objectClass: organizationalPerson
  • objectClass: inetOrgPerson

グループエントリの場合:

  • objectClass: top
  • objectClass: groupOfNames
    ※ 重複を防ぎたい場合は groupOfUniqueNames を使用

top はすべてのエントリに共通する抽象クラスで、通常自動的に含まれます
inetOrgPersonは、personorganizationalPersonを継承しており、inetOrgPersonに入力すると、自動的にpersonorganizationalPersonにもデータが入ります

groupOfNamesは、一般的なグループで、member属性が必須となっています。member属性には同じDNがあっても問題ないことになっています
groupOfUniqueNamesは、groupOfNamesとよく似ていますが、member属性に重複したDNが許されないことになっています。重複するメリットが分からないので、こちらを選択して良いと思います

今回は扱いませんが、LDAPには ユーザーやグループ以外にも多数のobjectClass が存在します。

  • posixAccount:Unix/Linuxアカウント情報(uidNumber、homeDirectory など)
  • shadowAccount:パスワード期限などの管理属性
  • device:ハードウェアやネットワーク機器
  • organizationalUnit:部門・チームの管理単位
  • applicationProcess:プロセスやサービスの管理用
  • groupOfUniqueNames:memberと似た用途で、uniqueMemberを使うグループ用クラス

LDAPの設計では、このobjectClassの選定によって「どんな情報を持てるか」が決まります。ユーザーやグループだけでなく、環境に合わせたobjectClassを選んで、エントリ構造を組み立てていく必要があります。

member

この属性は「グループエントリ」側に設定します。対象のユーザーエントリの完全なDNを値として指定します(例:uid=taro,ou=Users,dc=example,dc=com)。1つのグループに複数のユーザーを所属させるには、以下のように member 属性を繰り返し追加します。

member: uid=taro,ou=Users,dc=example,dc=com
member: uid=hanako,ou=Users,dc=example,dc=com

groupOfNames オブジェクトクラスでは、member属性が1つ以上必須なので、空のグループは作れません。

memberOf

OpenLDAPでは memberOf オーバーレイ(モジュール)を有効にすると、グループエントリの member 属性にユーザーが追加されたタイミングで、自動的に memberOf がユーザー側に追記されます。

memberOf: cn=dev-team,ou=Groups,dc=example,dc=com

ユーザーが複数のグループに所属している場合、memberOf 属性も繰り返し追加されます。

userPassword

この属性は、ユーザーがLDAPに対して認証(ログイン)する際のパスワード情報を保持する属性です。
ただし、平文では保存せず、必ずハッシュ化して記録します。

OpenLDAPでは、以下のようなハッシュ付きの文字列を使います。

(例:SSHA):
userPassword: {SSHA}N4bD+G9T8P1+Xnbzq6vX2J9U8m8=

まとめ

本記事では、OpenLDAPのユーザーエントリとグループエントリで使われる主要な属性を一覧で紹介し、それぞれの意味や用途について補足しました。

  • 主なLDAP属性の一覧
  • objectClass の階層構造(person, organizationalPerson, inetOrgPerson など)
  • グループエントリで使われる member
  • ユーザー側に自動追加される memberOf
  • userPassword のハッシュ保存とそのセキュリティ注意点

実際にLDAPでエントリを作成する際に「この項目って何だっけ?」と困ったとき、ぜひこの記事を見返してもらえたらと思います。

  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次