Windows Server 2012 の Active Directory で導入された Resource SID Compression の機能の影響により、AD を移行後にサードパーティー製の NAS へアクセスできなくる事象について解説します。
- 現象
ドメインに Windows Server 2012 以降のドメイン コントローラーを追加した後に、クライアントからサードパーティー製の NAS の共有フォルダーへアクセスを行うと、下記のようなアクセス許可がないことを示すメッセージが表示される場合があります。
\\FileServer\Share にアクセスできません
\\FileServer\Share に対するアクセス許可がありません。ネットワーク管理者にアクセス許可を要求してください。
本事象はサポート技術情報 2774190 で公開しています。
Resource SID Compression in Windows Server 2012 may cause authentication problems on NAS devices
サポート技術情報: 2774190
http://support.microsoft.com/kb/2774190
ユーザーが所属するグループの数が数百と多い環境では、Kerberos のトークンサイズが大きくなり、認証に失敗する場合があります。
そのような背景から、追加で SID を圧縮する機能 (Resource SID Compression) がWindows Server 2012 以降のドメイン コントローラーからサポートされました。
Windows Server 2012 以降の KDC はチケット発行時、使用されるリソースに関する SID 情報を圧縮しますが、NAS デバイスでこの圧縮機能を理解できない場合、アクセス拒否が発生します。
- 対処方法
NAS デバイスが Resource SID Compression をサポートしてない場合、上記のサポート技術情報の Resolution に記載の通り、下記のいずれかの方法で Resource SID Compression を無効化することで対処を行うことができます。
----------------------------
- 対処方法 1 (推奨)
----------------------------
以下の手順をご実施いただくことにより、NAS のコンピューター オブジェクトを指定して Resource SID Compression を無効化できます。
- 手順
1. 任意のドメイン コントローラー 1 台に、管理者権限を持つユーザーでログオンします。
2. 後述のサポート技術情報 2774190 に記載されているスクリプトをコピーし、以下のファイル名で保存します。
DisableKerbGroupCompression.ps1
-- ここから --
#
# Script to Disable Kerberos Group SID Compression #
~~(中略)~~
else
{ Write-Host "Resource group compression did not change."}
-- ここまで --
3. コマンド プロンプトを起動して、以下のコマンドを実行します。
Powershell.exe -ExecutionPolicy Unrestricted -File C:\Work\DisableKerbGroupCompression.ps1 <NAS のコンピューター オブジェクト名>
上記手順を実行することで、指定したコンピューター オブジェクトの msDS-SupportedEncryptionTypes 属性にフラグ 0x80000 が付与されます。
これにより指定したコンピューター オブジェクトに対する Resource SID Compression が無効化されます。
対処方法1 はスクリプトを実行すると即時反映されます。
----------------------------
- 対処方法 2
----------------------------
方法 1 が指定したコンピューター オブジェクトに対する無効化であるのに対し、方法 2 はドメイン コントローラー単位でこの機能を無効化します。
ドメイン コントローラー上で以下のレジストリ キーを設定する事で、Resource SID Compression を無効化します。
キー: HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\Kdc\Parameters
値の名前: DisableResourceGroupsFields
値の種類: REG_DWORD
値のデータ: 1
※ レジストリ値が存在しない場合は、新たに作成します。
この方法はドメイン コントローラー単位での構成となるため、環境内で KDC として稼働する Windows Server 2012 のドメイン コントローラー全台に対して同じ設定をする必要があります。この解決方法を用いた場合、設定を行った Windows Server 2012 の KDC で、すべての Kerberos チケットの発行においてこの機能が無効化されます。
対処方法2 は反映のため、設定を変更したドメイン コントローラーにて OS や KDC サービスの再起動を行う必要ありません。
- 対処方法1 の値の場所
---------------------------------------------------------------
対処方法1 のスクリプトでは、NAS のオブジェクトに含まれる msDS-SupportedEncryptionTypes という属性に Resource SID Compression が無効となっていることを示すフラグ 0x0080000 を追加しています。
msDS-SupportedEncryptionTypes 属性の値は下記の手順で確認することができます。
<確認方法>
1) いずれか 1 台のドメイン コントローラーにログオンします。
2) [スタート] - [管理ツール] - [Active Directory ユーザーとコンピューター] を起動します。
3) [表示] メニューの中の [拡張機能] の左側にチェックが付いていない場合は、選択してチェックを付けます。
4) NAS のオブジェクトが格納された OU を開き、その中から NAS のオブジェクトを右クリックして [プロパティ] を開きます。
5) 属性から msDS-SupportedEncryptionTypes の値を確認します。
※ "<未設定>" と表示されている場合は、値が設定されていないことを示します。
- Resource SID Compression を無効にした場合の影響
---------------------------------------------------------------
Resource SID Compression の無効化は Windows Server 2012 以降の設定であり、Windows Server 2008 R2 以前のドメイン コントローラーに影響を及ぼすことはありません。
ドメインのユーザーは NAS へアクセスするための Kerberos サービス チケットを KDC (ドメイン コントローラー) から取得して、そのチケットを NAS へ提示することで認証が行われます。
Windows Server 2012 以降のドメイン コントローラーでは、Resource SID Compression が既定で有効となっているため、SID を圧縮してチケットを発行します。一方、Windows Server 2008 R2 の DC では圧縮せずにチケットを発行します。
Resource SID Compression を無効にすると、Windows Server 2008 R2 以前と同様の動作になり、サービス チケット発行時に SID が圧縮されなくなります。
つまり、既存の Windows Server 2008 R2 のドメイン コントローラーと同様の動作となるため、無効にすることで既存の環境に対して影響が及ぶことはありません。
また、NAS のオブジェクトの 「msDS-SupportedEncryptionTypes」 の値を設定した場合は、NAS のサービス チケットを払い出すときのみ、Resource SID Compression が無効化されます。無効化による影響は NAS のみとなり、現行の運用に影響を及ぼすことは想定されません。
- msDS-SupportedEncryptionTypes について
---------------------------------------------------------------
「msDS-SupportedEncryptionTypes」 はユーザーやコンピューター アカウントでサポートされる暗号化アルゴリズムを定義するため値であり、KDC (ドメイン コントローラー) がサービスチケットを生成するときにこの値が参照されます。
この値に 「0x0080000」 が設定されているオブジェクトは Resource SID Compression が無効となっていることを示し、SID を圧縮せずにサービス チケットが生成されます。
- 参考資料
2.464 Attribute msDS-SupportedEncryptionTypes
https://msdn.microsoft.com/ja-jp/library/cc220375.aspx
----------------------
This attribute specifies the encryption algorithms supported by user, computer, or trust accounts. The Key Distribution Center (KDC) uses this information while generating a service ticket for this account. Services and computers can automatically update this attribute on their respective accounts in Active Directory, and therefore need write access to this attribute.
----------------------
2.2.7 Supported Encryption Types Bit Flags
https://msdn.microsoft.com/ja-jp/library/ee808210.aspx
2.2.7 Supported Encryption Types Bit Flags
https://technet.microsoft.com/ja-jp/ee808210