Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

【Windows Server 2016】Active Directoryの一時的な(時間制限付き)グループメンバーシップ機能の使い方

Active Directoryの一時的な(時間ベース)グループメンバーシップとは

Windows Server 2016のActive Directoryには、ユーザーを一定期間だけADセキュリティグループに追加できる「Temporary Group Membership(時間ベースの一時的メンバーシップ)」という便利な機能が搭載されています。

この機能を利用すると、ADセキュリティグループへの所属に基づく権限を、必要な期間だけユーザーに付与できます。指定した時間が経過すると、管理者が手動で操作しなくても、ユーザーは自動的にセキュリティグループから除外されます。

Privileged Access Management機能の有効化

一時的なグループメンバーシップを使用するには、Active DirectoryフォレストでPrivileged Access Management(PAM)機能を有効にする必要があります。削除済みオブジェクトを復元できる「ADごみ箱」と同様に、PAMは一度有効化すると無効化できない点に注意してください。

まず、ADフォレストがWindows Server 2016以上のフォレスト機能レベルで動作していることを確認します。

(Get-ADForest).ForestMode

【Windows Server 2016】Active Directoryの一時的な(時間制限付き)グループメンバーシップ機能の使い方

次に、AD PowerShellモジュールのコマンドで、現在のフォレストでPAM機能が有効になっているかどうかを確認します。

Get-ADOptionalFeature -filter "name -eq 'privileged access management feature'"

【Windows Server 2016】Active Directoryの一時的な(時間制限付き)グループメンバーシップ機能の使い方

確認するのは EnabledScopes パラメーターの値です。この値が空の場合、そのフォレストではPAM機能がまだ有効になっていません。

PAMを有効にするには、Enable-ADOptionalFeature コマンドレットを実行し、引数としてフォレスト名を指定します。

Enable-ADOptionalFeature 'Privileged Access Management Feature' -Scope ForestOrConfigurationSet -Target contoso.com

【Windows Server 2016】Active Directoryの一時的な(時間制限付き)グループメンバーシップ機能の使い方

コマンド実行時に「Enable-ADOptionalFeature: The SMO role ownership could not be verified because its directory partition has not replicated successfully with at least one replication partner」というエラーが表示された場合は、ドメインコントローラーの状態、ADレプリケーションの状況、FSMOロール所有者の可用性を確認し、ADレプリケーションを手動で強制実行してください。

その後、以下のコマンドでEnabledScopesフィールドが空でないことを確認します。

Get-ADOptionalFeature -filter "name -eq 'privileged access management feature'" | select EnabledScopes

PowerShellでユーザーを一時的にグループへ追加する

ユーザーをADグループに一時的に追加するには、PowerShellコマンドレットを使用する必要があります。GUI管理ツール(dsa.msc)からの一時的な追加はサポートされていない点に留意してください。

PAMを有効化した後、Add-ADGroupMemberコマンドレットの専用パラメーターMemberTimeToLiveを使用して、ユーザーをADグループに追加できます。保持期間(TTL)はNew-TimeSpanコマンドレットで指定すると便利です。例として、ユーザーtest1をDomain Adminsグループに15分間だけ追加してみましょう。

$ttl = New-TimeSpan -Minutes 15
Add-ADGroupMember -Identity "Domain Admins" -Members test1 -MemberTimeToLive $ttl

注意:Enterprise AdminsやDomain Adminsなどの特権ドメイングループへの一時的なアクセス権付与に、この機能を使用することは推奨されません。一時的なグループメンバーシップは通常、リソースグループへのアクセス権付与に使用します。管理権限を委譲する場合は、Active Directoryの委任機能やPowerShell Just Enough Administration(JEA)を活用してください。

残りのメンバーシップ時間の確認方法

ユーザーがあとどれくらいの時間グループのメンバーでいられるかは、Get-ADGroupコマンドレットで確認できます。

Get-ADGroup 'Domain Admins' -Property member –ShowMemberTimeToLive

【Windows Server 2016】Active Directoryの一時的な(時間制限付き)グループメンバーシップ機能の使い方

