Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

Active Directory のクエリベースグループを作成する方法

Active Directory のクエリベースグループを作成する方法

Jan 23, 2024

Using Active Directory(AD)のセキュリティ グループおよび配布グループを使用することは、IT 管理を簡素化し、セキュリティを強化し、効果的なコミュニケーションを実現するためのベストプラクティスです。ただし、多くの組織では、これらのグループのメンバーシップが、特定のユーザー、コンピューター、その他のエンティティの明示的なリストによって定義されています。このような静的グループの使用は、労力がかかるうえにミスが起きやすくなります。なぜなら、従業員が入社したり役割が変わったり、デバイスが追加または退役したり、その他の変更が発生した場合に、関連するすべてのグループを手作業で更新する必要があるからです。

セキュリティを向上させ、ITの運用負荷を減らす役立つ代替手段があります。それは、ADクエリを実行してグループのメンバーシップを動的に判定することです。Microsoftは、LDAPクエリに基づいて配布(Distribution)グループを作成するための、使いやすいインターフェースを用意しています。残念ながら、クエリベースのセキュリティグループを作成するための対応するGUIはありません。クエリベースのセキュリティグループはADグループの大部分を占めますが、ネイティブに用意されている唯一の選択肢は、Windows PowerShellを使ったスクリプトを作成することです。

この記事では、2種類の動的グループを作成するためのネイティブ(標準)手順を説明したうえで、強力な代替案を提示します。Netwrix Directory Manager の Smart Groups です。

配布(Distribution)グループ

まずは配布(Distribution)グループから始めましょう。配布グループは、より一般的には配布リスト(distribution lists)と呼ばれます。配布リストを使うことで、ユーザーは人のグループに対してメールをより効率的かつ正確に送信できます。たとえば、部署やチームごとに配布リストを作成し、さらに各オフィス所在地ごとにも配布リストを作成することができます。これらの配布リストは Global Address List (GAL) に表示されるため、業務ユーザーは GAL から1つの項目を選ぶだけで、同僚全体のグループにメッセージを送信できます。

静的な配布(Distribution)グループの欠点

しかし、従業員は絶えず入社・退職しており、組織内で役割も変わるため、配布リストを常に最新の状態に保とうとするのは、IT チームにとって手間のかかる作業です。場合によっては、配布リストを正しく設定できているかを確認するために必要な洞察がそもそもないこともあります。

配布リストを最新の状態に保てないことの影響は深刻になり得ます。リストに含まれるべきユーザーが含まれていない場合、そのユーザーは、自分の生産性や重要な業務プロセスにとって役立つ可能性のあるメッセージを受け取れません。さらに悪いことに、不正確な配布リストはセキュリティおよびコンプライアンス上の問題にもなり得ます。メッセージに含まれる情報を見てはいけない個人に対して送信されてしまう可能性があるためです。

クエリベースの配布グループ

そこで役立つのが、Microsoft が Exchange Server 2003 で導入したクエリベースの配布グループです。これらは標準の配布グループと同じ機能を提供しますが、メンバーシップはユーザーの固定リストによって決まるわけではありません。代わりに、誰かが関連するグループにメールを送信するたびに実行される LDAP クエリによって、メンバーシップが動的に生成されます。

たとえば、組織内の特定の部署に現在所属しているすべてのユーザーを、そのグループのメンバーとして定義する LDAP クエリを作成できます。あるユーザーが別の部署に異動した場合、そのユーザーの AD ユーザーオブジェクトが更新されるとすぐに、配布グループ宛に送られたメールを受け取らなくなります。つまり、配布リストのメンバーシップを手動で変更する必要がなくなります。

配布グループに関連付けられたクエリは、Active Directory の msExchDynamicDLFilter および msExchQueryFilter で確認できます。

Microsoft Exchange を使用してクエリベースの配布グループを作成する方法

