Weitere ähnliche Inhalte Ähnlich wie 開発者のためのActive Directory講座 (20) Mehr von junichi anno (20) 開発者のためのActive Directory講座1. 救世主降臨!
ACTIVE DIRECTORY + POWERSHELL が開発者を救う!?
開発者のための最新ACTIVE DIRECTORY講座
マイクロソフト株式会社
エバンジェリスト
安納 順一 Anno Junichi
http://blogs.technet.com/junichia/
4. 4
ある日の会話(ほぼ実話)
登場人物
PM :プロジェクトマネージャー(ンフラ担当SEが兼任)
DEV :業務ゕプリ設計/開発担当
PM 「例の業務ゕプリだけど、認証はどうするの?」
DEV 「もちろん実装しますよ。ローカルにDBもてばいいんですよね?」
PM 「だめだよ。Active Directory で認証するようにしよ」
DEV 「えぇ、使ったことないですよ。Active Directory なんて」
PM 「別に難しくないよ」
DEV 「実績が無いので開発コストが増えますよ?」
PM 「どれくらい?」
DEV 「5人月とか?」
PM 「そんな馬鹿なぁ!それに予算FIXしてるのに、いまさら無理だって~」
DEV 「Active Directoryから同期してくればいいじゃないですか」
PM 「じゃ、同期する部分作ってくれる?」
DEV 「そんなのバッチ作れば済むじゃないですか」
PM 「…」
6. 6
AGENDA
はじめに
マクロソフト製品群におけるAD DSの位置づけ
ITシステムにおけるAD DSの位置づけ
AD DSは開発者の救世主となるか?
開発者にとっての AD DS
AD DS「さわりかた」超基礎
開発者のための AD DS 最新トピック 2010年度版
New! AD Recycle Bin で削除したオブジェクトを復活
Windows PowerShell と AD DS
まずは AD の構造から
AD DS用コマンドレットの使い方
Appendix
10. 10
ITシステムにおける AD DS の位置づけ
業務ゕプリA(Linux)
業務ゕプリB(Windows)
フゔルサーバー(Windows)
メールサーバー(Linux)
Active Directory Domain Service
認証/ユーザー情報問合せ
(ADO/ADSI)
12. 12
開発者視点での AD DS のメリット
Windowsクラゕントにログオンしているユーザーは、すでに「資格情
報」を保持しているため、ユーザーIDを改めて入力させる必要は無いし、
パスワードの保存も必要ない。
管理者のみが行える操作、ユーザーが行える操作、部門によって行える操
作等の判断は、Active Directory の組織情報やタトル、所属グループ等
から判断すればよく、ローカルで管理する必要は無い。
ID統制には大切な視点!
矛盾のないID管理は、可能な限り重複管理を避
けることから始まります!
氏名や所属など、ユーザー情報はAD DSに格納されているので、ローカル
DBに保存する必要が無い。ただし、情報漏えいに関して注意も必要(後
述)。
13. 13
(参考)AD DSの注意すべき点
AD DSのリポジトリは LDAP であり、AD DSで認証を受けたユー
ザー(Authenticated Users)は、ほぼ全てのユーザー情報を「参
照」することができる。
※Anonymous はゕクセスできません
電話番号や住所、生年月日等、プラバシーにかかわる情報に
ついてはActive Directory 管理者側の意識的な対応が必須!
※特定のAttributeへのゕクセス権を本人のみにする等
16. 16
AD DS「さわりかた」の超基礎 ①
~WINDOWS POWERSHELL 編
PS C:>$env:UserName
• 現在ログオンしているユーザーID
PS C:>Import-Module ActiveDirectory
• Active Directoryモジュールの読み込み
PS C:>Get-Command –module ActiveDirectory | Out-GridView
• Active Directory 関連コマンド一覧の参照
PS C:>$userid = $env:UserName
PS C:>Get-ADUser $userid
• 現在ログオンしているユーザーIDの情報
PS C:>$userid = $env:UserName
PS C:>$objUser = Get-ADUser $userid –properties displayName
PS C:>$displayName = $objUser.dislayName
• ユーザーのプロパテゖを参照
17. 17
AD DS「さわりかた」の超基礎 ②
~WINDOWS POWERSHELL 編
PS C:>cd AD:
PS AD:>dir
Name ObjectClass DistinguishedName
-------------------------------------------------------------------------
Contoso domainDNS dc=Contoso,dc=Com
Configuration configuration cn=Configuration,dc=contoso,…
Schema dMD cn=schema,cn=Configuration,…
・
・
PS AD:¥>cd ‘.¥DC=Contoso,DC=Com’
PS AD:¥DC=Contoso,DC=Com>dir
Name ObjectClass DistinguishedName
-------------------------------------------------------------------------
Builtin BuiltinDomain cn=Builtin,dc=contoso,dc=com
Computers container cn=Computers,dc=contoso,dc…
・
・
• AD DSをブラウズ
18. 18
AD DS「さわりかた」の超基礎 ③
~WINDOWS POWERSHELL 編
• ユーザーIDに test を含むユーザーを検索する
PS C:¥>Get-ADUser –Filter {sAMAccountName –like “*test*”} | ft
sAMAccountName
• 無効化されたユーザーを検索する
PS C:¥>Search-ADAccount –AccountDisabled -UserOnly
• パスワードの有効期限が切れたユーザーを検索する
PS C:¥>Search-ADAccount –PasswordExpired -UserOnly
• ゕカウントの有効期限が切れたユーザーを検索する
PS C:¥>Search-ADAccount –AccountExpired -UserOnly
• ロックされたユーザーを検索する
PS C:¥>Search-ADAccount –LockOut -UserOnly
• パスワードが無期限のユーザーを検索する
PS C:¥>Search-ADAccount –PasswordNeverExpired -UserOnly
19. 19
AD DS「さわりかた」の超基礎 ④
~WINDOWS POWERSHELL 編
• 1年間ログオンしていないユーザーを検索する
※ただし最近作成したユーザーは除外する
PS C:¥>Search-ADAccount –AccountInactive –TimeSpan 365 -usersonly
| Foreach-Object {(Get-ADUser $_.Name –Properties WhenCreated)}
| Where-Object {$_.WhenCreated –lt “2009/11/18 17:00:00”}
今
2009/11/18
17:00:00
除外
今から365日前
この間にログオンしていないユーザー
21. 21
NEW! ACTIVE DIRECTORY RECYCLE BIN
機能
削除したユーザーを完全復活!
既定で180日間保持(変更可能)
削除状態からの復旧であればAuthoritative Restoreは不要
属性情報の紛失時には使えない
Linked-Value も完全復活
グループメンバーシップやグループメンバー など
留意事項(ご参考)
Active Directory フォレスト機能レベル
Windows Server 2008 R2
規定では無効(有効にしたら元には戻せない)
DITの容量が10~15%程度増加(目安)
操作は Windows PowerShell を使用
36. 36
ツリーの復旧
1. 親を復旧
2. 親が「Finance_Department」であるものを復旧
3. 親が「Admins」であるものを復旧
Get-ADObject -ldapFilter:"(msDS-LastKnownRDN=Finance)"
–IncludeDeletedObjects
| Restore-ADObject
Get-ADObject -SearchBase "CN=Deleted Objects,DC=contoso,DC=com"
-Filter {lastKnownParent -eq "OU=Finance,DC=contoso,DC=com"}
-IncludeDeletedObjects
| Restore-ADObject
Get-ADObject -SearchBase "CN=Deleted Objects,DC=contoso,DC=com"
-Filter {lastKnownParent -eq "OU=Admins,OU=Finance,DC=contoso,com"}
-IncludeDeletedObjects
| Restore-ADObject
37. 37
削除済オブジェクト の ライフタイム を変更する
リサイクル済オブジェクトのライフタイムを変更する
(参考)ラフタムを変更するには
Set-ADObject -Identity “CN=Directory Service, CN=Windows NT,
CN=Services, CN=Configuration, DC=mydomain, DC=com”
–Partition “CN=Configuration,DC=mydomain,DC=com”
–Replace:@{“msDS-DeletedObjectLifetime” = 60}
Set-ADObject -Identity “CN=Directory Service, CN=Windows NT,
CN=Services, CN=Configuration,DC=mydomain, DC=com”
–Partition “CN=Configuration,DC=mydomain,DC=com”
–Replace:@{“tombstoneLifetime” = 365}
39. 39
VISUAL STUDIO から POWERSHELL を呼び出す
.Net Framework
ンフラSEは
ここも欲しい!
仮想マシン
Visual Studio
ここがないと
自動化できない
40. 40
まとめ
• PowerShell により Active Directory が近くなりました
• Active Directory べったりのゕプリは引きが強い!
• ンフラSEはみなさんを待っています!
Silverlight を駆使し、無駄にグリグリまわる管理ツールの開発を!
44. 44
POWERSHELLを使ってみよう
Sample : 指定したフォルダのフゔル一覧
Get-ChildItem c:¥tmp |
Where-Object {!( $_.Attributes –band 16 )} |
Select-Object Name,Attributes
sample03.ps1
PowerShell コンソールから
コマンドプロンプトから
(参考)継続行 について
あきらかに継続することがわかる場合には、行の継続は自動的に判断してくれる
PowerShell コンソールから入力した場合も同様
$_.Attributes and 010000 = True
※-band はビット演算子 and
46. 46
引数を受け取る方法
バッチ
VBScript
PowerShell
C:¥> <スクリプト名> My name is “Junichi Anno” .
Echo %1 / %2 / %3 / %4
Shift
Echo %1 / %2 / %3 / %4
Set FullName=%3
Echo %FullName:"=%
Set Args = Wscript.Arguments
If Args.Count <> 0 Then
For Each n in Args
Wscript.Echo n
Next
End If
foreach ( $a in $args )
{
Write-Output $a
}
Write-Output $args[3]
%1 ~ %9 までの変数で受け取る
My / name / is / "Junichi Anno“
name / is / "Junichi Anno" / .
Junichi Anno
My
name
is
Junichi Anno
.
My
name
is
Junichi Anno
.
Junichi Anno
48. 48
変数の扱いと値の代入
バッチ
WSH
PowerShell
Set LastName=Anno
Set FirstName=Junichi
Set FullName=“%FirstName% %LastName%”
Set FullName=%FullName:"=%
Echo %FullName%
Echo %FullName:n=x%
Echo %FullName:~8%
Echo %FullName:~8,1%
Echo %FullName:~-4,3%
If /I %FullName:~-1,1%==o Echo OK
Junichi Anno
Juxichi Axxo
Anno
A
Ann
OK
FirstName = "Junichi"
LastName = "Anno"
FullName = FirstName & " " & LastName
Wscript.Echo Split(FullName," ")(0) Junichi
$FirstName = "Junichi"
$LastName = "Anno"
$FullName = $FirstName + " " + $LastName
Write-Output $FullName
$arrFullName = $FullName.Split(" ")
Write-Output $arrFullname[0]
Junichi Anno
Junichi
49. 49
入出力方法
これを抑えておけば、ひとまずたいていのことはできます
バッチ
画面への出力 :Echo “Hello World”
画面からの入力 :「choice」 コマンド または 「set /p」コマンド
フゔルへの出力 :dir > list.txt または dir >> list.txt
フゔルから入力 : for /f "delims=" %i in ('type c:¥tmp¥list.txt') do @echo %i
WSH(VBScript)
画面への出力 :Wscript.Echo “Hello World”
画面からの入力 :Stdin.ReadLine
フゔルへの出力 :fso.OpenTextFile(“c:¥list.txt”, 2 or 8)
フゔルから入力 :fso.OpenTextFile(“c:¥list.txt”, 1)
PowerShell
画面への出力 :Write-Output “Hello”
画面からの入力 :$InputData = Read-Host
フゔルへの出力 :Out-File -filepath C:¥tmp¥list.txt -inputobject $Record
フゔルから入力 : $file = Get-Content -Path c:¥tmp¥list.txt
53. 53
(参考)管理されたサービスゕカウントの利用手順
PS> New-ADServiceAccount –Name SA01
ゕカウントを作成する
作成したゕカウントとコンピュータを関連付け
PS> Add-ADComputerServiceAccount –Identity <ComputerName>
-ServiceAccount SA01
※再度 Get-ADServiceAccount で、HostComputersに、指定したComputerNameのDNが
登録されていることを確認
作成したゕカウントをコンピュータに登録(ローカルで実施)
PS> Install-ADServiceAccount -Identity SA01
作成したゕカウントをサービスに登録
サービススナップンでゕカウントを指定
PS>Get-ADServiceAccount SA01
※HostComputersとUserPrincipalNameが空であることを確認
ゕカウントを確認する
59. 59
機能
Active DirectoryにゕクセスするためのWEBサービスを提供
TCP/9389
AD DS、AD LDS両方にゕクセス可能
WS* および WCF プロトコルを使用
留意点
Windows Server 2008 R2 DC
または AD LDS ンスタンス
Windows Server 2003 & 2008 DCの
場合は Active Directory Management
Gateway (ADMG) のンストールが必要
http://support.microsoft.com/kb/969041/ja
IIS は必要ない
ACTIVE DIRECTORY WEB SERVICES (ADWS)
LDAP
S.DS.P / S.DS.AM / S.DS.AD
Active Directory Core
Web Services
AD PowerShell MUX
WCF WPF
Administrative
Center
BPA
WCF
61. 61
(参考)各新機能に必要な実装
ファンクションレベル 使用できる新機能
Windows7 または WS2008R2 クライアント
オフラインドメインジョイン
マネージドサービスアカウント
+
ADWS または ADMG(2008/2003)
Active Directory 管理センター
PowerShell for Active
Directory
+
Windows Server 2008 R2 DC
ベストプラクティスアナライザ
回復コンソール パスワード同期
(QFEにより Windows Server 2008でも使用可
能)
+
Windows Server 2008 R2 ドメイン
ファンクションレベル
認証メカニズム保障
+
Windows Server 2008 R2 フォレスト
ファンクションレベル
ゴミ箱