Windows Server 2022 with PS 第5章

第5章: ユーザーおよびグループ管理の自動化


1. この章で解説する主要な技術・概念(箇条書き)

  1. Active Directoryの基本とローカルユーザー/グループ管理との違い
    • ドメイン環境とワークグループ環境における管理範囲・方法の違い
  2. Active Directoryモジュールの導入と基本コマンド
    • Install-WindowsFeature AD-Domain-Services, Import-Module ActiveDirectory
    • Get-ADUser, New-ADUser, Set-ADUser など
  3. ユーザーアカウントの一括作成・設定変更
    • CSVインポートやスクリプトによる繰り返し操作の自動化
    • スクリプト構造の工夫とエラーハンドリング
  4. グループの管理とアクセス権限の自動化
    • セキュリティグループ/配布グループ、New-ADGroup, Add-ADGroupMember
    • ACE(Access Control Entry)の付与例
  5. ローカルアカウント管理との違いと両者の使い分け
    • 小規模サーバー単位のローカルユーザー vs. 大規模ドメインでの一元管理
  6. ベストプラクティスと実務例
    • 大規模ユーザー管理フロー、パスワードポリシーとの連携、監査ログの重要性

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. 代表的なコマンドレット一覧

  1. Get-ADUser / Set-ADUser / New-ADUser : ユーザーアカウントの取得・変更・作成
  2. Get-ADGroup / New-ADGroup / Add-ADGroupMember : グループの取得・作成・メンバー管理
  3. Move-ADObject : ユーザー・グループなどのOU移動
  4. Remove-ADUser / Remove-ADGroup : 不要オブジェクトの削除
# 例: AD内のすべてのユーザー取得(最大10000件など制限あり)
Get-ADUser -Filter *
  • -Filter * はすべて取得を意味するが、大規模環境だと多量のオブジェクトが返るので注意。

4. ユーザーアカウントの一括作成・設定変更

4-1. CSVインポートを用いたユーザー大量作成例

  1. 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
  1. スクリプト(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
   }
  1. 実行と結果確認
   .\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. グループの種類

  1. セキュリティグループ
    • ファイルシステムやフォルダ、共有などにアクセス権を付与する際に使用
    • ドメインローカル、グローバル、ユニバーサルなどスコープが異なる
  2. 配布グループ
    • メーリングリストなどに用いられ、セキュリティ的なアクセス制御には利用不可

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. 大規模ユーザー管理フロー

  1. 入社時:CSVやデータベース連携で新入社員のADアカウントを自動作成、配属に応じてグループ付与
  2. 部署異動時:移動先部署のグループを付与し、旧部署グループを剥奪。OU変更も伴う場合はMove-ADObjectなどを使用
  3. 退職時:アカウントを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単位のポリシー適用とも深く関連するため、大規模ドメインの運用において非常に重要となります。