クエリベースの配布グループは作成が簡単です:

  1. Exchange 管理センターを起動し、左側のウィンドウで Recipients を選択します。
  2. 次の場所に移動します: Groups > New > Dynamic distribution group
  3. 「新しい動的分配グループ(New Dynamic Distribution Group)」ウィザードで、新しいリストの次のプロパティを指定します。
  4. グループの名前、エイリアス、および説明
  5. グループを作成する組織単位(OU)
  6. グループの所有者(任意ですが推奨)
  7. 受信者の種類(例:リソース メールボックス、または Exchange メールボックスを持つユーザー)
  8. 部門や地理的な所在地など、ユーザーが配布リストのメンバーであるかどうかを判断する基準
  9. 保存 をクリックしてグループを作成します。

Exchange 経由で作成するクエリベースの配布グループの制限

Exchange 経由で作成するクエリベースの配布グループは、静的な配布リストよりも正確で管理しやすいものの、いくつか重要な特性があります。

  • 配布リストのメンバーシップを判断するための属性は、いくつかの共通のユーザー属性(コンテナー、州または都道府県、会社、部署)と、いくつかのカスタム属性に限られます。
  • 配布リストのメンバーシップは、そのリストにメールが送信された時点で決定されます。そのため、ビジネス ユーザーは Outlook クライアントで配布リストのメンバーを表示できず、結果として、リストに送信したメッセージが誰に届くかを正確に把握できません。
  • クエリベースの配布リストにメールを送信するたびに、クエリが評価されます。そのため、これらのグループを広範に利用すると、Exchange サーバーと global catalog に大きな負荷がかかります。

セキュリティ グループ

配布グループは確かに有用であり、セキュリティと生産性を確保するために最新の状態に保つ必要がありますが、 AD security グループのほうがさらに重要です。管理者は、組織内での役割に基づいて、ユーザーに必要なアクセス許可を迅速かつ正確にプロビジョニングするために AD セキュリティ グループを活用します。たとえば、「Sales」という名前のセキュリティ グループを作成し、営業部門のメンバーに必要な特定の情報、アプリケーション、およびその他のリソースへのアクセス権を付与できます。グループのメンバーであるすべてのユーザーは、そのグループに割り当てられているすべてのアクセス権を自動的に受け取ります。

静的セキュリティ グループの欠点

静的な配布グループ(static distribution groups)と同様に、IT チームは、各静的セキュリティ グループに含まれるメンバーが「まさに適切な」ユーザーであることを常に確実にするために、絶えず苦労しています。実際、従業員が組織内で時間の経過とともに役割を変えると、その職務にもう関係のないグループのメンバーシップを維持してしまうことはよくあります。たとえば、営業部からマーケティングへ異動した場合、営業関連のグループから誰もそのユーザーを削除していなければ、Sales データベースやその他のリソースに対する権限を引き続き保持してしまうことがよくあります。これらは本来、アクセスできなくなっているべきものです。さらに、過重な管理業務を抱える管理者は、たとえば「Managers」のようなグループにジュニア社員を追加してしまい、その結果、機密情報への不適切なアクセス権を与えてしまうなどのミスを犯す可能性があります。

このような過剰な権限付与(overprovisioning)は、セキュリティと規制順守(regulatory compliance)の両面において重大な問題です。逆に言えば、IT チームがユーザーに対して、所属すべきすべてのセキュリティ グループのメンバーシップを付与できていない場合もあります。その結果、重要な業務プロセスが中断されたり、ヘルプデスク(helpdesk)の負担が増大したりする可能性があります。

Microsoft PowerShell を使用したセキュリティ グループのメンバーシップの更新

管理者は Windows PowerShell を使用して、クエリに基づいてセキュリティ グループを作成し、そのメンバーを設定できます。また、メンバーを手動で追加・削除する代わりに、スクリプトを使用してセキュリティ グループのメンバーシップを更新することも可能です。たとえば、次のスクリプトでは、セキュリティ グループ PseudoDynamicGroup が指定した OU(desiredUsers):

