Help us understand the problem. What is going on with this article?

CentOS7でOpenldap構築 - 1.Openldapの仕組み

 アカウント管理の集約、サーバログイン・サイトログイン制御を目的に、Openldapを用いてLDAP環境を構築していきます。
 以下、連載記事にしていきます。

 1.Openldapの仕組み ※本記事
 2.LDAPサーバ構築手順
 3.LDAPクライアント設定手順
 4.LDAPディレクトリ構成例とACLの設定
 5.バックアップリストアテスト
 6.パスワード有効期限切れ通知スクリプト(おまけ)

 本記事は1番目の仕組みを説明するだけの記事なので、なんとなく見ていただけるとありがたいです。

要件

今回、以下の要件を想定した環境を構築します。
・Openldapを用いてLDAPサーバを構築し、システム利用者のアクセス管理とパスワードポリシーを一元化し人的負荷を低減させる。
・アカウント管理ツールとしてLDAP Account Managerを使用する。接続の際には443(HTTPS)ポートを使用する。
・DB、ファイルのバックアップ環境を構築・運用する。
・一旦シングル構成とする。後程、耐障害性を考慮し冗長化も可能とする。
・踏み台、中継サーバーはSSH公開鍵認証によるLDAPログインとし、踏み台サーバーから他サーバーのログインは共通ユーザとする。
・情報の管理はou=infraのメンバーで行うものとする。

LDAPログインの仕組み

 LDAPログインの仕組みのイメージ図です。以下はユーザ名+秘密鍵でLDAPクライアントにログインする場合です。
 LDAPサーバにはslapdというデーモンが、LDAPクライアントにはnslcdというデーモンが動いていて、それが相互に働きLDAPログインを可能にしています。
キャプチャ.PNG

用語定義

 Openldapはマスター/スレーブをプロバイダ/コンシューマと呼んだり、他のサーバに比べ少し変わっていて、用語もわかりにくいです。簡単にメモしておきます。
いろいろ書いてありますが、LDAPはディレクトリ構造(ツリー型)でデータを管理しているという点が重要です。

用語 説明
LDAP Lightweight Directory Access Protocolの略。ディレクトリ構造でデータを管理している。通常、389番ポートを使用。
バックエンドデータベース アプリに組み込まれたデータベース。OpenLDAPではhdbというバックエンドデータベースがディレクトリツリーの階層構造についての情報を持つ。
ベースDN (サフィックス) ディレクトリサービスの基点となるディレクトリを、ベースDN(サフィックス)という。
エントリ ベース DN を基点としたディレクトリツリー内の、それぞれのデータのこと。
属性 エントリに含まれる情報の種類のこと(氏名、所属、メールアドレス等々)。
オブジェクトクラス 属性の種類ごとの集まり。エントリに何の属性を含めるか定義するために、オブジェクトクラスをエントリに指定する。
LDIFファイル エントリの情報を記述するファイル。LDAPサーバでデータをやり取りするために使用する。
プロバイダ サーバを冗長構成にしたときの、マスターサーバのこと。
コンシューマ サーバを冗長構成にしたときの、スレーブサーバのこと。

管理者権限について

 構築手順にも登場しますが、管理者権限を持つユーザとして、「設定管理者」と「ディレクトリマネージャー」というユーザが存在します。これらはディレクトリツリーの中に存在します。

・設定管理者(cn=admin,cn=config)はスキーマの追加、モジュールの追加等、LDAP自体の設定管理をする。
・ディレクトリマネージャー(cn=admin,dc=test,dc=org)は全エントリ、ディレクトリ構成の参照・変更権限を持つ。
※ベースDNがdc=test,dc=orgの場合。

LDAPディレクトリの構成、ACLについて

ディレクトリツリーのイメージを持つために構成例を記載します(ツリーっぽくなくてごめんなさい)。
キャプチャ2.PNG

 例えば「"サーバにログインさせたいけどsudo権は与えたくない"というユーザはuserというou名の中に登録しよう。」といった形で管理します。ouとは組織単位のことです(グループみたいなもので、そのouの中にユーザを登録していくイメージ)。
また上のツリーを例にした場合、各ouに対し以下のように役割を決めてディレクトリツリーを作成し、アクセス制限を設定していくのが一般的です。

OU名 説明
system サーバにログインできるシステムユーザのエントリ
infra 全環境でsudo権が付与された管理者用ユーザ(LDAP管理、サーバ管理者用)
user サーバ内でsudoできない、または環境を制限してsudoが付与されるユーザ
group グループのエントリを追加
tool Gitや監視ツールなど他のツールもLDAP連携したい場合に備えたツール用ユーザ
tool-admin OU=toolのエントリを追加・削除・編集できるツールユーザの管理者
policies ポリシーを定めたエントリ