コマンドの出力には、グループメンバーとして <TTL=187,CN=test1,CN=Users,DC=woshub,DC=loc> のようなエントリが表示されます。TTLの値は秒単位です。これは、このユーザーがDomain Adminsグループに一時的に追加されており、187秒後に自動的にグループから除外されることを意味します。

Kerberosチケットへの影響

ユーザーのKerberosチケットも同様に失効します。これは、KDC(キー配布センター)が、一時的なグループメンバーシップを持つユーザーに対して、TTL値に応じた有効期限の短いチケットを発行する仕組みになっているためです。

次回のKerberosチケット更新時刻は、次のコマンドで確認できます。

klist

TGTチケットの次回更新時刻は、出力のRenew Timeパラメーターに表示されます。なお、klistコマンドを利用すれば、ログオフせずにADグループメンバーシップ情報を更新(更新)することも可能です。

【Windows Server 2016】Active Directoryの一時的な(時間制限付き)グループメンバーシップ機能の使い方

Azure AD Connectとのハイブリッド環境での注意点

オンプレミスのActive DirectoryからAzure AD Connect経由でAzure ADへグループを同期しているハイブリッド環境では注意が必要です。クラウド側の同期間隔の設定を考慮した設計を行うようにしましょう。

動的オブジェクト(dynamicObject)による一時的なADグループの作成

また、Windows Server 2003以降のフォレスト機能レベルのADでは、グループメンバーだけでなく、一時的なADグループ自体を作成することもできます。このようなグループにはdynamicObjectクラスが使用され、自動削除はActive Directoryのガベージコレクションプロセスによって実行されます。

例えば、1ヶ月後(2592000秒 = 31 × 24 × 60 × 60)に自動的に削除される一時グループを作成するには、次のPowerShellスクリプトを使用します。

$OU = [adsi]"LDAP://OU=Groups,OU=Munich,OU=DE,DC=woshub,DC=loc"
$Group = $OU.Create("group","cn=MUN-FS01_Public_tmp")
$Group.PutEx(2,"objectClass",@("dynamicObject","group"))
$Group.Put("entryTTL","2678400")
$Group.SetInfo()

ADUCコンソールでグループの属性を開き、entryTTL属性を確認してください。この属性は、そのADグループが削除されるまでの残り秒数を示しています。

【Windows Server 2016】Active Directoryの一時的な(時間制限付き)グループメンバーシップ機能の使い方

まとめ

以前は、一時的なADグループメンバーシップを実現するために、動的オブジェクトや独自スクリプト、タスクスケジューラ、さらにはMicrosoft Forefront Identity Managerのような複雑なシステムを組み合わせる必要がありました。Windows Server 2016/2019では、こうした便利な機能が標準機能として提供されるようになり、特権の一時付与やアクセス権の期限管理が格段に簡単になりました。

  1. RSATをインストールせずにPowerShellのActive Directoryモジュールを展開する方法

    はじめに以前の記事では、Set-ADComputerコマンドレットをGPOのログオンスクリプトで使用し、現在ログオンしているユーザーの情報を各ADコンピューターオブジェクトのプロパティに保存する方法をご紹介しました。これに対して読者から、「この方法を実行するには、すべてのユーザーコンピューターにRSAT(リモートサーバー管理ツール)とActive Directory用Windows PowerShellモジュールをインストールする必要があり、非常に手間がかかる」という妥当な指摘がありました。そこで本記事では、ユーザーコンピューターにRSATをインストールすることなく、PowerShellのAc

  2. Windows 10でActive Directoryを有効にする方法【RSAT導入から設定まで解説】

    Active Directoryは、Windows Server環境を管理するための重要なツールです。ネットワーク上のユーザーやリソースへのアクセス権限を、管理者が制御・付与するために使用されます。Windows PCにはデフォルトではインストールされていませんが、Microsoftの公式サイトから入手して、自分のデバイスにインストールすることが可能です。 「Windows 10でActive Directoryをどう使えばいいのか分からない」とお悩みの方も多いのではないでしょうか。本記事では、Windows 10でActive Directoryを有効にする方法を、初心者の方にも分かりやすく