第5章: ユーザーおよびグループ管理の自動化
1. この章で解説する主要な技術・概念(箇条書き)
- Active Directoryの基本とローカルユーザー/グループ管理との違い
- ドメイン環境とワークグループ環境における管理範囲・方法の違い
- Active Directoryモジュールの導入と基本コマンド
Install-WindowsFeature AD-Domain-Services
, Import-Module ActiveDirectory
Get-ADUser
, New-ADUser
, Set-ADUser
など
- ユーザーアカウントの一括作成・設定変更
- CSVインポートやスクリプトによる繰り返し操作の自動化
- スクリプト構造の工夫とエラーハンドリング
- グループの管理とアクセス権限の自動化
- セキュリティグループ/配布グループ、
New-ADGroup
, Add-ADGroupMember
- ACE(Access Control Entry)の付与例
- ローカルアカウント管理との違いと両者の使い分け
- 小規模サーバー単位のローカルユーザー vs. 大規模ドメインでの一元管理
- ベストプラクティスと実務例
- 大規模ユーザー管理フロー、パスワードポリシーとの連携、監査ログの重要性
2. Active Directoryの基本とローカルユーザー管理との違い
2-1. AD環境とワークグループ環境
- Active Directory (AD)
- ドメインコントローラー(DC)を中心に、ユーザーやコンピュータを一元管理できる。
- ユーザーアカウントはドメイン全体で有効となり、別サーバーにログインする際も同じ資格情報が使える。
- Group Policy(GPO)を使って、セキュリティポリシーやソフトウェア配布を全クライアントに適用可能。
- ワークグループ環境
- 各サーバーが独立していて、ローカルユーザー/グループを管理する必要がある。
- 小規模・簡易運用に適するが、複数サーバーを横断的に管理する場合は手間が増える。
2-2. ローカルユーザーとドメインユーザーの使い分け
- ローカルユーザー
- 該当サーバー(またはクライアント)だけに存在するアカウント
- 作成やパスワード変更はサーバー単位で行う必要がある
- 小規模サーバーや単発用途、緊急用にAdministratorのローカルアカウントを残しておくケースが多い
- ドメインユーザー
- ADのドメインコントローラーで管理
- 1つのドメイン参加サーバーに対して複数アカウントが共有され、認証やパスワード変更を集中管理
3. Active Directoryモジュールの導入と基本コマンド
3-1. ADモジュールのインストールと読み込み
- サーバー側(ドメインコントローラーや管理サーバー)で、AD DS(Active Directory Domain Services)がインストールされていると、多くの場合
ActiveDirectory
モジュールが利用可能。
- クライアント(Windows 10/11) から操作するには、RSAT (Remote Server Administration Tools) を導入し、
Active Directory
モジュールを有効化する必要がある。
# ADモジュールを読み込めるか確認
Import-Module ActiveDirectory
Get-Command -Module ActiveDirectory
- これで
Get-ADUser
, New-ADGroup
など多数のコマンドが表示されればOK。
3-2. 代表的なコマンドレット一覧
Get-ADUser
/ Set-ADUser
/ New-ADUser
: ユーザーアカウントの取得・変更・作成
Get-ADGroup
/ New-ADGroup
/ Add-ADGroupMember
: グループの取得・作成・メンバー管理
Move-ADObject
: ユーザー・グループなどのOU移動
Remove-ADUser
/ Remove-ADGroup
: 不要オブジェクトの削除
# 例: AD内のすべてのユーザー取得(最大10000件など制限あり)
Get-ADUser -Filter *
-Filter *
はすべて取得を意味するが、大規模環境だと多量のオブジェクトが返るので注意。
4. ユーザーアカウントの一括作成・設定変更
4-1. CSVインポートを用いたユーザー大量作成例
- CSVファイル (UserList.csv) 作成
SamAccountName,Name,UserPrincipalName,OU,Password
jsmith,John Smith,jsmith@example.local,OU=Users,DC=example,DC=local,P@ssw0rd
mjones,Mary Jones,mjones@example.local,OU=Sales,DC=example,DC=local,P@ssw0rd
- スクリプト(CreateUsers.ps1)
$users = Import-Csv -Path "C:\Scripts\UserList.csv"
foreach($u in $users) {
New-ADUser -SamAccountName $u.SamAccountName `
-Name $u.Name `
-UserPrincipalName $u.UserPrincipalName `
-Path $u.OU `
-AccountPassword (ConvertTo-SecureString $u.Password -AsPlainText -Force) `
-Enabled $true
Write-Host "Created user:" $u.SamAccountName
}
- 実行と結果確認
.\CreateUsers.ps1
# ADUC (Active Directory Users and Computers) などで確認
4-2. パスワード変更や属性更新の例
# 既存ユーザーのディスプレイ名や部署情報を更新
Set-ADUser -Identity jsmith -DisplayName "John S. Smith" -Department "Sales"
# パスワードをリセットし、アカウントを有効化
Set-ADAccountPassword -Identity jsmith -NewPassword (ConvertTo-SecureString "P@ssw0rd2" -AsPlainText -Force)
Enable-ADAccount -Identity jsmith
Set-ADUser
で属性を更新できるが、パスワード変更はSet-ADAccountPassword
、有効化/無効化はEnable-ADAccount
/Disable-ADAccount
を使う点に注意。
5. グループの管理とアクセス権限の自動化
5-1. グループの種類
- セキュリティグループ
- ファイルシステムやフォルダ、共有などにアクセス権を付与する際に使用
- ドメインローカル、グローバル、ユニバーサルなどスコープが異なる
- 配布グループ
- メーリングリストなどに用いられ、セキュリティ的なアクセス制御には利用不可
5-2. グループ作成・メンバーシップ管理
New-ADGroup -Name "SalesDept" -GroupScope Global -GroupCategory Security -Path "OU=Groups,DC=example,DC=local"
Add-ADGroupMember -Identity "SalesDept" -Members "jsmith","mjones"
-GroupScope Global/DomainLocal/Universal
: グループが有効な範囲を決定。
-GroupCategory Security/Distribution
: セキュリティ権限付与か、配布用かを選択。
5-3. ファイルサーバーに対するアクセス権限自動付与
- ファイルサーバーの共有フォルダ、NTFS権限をグループに紐づけし、ユーザーはそのグループに所属させる管理が一般的。
- PowerShellによるACL設定例:
$acl = Get-Acl "D:\Data\Sales"
$permission = "EXAMPLE\SalesDept","Modify","ContainerInherit,ObjectInherit","None","Allow"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($permission)
$acl.AddAccessRule($rule)
Set-Acl -Path "D:\Data\Sales" -AclObject $acl
- こうして「SalesDeptグループ」に対して
Modify
権限を与えれば、ユーザーをグループに追加・削除するだけでアクセス管理を一元化できる。
6. ローカルアカウント管理との違いと両者の使い分け
6-1. ローカルアカウントの作成例
# Server Coreなどでローカルユーザー「AppRunner」を作り、Administratorsに追加
New-LocalUser -Name "AppRunner" -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
Add-LocalGroupMember -Group "Administrators" -Member "AppRunner"
- Windows Server 2012以降では
LocalAccounts
モジュールにて New-LocalUser
, Set-LocalUser
が利用可能。
- ローカルユーザーは該当サーバーでのみ通用するため、大規模運用には向かないが、テスト用や特定アプリの実行アカウントには便利。
6-2. 使い分けシナリオ
- 大半のユーザー管理:ドメインのADアカウントで一元化。
- 特定のサーバー限定ユーザー:ローカルアカウントを作成し、権限を最低限に絞る。
- セキュリティ的にも、ローカルAdministratorパスワードを「LAPS (Local Administrator Password Solution)」などで個別管理するなどの運用が推奨。
7. ベストプラクティスと実務的管理シナリオ
7-1. 大規模ユーザー管理フロー
- 入社時:CSVやデータベース連携で新入社員のADアカウントを自動作成、配属に応じてグループ付与
- 部署異動時:移動先部署のグループを付与し、旧部署グループを剥奪。OU変更も伴う場合は
Move-ADObject
などを使用
- 退職時:アカウントをDisable、一定期間後に削除。OneDriveやメールボックスのデータ移行など。
7-2. パスワードポリシー・監査との連携
- ADドメインのパスワードポリシーは「Default Domain Policy」または別GPOで設定。
- 例: 最小文字数、複雑性、最大有効期限などをPowerShell (
Set-GPRegistryValue
など) やGPMC管理で適用。
- ユーザー管理の変更履歴(作成/削除、グループメンバーシップ変更)はSecurityログにイベントID 4720(ユーザー作成)等で記録され、監査証跡として利用可能。
7-3. コマンド実行の構造化とモジュール化
- CSVインポートやグループ管理などが複雑化すると、スクリプトの共通関数をモジュール化しておくと保守しやすい。
- 例:
ADUserTools.psm1
の中に function New-BulkADUser { ... }
と定義し、他スクリプトからImport-Module ADUserTools
して利用。
8. 章末まとめと次章へのつながり
8-1. 学習のまとめ
- Active Directory環境におけるユーザー/グループ管理の概念を整理し、ローカルユーザーとの違いを明確にしました。
- PowerShellのActiveDirectoryモジュールを使うと、大量のユーザー作成やグループメンバーシップ管理を数行のスクリプトで実現できるメリットを把握。
- CSVインポートによる一括作成や、既存ユーザーの属性更新、グループ追加・削除の例を通じて、実務での自動化イメージを具体化しました。
- ファイルサーバーなどのリソースアクセス権限をセキュリティグループで統一管理するメリットと、ACL設定をPowerShellで自動化できる手法を確認しました。
- ベストプラクティスとして、大規模運用のフロー(入社・異動・退職)やパスワードポリシーとの連携、監査ログの活用に言及し、運用上の一貫性を高めるポイントを示しました。
8-2. 次章へのつながり
- 次章(第6章)は、グループポリシー(GPO)の設定と管理を扱います。ユーザー管理と合わせて、クライアントやサーバーに一括でポリシーを適用し、セキュリティ強化や設定の標準化を図る流れを学びます。
- ここで習得したユーザーおよびグループ管理の概念は、GPOのフィルタリングやOU単位のポリシー適用とも深く関連するため、大規模ドメインの運用において非常に重要となります。