また各ディレクトリのACL(アクセス制御)についてもこちらの記事で紹介します。
・CentOS7でOpenldap構築 - 4.LDAPディレクトリ構成とACLの設定

ldapコマンドについて

Openldapは以下のようなldapコマンドで操作を行います。

ldapadd,ldapdelete,ldapmodify

ldapadd : LDAPにエントリを登録する
ldapdelete : LDAPエントリを削除する
ldapmodify : LDAPエントリを修正する
 オプションは次の通りです。

オプション 説明
-H LDAPサーバを参照するURIを指定する。プロトコル、ホスト、ポートのみ指定できる。 指定しない場合、ldap
-h LDAPサーバを指定する。指定しない場合、ローカルホストになる ( 非奨励オプション。-Hの使用を奨励 )
-p LDAPサーバのポート番号を指定する。指定しない場合、389となる ( 非奨励オプション。-Hの使用を奨励 )
-x 簡易認証設定
-D LDAPサーバの認証に使うDN ( バインドDN ) を指定する。指定しない場合は匿名接続となる。
-w LDAPサーバの認証に使うDNのパスワードを指定する。
-W LDAPサーバの認証に使うDNのパスワードをプロンプトから入力することを指定する。
-f LDIFテキストフォーマットファイルを標準入力ではなく、指定したファイルから読み込む。 ※ldapdeleteは利用不可

ldapsearch

ldapsearch : LDAPエントリを検索する
 オプションは次の通りです。

オプション 説明
-H LDAPサーバを参照するURIを指定する。プロトコル、ホスト、ポートのみ指定できる。指定しない場合、ldap
-h LDAPサーバを指定する。指定しない場合、ローカルホストになる ( 非奨励オプション。-Hの使用を奨励 )
-p LDAPサーバのポート番号を指定する。指定しない場合、389となる ( 非奨励オプション。-Hの使用を奨励 )
-x 簡易認証設定
-D LDAPサーバの認証に使うDN ( バインドDN ) を指定する。指定しない場合は匿名接続となる。
-w LDAPサーバの認証に使うDNのパスワードを指定する。
-W LDAPサーバの認証に使うDNのパスワードをプロンプトから入力することを指定する。
-s [Scope] 検索範囲を指定します。[Scope]の値は「base」「one」「sub」の3種類です。「base」はBaseDNエントリのみです。「one」はBaseDNエントリ自身と直下のエントリ、「sub」はBaseDN以下全てのエントリを指します。-sに何も指定しなければ「sub」が適用されます。
[Filter] 検索フィ ルタを指定します。例えば全てのエントリを抽出するには「(objectclass=)」を指定します。また、cn属性が「tanaka」で終わるエントリを抽出するには「(cn=tanaka)」とワイルドカードを指定できます。その他、複数のフィルタを組み合わせたAND検索やOR検索も実行できます。例えばcn属性が「tanaka」で終わり、かつcn属性が「taro」で始 まるエントリを抽出するには「(&(cn=tanaka)(cn=taro))」とAND検索を表す&を使って複数指定できます。OR検索には「」、否定記号には「!」記号を使います。
[Attr] 表示対象 とする属性を指定します。例えばあるエントリのtelephonenumber属性値を表示対象にする場合はAttrにtelnephoneNumberを指定します。何も指定しなければ全ての属性値が表示されます。
-L 検索結果をLDIFv1フォーマットで表示する
-LL 検索結果をコメントのないフォーマットで表示する
-LLL 検索結果をコメント無し、LDIFバージョン表示なしで表示する。

バックアップ、リストアについて

以下手順を参照します。
・CentOS7でOpenldap構築 - 5.バックアップリストアテスト

最後に

 Openldapの仕組みについて簡単に記載しました。他にもLDAPアカウントの命名規則や、どのようにログイン管理、sudo管理するかなど、簡単な設計も決めてから環境構築にとりかかるとよいと思います。
次はLDAPサーバ構築手順となります。
・CentOS7でOpenldap構築 - 2.LDAPサーバ構築手順

関連記事

・CentOS7でOpenldap構築 - 1.Openldapの仕組み
・CentOS7でOpenldap構築 - 2.LDAPサーバ構築手順
・CentOS7でOpenldap構築 - 3.LDAPクライアント設定手順
・CentOS7でOpenldap構築 - 4.LDAPディレクトリ構成例とACLの設定
・CentOS7でOpenldap構築 - 5.バックアップリストアテスト
・CentOS7でOpenldap構築 - 6.パスワード有効期限切れ通知スクリプト

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした