Slide 1

Slide 1 text

Active Directory TechLunch at 2014/9/3 by Wataru Yoshida

Slide 2

Slide 2 text

今更ながらの自己紹介 • 吉田 航 • 2013年1月入社 • いわゆる社内SE的なお仕事 • 職歴 • 某大手SIerに8年在籍 インフラエンジニア 3年:NW機器とかサーバとか触ってました アプリケーションSE 3年:C#とかMSSQLとか触ってました 情報システム部門 2年 :いろいろ触ってました 2

Slide 3

Slide 3 text

やってきたお仕事 3 2013年2月 電話システム リプレース 2013年4月 Active Directory導入 2013年5月 社内システム用サーバー移設 2013年7月 無線LANリプレース、SSL-VPN導入 2013年9月 オフィス増床(久米ビル) 2013年11月 confluenceリプレース 2014年2月 消費税増税対応 2014年3月 JIRA導入 2014年4月 Google Apps導入、Gmail移行 2014年6月 オフィス増床(IKビル) 他にも組織変更対応、アカウント管理、内部統制対応、中間DBの改修など

Slide 4

Slide 4 text

本日のテーマ 4 Active Directory

Slide 5

Slide 5 text

5 1.Active Directory概要 2.Active Directory応用その1 3.Active Directory応用その2

Slide 6

Slide 6 text

Active Directoryとは • LDAPをベースとした、Microsoft製のディレクトリ サービス • Windows 2000 Server ではじめて搭載された • 前身はWindows NTドメイン • 略してAD 6

Slide 7

Slide 7 text

LDAPとは • LDAP(Lightweight Directory Access Protocol) • ディレクトリサービスにアクセスするためのプロトコル • ディレクトリサービス • ユーザーアカウントやコンピュータアカウント等の 情報を集約し、照会する機能を提供するサービス • 製品例 • OpenLDAP • Active Directory 7

Slide 8

Slide 8 text

LDAPのイメージ 8 ・ローカルにユーザーを持たず、LDAPでユーザーを一元管理 ※ホームディレクトリはローカルに保持し、認証のみをLDAPに任せる

Slide 9

Slide 9 text

Why Active Direcory ? • Windows製品との親和性 • グループポリシー(後述)が非常に強力 • デファクトスタンダード • 連携できる製品が非常に多い • 管理が容易、ドキュメントも豊富 • MS製品にしてはよく出来てる • 高可用性&高安定性 • Windows Serverの標準機能(=無料!) 9

Slide 10

Slide 10 text

Active Directory導入のメリット • アカウント管理の負荷低減 • 入社、退社の際のアカウントメンテ • 管理者によるアカウントの無効化、パスワードリセット • Active Directoryを認証基盤として活用 • 統制の強化 • パスワードポリシーの強制 • グループポリシーによる設定の統一 10

Slide 11

Slide 11 text

Active Directory導入前のリブセンス • 全PCのローカルユーザーのパスワードをExcel管理 • Pマークの運用で年1回のパスワード変更が必要 • 江原さんが全PCのパスワードを変えて回っていた(らしい) • 入社時のアカウント発行が苦行 • 当時のNASやブラウザチェック環境は、それぞれに同じID/PWの ローカルユーザーを登録していた • 「PCのパスワードが分からなくなった」 • 「ご愁傷様です」 11

Slide 12

Slide 12 text

12 これは早めにActiveDirectoryを 導入しないと死ぬ

Slide 13

Slide 13 text

Active Directory導入 • 速攻ActiveDirectoryを導入 • Windowsだけでなく、MacもADに登録 • ついでに無線LANの認証もAD連携させる • SSL-VPNの認証もADに任せちゃう 13

Slide 14

Slide 14 text

構成図 14

Slide 15

Slide 15 text

Active Directoryの画面(サーバ) 15

Slide 16

Slide 16 text

Active Directoryの画面(クライアント) 16

Slide 17

Slide 17 text

Active Directoryの画面(クライアント) 17

Slide 18

Slide 18 text

18 1.Active Directory概要 2.Active Directory応用その1 3.Active Directory応用その2

Slide 19

Slide 19 text

Active Directoryによる認証 • ADではアカウントをグループで束ねて管理することが可能 • グループはネスト可能 • NTFSアクセス権をADのグループで設定 • 組織変更が発生した際も、ADのグループをメンテするだけでOK • 無線LANやSSL-VPNの認証もADのグループを利用 19

Slide 20

Slide 20 text

Active Directoryによる認証 20 NTFSアクセス権

Slide 21

Slide 21 text

Active Directoryによる認証 21

Slide 22

Slide 22 text

Active Directoryによる認証 無線LAN、SSL-VPN 22

Slide 23

Slide 23 text

グループポリシー • WindowsやOffice等の設定を強制配布する機能 • グループポリシーで配布された設定は、ローカルの設定 で上書きすることができない • 実際に配布している設定 • Windows Updateの設定 • 無線LANの設定+証明書配布 • Officeの各種設定 • ログイン、ログオフスクリプト など • Windows以外のOSには適用不可 23

Slide 24

Slide 24 text

グループポリシーの設定画面 24 アルバイトPCから 外部媒体への書き込みを禁止

Slide 25

Slide 25 text

25 1.Active Directory概要 2.Active Directory応用その1 3.Active Directory応用その2

Slide 26

Slide 26 text

LDAPクエリ • ADが管理者にとって便利ということは分かった • 利用者側で何かに活用できないの? • ADの情報を他のシステムから参照したい • LDAPクエリによる問い合わせが可能 26

Slide 27

Slide 27 text

LDAPクエリ • LDAPクエリ • LDAPに問い合わせを行うためのクエリ • LDAPクエリの構文や基本的なアトリビュートは製品に 関わらず共通(RFCで定義されている) • 主要な言語であればLDAP用のライブラリが用意されて いる 27

Slide 28

Slide 28 text

LDAPクエリ • RubyからActiveDirectoryにアクセスしてみる • ActiveRecordっぽくLDAPオブジェクトを 扱える”ActiveLdap”を使ってみる • 必要なgemのインストール 28 $ gem install net-ldap $ gem install activeldap

Slide 29

Slide 29 text

LDAPクエリ 29 HOST_IP_V4 = '192.168.20.221' BIND_BASE = 'ou=RootOU,dc=ad,dc=livesense,dc=co,dc=jp' BIND_USER = 'cn=200071,ou=Common,ou=User,ou=RootOU,dc=ad,dc=livesense,dc=co,dc=jp' BIND_USER_PASSWORD = 'hogehoge' BIND_PORT = 389 BIND_METHOD = 'plain' ActiveLdap::Base.setup_connection( :host => HOST_IP_V4, :port => BIND_PORT, :method => BIND_METHOD, :base => BIND_BASE, :bind_dn => BIND_USER, :password => BIND_USER_PASSWORD) ※ReadOnlyでよければ、自分の社員番号のユーザーで問題なし Active Directoryへのconnectionを張る

Slide 30

Slide 30 text

LDAPクエリ 30 class User < ActiveLdap::Base ldap_mapping dn_attribute: "cn", prefix: '' end user = User.find('200071') #所属するグループの一覧を表示 user.memberOf.each do |member| p.member.rdns[0][‘CN’] end "G_触媒部_総務グループ“ "G_正社員“ "DL_SSLVPN_Permit“ … <出力> Active Directoryのユーザーオブジェクトを取得

Slide 31

Slide 31 text

LDAPクエリ • Railsに組み込んで、従業員マスタを作成してみる 31

Slide 32

Slide 32 text

LDAPクエリ • LDAPクエリを書く為には、LDAP識別名(dn)の記法と、 対象ドメインのOUのツリー構造を理解しておく必要があり ます。 • dn :LDAPオブジェクトを指定する識別名 • OU:オブジェクトを格納するコンテナ 32

Slide 33

Slide 33 text

LDAPクエリ 33 dn = 'cn=200071,ou=Common,ou=User,ou=RootOU,dc=ad,dc=livesense,dc=co,dc=jp' dn:カンマ区切りで識別子を並べた文字列 ドメイン OU オブジェクト名

Slide 34

Slide 34 text

LDAPクエリまとめ • LDAPクエリを活用すれば、ADのリソースに 他システムからアクセスできる • システム毎にアカウントの2重管理はせず、 ADにアカウントを集約することが可能 • LDAP認証を実装すれば、AD認証やSSOも実現可能 • 実際にAD認証機能を備えたパッケージも多い • Redmine、MS SQL Server、Google Apps、etc… 34

Slide 35

Slide 35 text

まとめ • Active Directoryにより管理者の運用負荷は大きく 低減される • Active Directoryを外部システムの認証基盤や 従業員マスタとして活用することが可能 35

Slide 36

Slide 36 text

36 ご静聴ありがとうございました