Azure Files にアクセスするためにオンプレミス AD DS と Microsoft Entra ID 間にクラウド信頼を構成する
多くの組織は、オンプレミスの Active Directory Domain Services (AD DS) と Microsoft Entra ID (旧称 Azure Active Directory) の両方にまたがる環境で SMB Azure ファイル共有に ID ベースの認証を使用したいと考えていますが、必要なオペレーティング システムまたはドメインの前提条件を満たしていません。
このようなシナリオでは、お客様はハイブリッド ユーザー ID に対して Microsoft Entra Kerberos 認証を有効にし、オンプレミス AD DS と Microsoft Entra ID 間にクラウド信頼を確立して、オンプレミスの資格情報を使用して SMB ファイル共有にアクセスできます。 この記事では、クラウド信頼のしくみについて説明し、セットアップと検証の手順を示します。 また、必要に応じて、Microsoft Entra ID と信頼される側のドメイン オブジェクトのサービス アカウントの Kerberos キーをローテーションする手順と、信頼される側のドメイン オブジェクトとすべての Kerberos 設定を削除する手順についても説明します。
この記事では、ハイブリッド ユーザー ID の認証に焦点を当てています。これは、Microsoft Entra Connect または Microsoft Entra Connect クラウド同期を使用して Microsoft Entra ID に同期されるオンプレミス AD DS ID です。Azure Files では、現在、クラウド専用 ID はサポートされていません。
適用対象
ファイル共有の種類 | SMB | NFS |
---|---|---|
Standard ファイル共有 (GPv2)、LRS/ZRS | ||
Standard ファイル共有 (GPv2)、GRS/GZRS | ||
Premium ファイル共有 (FileStorage)、LRS/ZRS |
シナリオ
クラウド信頼を構成する必要があるシナリオの例を次に示します。
従来のオンプレミス AD DS はありますが、ドメイン コントローラーにスムーズにネットワーク接続できないため、認証に使用できません。
クラウドへの移行を開始しましたが、現在のところ、アプリケーションはまだ従来のオンプレミス AD DS 上で実行されています。
クライアント コンピューターの一部またはすべてが、Microsoft Entra Kerberos 認証のオペレーティング システム要件を満たしていません。
アクセス許可
この記事の手順を完了するには、以下が必要です。
- オンプレミスの Active Directory 管理者のユーザー名とパスワード
- Microsoft Entra 全体管理者アカウントのユーザー名とパスワード
前提条件
受信信頼ベースの認証フローを実装する前に、次の前提条件が満たされていることを確認します。
前提条件 | 説明 |
---|---|
クライアントは、Windows 10、Windows Server 2012、またはそれ以降のバージョンの Windows を実行している必要があります。 | |
クライアントは Active Directory (AD) に参加している必要があります。 ドメインの機能レベルは Windows Server 2012 以上である必要があります。 | dsregcmd コマンドを実行して、クライアントが AD に参加しているかどうかを確認できます。dsregcmd.exe /status |
Microsoft Entra テナント。 | Microsoft Entra テナントは、組織の IT 部署の管理下にある ID セキュリティ境界です。 1 つの組織に関する情報が存在する Microsoft Entra ID のインスタンスです。 |
認証に使用する予定のものと同じ Microsoft Entra テナントに属する Azure サブスクリプション。 | |
Azure サブスクリプションの Azure Storage アカウント。 | Azure Storage アカウントは、ファイルを含め、Azure Storage のすべてのデータ サービスをグループ化するためのコンテナーとして機能するリソースです。 |
Microsoft Entra Connect または Microsoft Entra Connect クラウド同期がインストールされている必要があります。 | これらのソリューションは、Microsoft Entra ID とオンプレミス AD DS の両方に ID が存在するハイブリッド環境で使用されます。 |
Microsoft Entra Kerberos 認証を有効にする
ストレージ アカウントで Microsoft Entra Kerberos 認証を既に有効にしている場合は、この手順をスキップして、「Microsoft Entra Kerberos の信頼される側のドメイン オブジェクトを作成して構成する」に進むことができます。
ハイブリッド ユーザー アカウントによる Azure Files へのアクセスに対して Microsoft Entra Kerberos 認証を有効にする操作は、Azure portal、PowerShell、または Azure CLI で実行できます。
Azure portal を使用して Microsoft Entra Kerberos 認証を有効にするには、以下の手順を実行します。
Azure portal にサインインし、Microsoft Entra Kerberos 認証を有効にするストレージ アカウントを選択します。
[データ ストレージ] で、[ファイル共有] を選択します。
[Active Directory] の横にある構成状態 ([未構成] など) を選択します。
[Microsoft Entra Kerberos] で、[セットアップ] を選択します。
[Microsoft Entra Kerberos] チェックボックスをオンにします。
省略可能: Windows エクスプローラーを使用してディレクトリとファイル レベルのアクセス許可を構成する場合は、オンプレミス AD のドメイン名とドメイン GUID を指定する必要があります。 この情報は、ドメイン管理者から取得することも、オンプレミスの AD 参加済みクライアントから Active Directory PowerShell コマンドレット
Get-ADDomain
を実行して取得することもできます。 ドメイン名はDNSRoot
の下の出力に一覧表示され、ドメイン GUID はObjectGUID
の下に一覧表示されます。 icacls を使用してディレクトリとファイル レベルのアクセス許可を構成する場合は、この手順を省略できます。 ただし、icacls を使う場合、クライアントからオンプレミス AD へのスムーズなネットワーク接続が必要です。[保存] を選択します。
警告
Microsoft Entra Kerberos 認証が、手動で制限付きのプレビュー段階の手順によって既に有効になっており、Microsoft Entra 参加済み仮想マシン用の FSLogix プロファイルが Azure Files に保存されている場合、ストレージ アカウントのサービス プリンシパルのパスワードは 6 か月ごとに期限切れになります。 パスワードの有効期限が切れると、ユーザーはファイル共有に対する Kerberos チケットを取得できなくなります。 この問題を緩和する方法については、「ハイブリッド ユーザーに対する Microsoft Entra Kerberos 認証を有効にすると発生する可能性があるエラー」の、「エラー - Microsoft Entra ID でサービス プリンシパルのパスワードの有効期限が切れています」を参照してください。
新しいサービス プリンシパルに管理者の同意を与える
Microsoft Entra Kerberos 認証を有効にした後は、Microsoft Entra テナントに登録された新しい Microsoft Entra アプリケーションに、管理者の同意を明示的に付与する必要があります。 このサービス プリンシパルは自動生成されます。ファイル共有への認可には使われないので、ここに記載されている以外のサービス プリンシパルの編集は行わないでください。 行った場合、エラーが発生する可能性があります。
これらの手順に従って、Azure portal から API のアクセス許可を構成できます。
- Microsoft Entra ID を開きます。
- サービス メニューの [管理] で、[アプリの登録] を選択します。
- [すべてのアプリケーション] を選択します。
- [ストレージ アカウント]
<your-storage-account-name>
.file.core.windows.net と一致する名前のアプリケーションを選択します。 - サービス メニューの [管理] で、[API のアクセス許可] を選択します。
- [[ディレクトリ名] に管理者の同意を与えます] を選択して、ディレクトリ内のすべてのアカウントに対して要求された 3 つの API アクセス許可 (openid、profile、User.Read) の同意を付与します。
- [はい] を選択して確定します。
重要
Microsoft Entra Kerberos 認証を使用し、プライベート エンドポイントまたはプライベート リンクを介してストレージ アカウントに接続する場合は、ストレージ アカウントの Microsoft Entra アプリケーションに、そのプライベート リンク FQDN を追加する必要があります。 手順については、トラブルシューティング ガイドのエントリを参照してください。
ストレージ アカウントで多要素認証を無効にする
Microsoft Entra Kerberos を使用して構成された Azure ファイル共有へのアクセスに MFA を使用する形態はサポートされていません。 MFA 条件付きアクセス ポリシーがすべてのアプリに適用される場合は、ストレージ アカウントの実体となる Microsoft Entra アプリをポリシーの適用対象から除外する必要があります。
ストレージ アカウント アプリの名前は、条件付きアクセス除外リストのストレージ アカウントと同じである必要があります。 条件付きアクセス除外リストでストレージ アカウント アプリを検索する場合は、[ストレージ アカウント] <your-storage-account-name>
.file.core.windows.net を検索します
忘れずに、<your-storage-account-name>
を適切な値に置き換えてください。
重要
ストレージ アカウント アプリから MFA ポリシーを除外しない場合は、ファイル共有にアクセスできません。 net use
を使用してファイル共有をマップしようとすると、"システム エラー 1327: アカウント制限によってこのユーザーのサインインが妨げられている" というエラー メッセージが表示されます。 たとえば、空白のパスワードは許可されない、サインイン時間が制限されている、ポリシーの制限が適用されたなどです。
MFA の無効化に関するガイダンスについては、次を参照してください。
共有レベルのアクセス許可を割り当てる
ID ベースのアクセスを有効にすると、特定の共有にアクセスできるユーザーとグループを共有ごとに割り当てる必要があります。 ユーザーまたはグループが共有へのアクセスを許されると、個々のファイルとディレクトリに対する Windows ACL (NTFS アクセス許可とも呼ばれます) が引き継がれます。 これにより、Windows サーバー上の SMB 共有と同様に、アクセス許可をきめ細かく制御できます。
共有レベルのアクセス許可を設定するには、「ID に共有レベルのアクセス許可を割り当てる」の手順に従います。
ディレクトリとファイル レベルのアクセス許可を構成する
共有レベルのアクセス許可が設定されたら、ディレクトリ/ファイル レベルのアクセス許可をユーザーまたはグループに割り当てることができます。 この場合、オンプレミス AD にスムーズにネットワーク接続できるデバイスを使う必要があります。
ディレクトリとファイル レベルのアクセス許可を構成するには、「SMB 経由でディレクトリとファイル レベルのアクセス許可を構成する」の手順に従います。
Azure AD Kerberos 信頼されたドメイン オブジェクトの作成と構成
Microsoft Entra Kerberos の信頼される側のドメイン オブジェクトを作成して構成するには、Azure AD ハイブリッド認証管理 PowerShell モジュールを使用します。 このモジュールにより、ハイブリッド ID 組織はアプリケーションに最新の資格情報を使用できるようになります。また、Microsoft Entra ID は、クラウドとオンプレミスの両方の認証に対して信頼できるソースになります。
信頼されたドメイン オブジェクトを設定する
Azure AD ハイブリッド認証管理 PowerShell モジュールを使用して、オンプレミス AD ドメインに信頼されたドメイン オブジェクトを設定し、Microsoft Entra ID に信頼情報を登録します。 これにより、オンプレミスの AD に対する受信方向の信頼関係が作成され、Microsoft Entra ID がオンプレミスの AD を信頼できるようになります。
信頼される側のドメイン オブジェクトは、ドメインごとに 1 回だけ設定する必要があります。 ドメインに対してこれを既に行っている場合は、このセクションをスキップして、「Kerberos チケットを取得するようにクライアントを構成する」に進むことができます。
Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします
[管理者として実行] オプションを使用して Windows PowerShell セッションを開始します。
次のスクリプトを使用して Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします。 スクリプトは次のようになります。
- 通信に対して TLS 1.2 を有効にします。
- NuGet パッケージ プロバイダーをインストールします。
- PSGallery リポジトリを登録します。
- PowerShellGet モジュールをインストールします。
- Azure AD ハイブリッド認証管理 PowerShell モジュールをインストールします。
- Azure AD ハイブリッド認証管理 PowerShell は、高度な Microsoft Entra 管理機能を提供する AzureADPreview モジュールを使用します。
- Azure AD PowerShell モジュールとの不要なインストールの競合を防ぐために、このコマンドには
-AllowClobber
オプション フラグが含まれています。
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-PackageProvider -Name NuGet -Force
if (@(Get-PSRepository | ? {$_.Name -eq "PSGallery"}).Count -eq 0){
Register-PSRepository -DefaultSet-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
}
Install-Module -Name PowerShellGet -Force
Install-Module -Name AzureADHybridAuthenticationManagement -AllowClobber
信頼されたドメイン オブジェクトを作成する
[管理者として実行] オプションを使用して Windows PowerShell セッションを開始します。
共通のパラメーターを設定します。 実行する前に、以下のスクリプトをカスタマイズします。
$domain
パラメーターをオンプレミスの Active Directory ドメイン名に設定します。Get-Credential
のダイアログが表示された場合、オンプレミスの Active Directory 管理者のユーザー名とパスワードを入力します。$cloudUserName
パラメーターを Microsoft Entra クラウドアクセス用のグローバル管理者特権のあるアカウントのユーザー名に設定します。
Note
オンプレミスの Active Directory アクセスに現在の Windows ログインアカウントを使用する場合は、資格情報が
$domainCred
パラメーターに割り当てられる手順を省略できます。 このアプローチを採用する場合は、この手順の後の PowerShell コマンドに-DomainCredential
パラメーターを含めないでください。$domain = "your on-premises domain name, for example contoso.com" $domainCred = Get-Credential $cloudUserName = "Azure AD user principal name, for example admin@contoso.onmicrosoft.com"
現在の Kerberos ドメイン設定を確認してください。
次のコマンドを実行して、ドメインの現在の Kerberos 設定を確認します。
Get-AzureAdKerberosServer -Domain $domain ` -DomainCredential $domainCred ` -UserPrincipalName $cloudUserName
Microsoft Entra Kerberos コマンドを初めて呼び出す場合は、Microsoft Entra クラウド へのアクセスを求められます。
- Microsoft Entra テナントのグローバル管理者アカウントのパスワードを入力します。
- 組織で Microsoft Entra 多要素認証やスマートカードなどの他の最新の認証方法を使用している場合は、要求された手順に従ってサインインしてください。
Microsoft Entra Kerberos 設定を初めて構成する場合は、次のサンプル出力に示すように、 Get-AzureAdKerberosServer コマンドレットによって空の情報が表示されます。
ID : UserAccount : ComputerAccount : DisplayName : DomainDnsName : KeyVersion : KeyUpdatedOn : KeyUpdatedFrom : CloudDisplayName : CloudDomainDnsName : CloudId : CloudKeyVersion : CloudKeyUpdatedOn : CloudTrustDisplay :
ドメインが既に FIDO 認証をサポートしている場合は、次のサンプル出力のように、
Get-AzureAdKerberosServer
コマンドレットによって Microsoft Entra サービス アカウント情報が表示されます。CloudTrustDisplay
フィールドが空の値を返します。ID : XXXXX UserAccount : CN=krbtgt-AzureAD, CN=Users, DC=contoso, DC=com ComputerAccount : CN=AzureADKerberos, OU=Domain Controllers, DC=contoso, DC=com DisplayName : XXXXXX_XXXXX DomainDnsName : contoso.com KeyVersion : 53325 KeyUpdatedOn : 2/24/2024 9:03:15 AM KeyUpdatedFrom : ds-aad-auth-dem.contoso.com CloudDisplayName : XXXXXX_XXXXX CloudDomainDnsName : contoso.com CloudId : XXXXX CloudKeyVersion : 53325 CloudKeyUpdatedOn : 2/24/2024 9:03:15 AM CloudTrustDisplay :
信頼されたドメイン オブジェクトを追加してください。
Set-AzureAdKerberosServer PowerShell コマンドレットを実行して、信頼されたドメイン オブジェクトを追加します。
-SetupCloudTrust
パラメーターを必ず含めてください。 Microsoft Entra サービス アカウントがない場合、このコマンドは新しい Microsoft Entra サービス アカウントを作成します。 Microsoft Entra サービスアカウントが存在する場合にのみ、このコマンドは要求された信頼されたドメイン オブジェクトを作成します。Set-AzureADKerberosServer -Domain $domain -UserPrincipalName $cloudUserName -DomainCredential $domainCred -SetupCloudTrust
Note
複数ドメイン フォレストで、子ドメインでコマンドを実行するときにエラー LsaCreateTrustedDomainEx 0x549 を回避するには:
- ルート ドメインでコマンドを実行します (
-SetupCloudTrust
パラメーターを含めます)。 - 子ドメインで、
-SetupCloudTrust
パラメーターを指定せずに同じコマンドを実行します。
信頼されたドメイン オブジェクトを作成した後、前の手順で示したように、
Get-AzureAdKerberosServer
PowerShell コマンドレットを使用して、更新された Kerberos 設定を確認できます。-SetupCloudTrust
パラメーターを指定したSet-AzureAdKerberosServer
コマンドレットが正常に実行された場合、CloudTrustDisplay
フィールドは次のサンプル出力のように、Microsoft.AzureAD.Kdc.Service.TrustDisplay
を返します。ID : XXXXX UserAccount : CN=krbtgt-AzureAD, CN=Users, DC=contoso, DC=com ComputerAccount : CN=AzureADKerberos, OU=Domain Controllers, DC=contoso, DC=com DisplayName : XXXXXX_XXXXX DomainDnsName : contoso.com KeyVersion : 53325 KeyUpdatedOn : 2/24/2024 9:03:15 AM KeyUpdatedFrom : ds-aad-auth-dem.contoso.com CloudDisplayName : XXXXXX_XXXXX CloudDomainDnsName : contoso.com CloudId : XXXXX CloudKeyVersion : 53325 CloudKeyUpdatedOn : 2/24/2024 9:03:15 AM CloudTrustDisplay : Microsoft.AzureAD.Kdc.Service.TrustDisplay
注意
Azure ソブリン クラウドの場合、
TopLevelNames
プロパティを設定する必要があります。これは既定ではwindows.net
に設定されています。 SQL Managed Instance の Azure ソブリン クラウド デプロイには、Azure US Government のusgovcloudapi.net
のように、異なる最上位レベル ドメイン名が使われます。 次の PowerShell コマンドを使って、信頼されるドメイン オブジェクトをその最上位レベル ドメイン名に設定します:Set-AzureADKerberosServer -Domain $domain -DomainCredential $domainCred -CloudCredential $cloudCred -SetupCloudTrust -TopLevelNames "usgovcloudapi.net,windows.net"
。 次の PowerShell コマンドを使って設定を確認することができます:Get-AzureAdKerberosServer -Domain $domain -DomainCredential $domainCred -UserPrincipalName $cloudUserName | Select-Object -ExpandProperty CloudTrustDisplay
。- ルート ドメインでコマンドを実行します (
クライアントを構成して Kerberos チケットを取得する
Microsoft Entra テナント ID を特定し、グループ ポリシーを使用して、Azure ファイル共有をマウントまたは使用するクライアント コンピューターを構成します。 これは、Azure Files を使用するすべてのクライアントで行う必要があります。
クライアント上でこのグループ ポリシーを [有効] に構成します: Administrative Templates\System\Kerberos\Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon
受信信頼ベースのフローを使用して、次のグループポリシー設定をクライアントマシンにデプロイします。
「管理用テンプレート\システム\KERBEROS\Kerberos クライアントのKDC プロキシ サーバーの指定」ポリシー設定を編集します。
[Enabled] を選択します。
[オプション] で [表示] を選択すると、[内容の表示] ダイアログ ボックスが開きます。
次のように、マッピングを使用して KDC プロキシサーバーの設定を定義します。
your_Azure_AD_tenant_id
プレースホルダーを Microsoft Entra テナント ID に置き換えます。 値のマッピングにおいて、https
に続くスペースと末尾の/
の前のスペースに注意してください。値の名前 値 KERBEROS.MICROSOFTONLINE.COM <https login.microsoftonline.com:443: your_Azure_AD_tenant_id
/kerberos />[OK] を選択して [内容の表示] ダイアログ ボックスを閉じます。
[Kerberos クライアントの KDC プロキシサーバーを指定する] ダイアログボックスで [適用] を選択します。
Kerberos Key のローテーション
管理目的で、作成した Microsoft Entra サービス アカウントと信頼されたドメイン オブジェクトの Kerberos キーを定期的にローテーションすることができます。
Set-AzureAdKerberosServer -Domain $domain `
-DomainCredential $domainCred `
-UserPrincipalName $cloudUserName -SetupCloudTrust `
-RotateServerKey
キーがローテーションされると、Kerberos KDC サーバー間で変更されたキーが伝達されるまでに数時間かかります。 このキー配布のタイミングにより、24時間以内に 1 回のみキーをローテーションすることができます。 信頼されたドメイン オブジェクトを作成した直後など、何らかの理由で24時間以内にキーをもう一度ローテーションする必要がある場合は、-Force
パラメーターを追加します。
Set-AzureAdKerberosServer -Domain $domain `
-DomainCredential $domainCred `
-UserPrincipalName $cloudUserName -SetupCloudTrust `
-RotateServerKey -Force
信頼されたドメイン オブジェクトを削除する
次のコマンドを使用して、追加された信頼されたドメイン オブジェクトを削除できます。
Remove-AzureADKerberosServerTrustedDomainObject -Domain $domain `
-DomainCredential $domainCred `
-UserPrincipalName $cloudUserName
このコマンドは、信頼されたドメインオブジェクトのみを削除します。 ドメインが FIDO 認証をサポートしている場合は、FIDO 認証サービスに必要な Microsoft Entra サービス アカウントを維持したまま、信頼されたドメイン オブジェクトを削除できます。
すべての Kerberos 設定を削除する
次のコマンドを使用して、Microsoft Entra サービス アカウントと信頼されたドメイン オブジェクトの両方を削除できます。
Remove-AzureAdKerberosServer -Domain $domain `
-DomainCredential $domainCred `
-UserPrincipalName $cloudUserName