Import-Module ActiveDirectory

      #Define the variable ‘groupname’ and load it with the members of the group ‘PseudoDynamicGroup’.

    $groupname = PseudoDynamicGroup

    #Define the variable ‘users’ and populate it with all the users in specified OU.

    $users = Get-ADUser -Filter * -SearchBase "ou=desiredUsers,dc=domain,dc=tld"

    #Iterate through the users in the ‘users’ variable. Add each of them to the group ‘PseudoDynamicGroup’ if they are not already a member.

    foreach($user in $users)

    {

      Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue

    }

    #Define the variable ‘members’ and populate it with the current membership of the security group ‘PseudoDynamicGroup’.

    $members = Get-ADGroupMember -Identity $groupname

    #Iterate through the users in the ‘members’ variable. If any user is not in the specified OU, remove them from ‘PseudoDynamicGroup’.

    foreach($member in $members)

    {

      if($member.distinguishedname -notlike "*ou=desiredUsers,dc=domain,dc=tld*")

      {

        Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname

      }

    }
      

PowerShellで作成するクエリベースのセキュリティ グループの制限

当然ながら、すべての AD セキュリティ グループごとに、このような PowerShell スクリプトを手作業で丹念に作成するのは、専門的なスキルが必要となる膨大な作業です。さらに、スクリプトは保守・管理が必要で、新しいプロジェクトやチームが作成されるたびに、新しいスクリプトを作成しなければなりません。多くの組織では、この難しくかつ重要な作業に専念するための IT リソースが単に不足しているため、Netwrix Directory Manager のような堅牢なサードパーティ製ソリューションを探すことになります。

Netwrix Directory Manager で作成するクエリベースのグループ

Netwrix Directory Manager を使用すると、Active Directory のクエリによってメンバーシップを動的に決定する配布リストとセキュリティ グループを簡単に作成できます。こうしたクエリベースのグループは Smart Groups と呼ばれます。

Smart Group を作成するには、グループ用の AD クエリを定義し、その実行スケジュールを設定するだけです。クエリが実行されるたびに、ディレクトリからオブジェクトを取得してグループのメンバーシップを更新します。クエリは手動で実行することも、定義したスケジュールに従って自動で実行することもできます。その結果、Exchange を介して作成する動的配布リストとは異なり、Netwrix Directory Manager の配布グループは、そのグループ宛にメールが送信されるたびにクエリを実行しないため、Exchange サーバーに過度な負荷をかけません。

クエリの作成

Netwrix Directory Manager の Query Designer を使うと、クエリを作成するための直感的なビジュアル インターフェイスが利用でき、PowerShell コマンドを書く必要はありません。次のタブがあります:

  • 全般 — グループのメンバーになれるオブジェクトの種類を選択します。
  • ストレージ — 任意の Exchange サーバーまたはメールボックス データベース上のメールボックスを選択します。
  • アイデンティティ ストア — グループ メンバーシップの条件を指定します。たとえば、場所、会社、部署、または従業員 ID の属性を使用でき、さらに AND や OR のような論理条件を適用して結果を絞り込むこともできます。
  • 詳細 — Oracle、ODBC、Microsoft SQL Server、またはテキストファイルなどの外部データソースを使用して、グループのメンバーシップを判断するのに役立てます。
  • 含める/除外する — クエリ結果に関係なく、グループのメンバーシップからオブジェクトを追加または削除します。
  • スマート スクリプト — VB Script のサポートを使って、自分でカスタムしたロジックに基づいてスクリプトを書きます。

結論

クエリベースのセキュリティ グループや配布リストは、IT の作業負荷を削減しながらセキュリティと業務の生産性を向上させるうえで非常に有益です。 ただし、ネイティブのオプションを使う場合は、動的配布リストによって Exchange リソースに過度な負荷がかかる可能性があり、動的セキュリティ リストの作成には多大な時間と PowerShell の専門知識が必要です。 Netwrix Directory Manager は、強力な代替手段を提供します。動的セキュリティ グループと配布リストを簡単に作成・維持できる Smart Groups です。

共有する

もっと詳しく

著者について

Asset Not Found

Jonathan Blackwell

ソフトウェア開発責任者

2012年以降、エンジニアでありイノベーターである Jonathan Blackwell は、エンジニアリングのリーダーシップを通じて Netwrix GroupID を、Active Directory および Azure AD 環境におけるグループとユーザー管理の最前線に押し上げてきました。開発、マーケティング、営業での経験により、Jonathan は Identity 市場と買い手の考え方を深く理解できています。