Azure Files に対する Azure Active Directory Domain Services 認証を有効にする

Azure Files では、次の 3 つの方法で Kerberos 認証プロトコルを使用したサーバー メッセージ ブロック (SMB) 経由の Windows ファイル共有の ID ベース認証がサポートされています。

  • オンプレミス Active Directory Domain Services (AD DS)
  • Azure Active Directory Domain Services (Azure AD DS)
  • ハイブリッド ユーザー ID 用の Azure Active Directory (Azure AD) Kerberos

この記事では、Azure ファイル共有での ID ベースの認証用に Azure AD DS を有効にして構成する方法に重点を置いて説明します。 この認証シナリオでは、Azure AD 資格情報と Azure AD DS 資格情報は同じであり、同じ意味で使用できます。

認証のための適切な AD ソースを選択するために、「しくみ」のセクションを確認することを強くお勧めします。 設定は、選択する AD ソースによって異なります。

Azure Files を初めて使用する場合は、この記事を読む前に、計画ガイドに目を通すことをお勧めします。

Note

Azure Files では、Azure AD DS と共に RC4-HMAC および AES-256 暗号化を使用した Kerberos 認証がサポートされています。 AES-256 を使用することをお勧めします。

Azure Files では、Azure AD と完全または部分的 (スコープ付き) に同期する Azure AD DS の認証がサポートされています。 範囲指定された同期が存在する環境の場合、管理者は、Azure Files では同期されるプリンシパルに付与された Azure RBAC ロールの割り当てのみが受け入れられることに注意する必要があります。 Azure AD から Azure AD DS に同期されていない ID に付与されたロールの割り当ては、Azure Files サービスによって無視されます。

適用対象

ファイル共有の種類 SMB NFS
Standard ファイル共有 (GPv2)、LRS/ZRS はい いいえ
Standard ファイル共有 (GPv2)、GRS/GZRS はい いいえ
Premium ファイル共有 (FileStorage)、LRS/ZRS はい いいえ

前提条件

Azure ファイル共有に対して SMB 経由での Azure AD DS を有効にする前に、次の前提条件を満たしていることを確認してください。

  1. Azure AD テナントを選択または作成します。

    新規または既存のテナントを使用できます。 アクセスするテナントとファイル共有は、同じサブスクリプションに関連付けられている必要があります。

    新しく Azure AD テナントを作成するには、Azure AD テナントと Azure AD サブスクリプションを追加できます。 既存の Azure AD テナントがあるが、Azure ファイル共有で使用するために新しいテナントを作成する場合は、Azure Active Directory テナントの作成に関する記事を参照してください。

  2. Azure AD テナントで Azure AD Domain Services を有効にします。

    Azure AD 資格情報を使用した認証をサポートするには、Azure AD テナントの Azure AD DS を有効にする必要があります。 Azure AD テナントの管理者でない場合は、管理者に連絡し、Azure portal を使用した Azure Active Directory Domain Services の有効化に関する記事に書かれている手順を実行します。

    通常、Azure AD DS のデプロイが完了するまでには 15 分ほどかかります。 次の手順に進む前に、Azure AD DS の正常性状態が実行中と表示されており、パスワード ハッシュ同期が有効になっていることを確認します。

  3. Azure AD DS を使用している Azure VM ドメインに参加します。

    VM から Azure AD の資格情報を使用して Azure ファイル共有にアクセスするには、VM が Azure AD DS のドメインに参加している必要があります。 VM のドメイン参加方法の詳細については、「Windows Server 仮想マシンのマネージド ドメインへの参加」を参照してください。 SMB を使用した Azure ファイル共有の Azure AD DS 認証は、Windows 7 または Windows Server 2008 R2 以降の OS バージョンで実行されている Azure VM でのみサポートされます。

    注意

    ドメインに参加していない VM は、Azure AD DS のドメイン コントローラーに対して VM の視線が見える場合にのみ、Azure AD DS 認証を使用して Azure ファイル共有にアクセスできます。 通常、これにはサイト間 VPN またはポイント対サイト VPN が必要です。

  4. Azure ファイル共有を選択または作成します。

    Azure AD テナントと同じサブスクリプションに関連付けられている新規または既存のファイル共有を選択します。 新しいファイル共有を作成する方法の詳細については、「Azure Files にファイル共有を作成する」を参照してください。 パフォーマンスを最適化するには、共有にアクセスする予定の VM と同じリージョンにファイル共有を配置することをお勧めします。

  5. ストレージ アカウント キーを使用して Azure ファイル共有をマウントすることにより、Azure Files の接続を確認します。

    VM とファイル共有が正しく構成されていることを確認するには、ストレージ アカウント キーを使用してファイル共有をマウントします。 詳細については、「Windows で Azure ファイル共有をマウントして共有にアクセスする」を参照してください。

リージョン別の提供状況

Azure AD DS を使用した Azure Files 認証は、すべての Azure パブリック リージョン、Gov リージョン、および中国リージョンで利用できます。

ワークフローの概要

Azure ファイル共有に対して SMB 経由での Azure AD DS 認証を有効にする前に、Azure AD と Azure Storage の環境が正しく構成されていることを確認してください。 前提条件を参照して、必要な手順をすべて完了したことを確認することをお勧めします。

以下の手順を実行して、Azure AD 資格情報を使用して Azure Files のリソースへのアクセス許可を付与します。

  1. 関連付けられた Azure AD DS デプロイにストレージ アカウントを登録するため、SMB を使用した、ストレージ アカウントの Azure AD DS 認証を有効にします。
  2. Azure AD の ID (ユーザー、グループ、またはサービス プリンシパル) に、共有のアクセス許可を割り当てます。
  3. ストレージ アカウント キーを使用して Azure ファイル共有に接続し、ディレクトリとファイルの Windows アクセス制御リスト (ACL) を構成します。
  4. ドメインに参加している VM から Azure ファイル共有をマウントします。

次の図は、SMB を使用して Azure Files への Azure AD DS 認証を有効にするためのエンドツーエンドのワークフローを示しています。

SMB を使用した Azure Files への Azure AD ワークフローを示す図

アカウントへの Azure AD DS 認証を有効にする

Azure Files への SMB 経由の Azure AD DS 認証を有効にするには、Azure portal、Azure PowerShell、または Azure CLI を使用して、ストレージ アカウントでプロパティを設定できます。 このプロパティを設定すると、関連付けられている Azure AD DS のデプロイにより、ストレージ アカウントが暗黙的に "ドメイン参加" します。 その後、ストレージ アカウント内のすべての新規および既存のファイル共有に対する、SMB を使用した Azure AD DS 認証が有効になります。

SMB 経由の Azure AD DS 認証を有効にするには、Azure AD テナントに Azure AD DS が正常にデプロイされている必要があることに注意してください。 詳細については、前提条件を参照してください。

Azure portal を使用して SMB 経由の Azure AD DS 認証を有効にするには、次の手順に従います。

  1. Azure portal で、既存のストレージ アカウントに移動するか、またはストレージ アカウントを作成します。

  2. [ファイル共有] セクションで、 [Active directory: Not Configured](Active Directory: 未構成) を選択します。

    ストレージ アカウントの [ファイル共有] ペインのスクリーンショット。Active Directory が強調表示されています。

  3. [Azure Active Directory Domain Services] を選択し、チェックボックスをオンにして機能を有効にします。

  4. [保存] を選択します。

    [Active Directory] ペインのスクリーンショット。Azure Active Directory Domain Services が有効になっています。

既定では、Azure AD DS 認証では Kerberos RC4 暗号化が使用されます。 次の手順に従って、代わりに Kerberos AES-256 暗号化を使用するように構成することをお勧めします。

このアクションでは、ドメイン オブジェクトへのプロパティの変更を要求するために、Azure AD DS によって管理される Active Directory ドメインで操作を実行し、ドメイン コントローラーに到達する必要があります。 次のコマンドレットは、Azure PowerShell コマンドレットではなく、Windows Server Active Directory PowerShell コマンドレットです。 このため、これらの PowerShell コマンドは、Azure AD DS ドメインにドメイン参加しているクライアント マシンから実行する必要があります。

重要

このセクションの Windows Server Active Directory PowerShell コマンドレットは、Azure AD DS ドメインにドメイン参加しているクライアント マシンから Windows PowerShell 5.1 で実行する必要があります。 このシナリオでは、PowerShell 7.x と Azure Cloud Shell は機能しません。

必要なアクセス許可を持つ Azure AD DS ユーザーとして、ドメイン参加済みのクライアント マシンにログインします (通常、AAD DC 管理者グループのメンバーには必要なアクセス許可が付与されます)。 通常の (管理者特権以外の) PowerShell セッションを開き、次のコマンドを実行します。

# 1. Find the service account in your managed domain that represents the storage account.

$storageAccountName= “<InsertStorageAccountNameHere>”
$searchFilter = "Name -like '*{0}*'" -f $storageAccountName
$userObject = Get-ADUser -filter $searchFilter

if ($userObject -eq $null)
{
   Write-Error "Cannot find AD object for storage account:$storageAccountName" -ErrorAction Stop
}

# 2. Set the KerberosEncryptionType of the object

Set-ADUser $userObject -KerberosEncryptionType AES256

# 3. Validate that the object now has the expected (AES256) encryption type.

Get-ADUser $userObject -properties KerberosEncryptionType

重要

以前に RC4 暗号化を使用していて、AES-256 を使用するようにストレージ アカウントを更新する場合は、クライアントで klist purge を実行してからファイル共有を再マウントして、AES-256 を使用した新しい Kerberos チケットを取得する必要があります。

共有レベルのアクセス許可を割り当てる

ID ベースの認証を使用して Azure Files リソースにアクセスするには、ID (ユーザー、グループ、またはサービス プリンシパル) が共有レベルで必要なアクセス許可を持っている必要があります。 このプロセスは、ファイル共有に対し特定のユーザーが持っているアクセス権の種類を指定する、Windows 共有のアクセス許可の指定に似ています。 このセクションのガイダンスでは、ID にファイル共有のための読み取り、書き込み、または削除のアクセス許可を割り当てる方法を示します。 ワイルドカード (*) 文字を使うのではなく、アクションとデータ アクションを明示的に宣言することにより、アクセス許可を割り当てることを強くお勧めします。

ほとんどのユーザーは、共有レベルのアクセス許可を特定の Azure AD ユーザーまたはグループに割り当て、その後 Windows ACL を構成してディレクトリおよびファイル レベルできめ細かくアクセスを制御する必要があります。 ただし、代わりに、既定の共有レベルのアクセス許可を設定して、すべての認証済み ID に対する共同作成者、昇格された共同作成者、または閲覧者のアクセスを許可することができます。

ユーザーおよびグループに共有レベルのアクセス許可を付与するための、3 つの Azure 組み込みロールが導入されました。

  • ストレージ ファイル データ SMB 共有閲覧者では、SMB 経由の Azure Storage ファイル共有での読み取りアクセスが許可されます。
  • ストレージ ファイル データ SMB 共有共同作成者では、SMB 経由の Azure Storage ファイル共有での読み取り、書き込み、削除アクセスが許可されます。
  • ストレージ ファイル データの SMB 共有の管理者特権共同作成者では、SMB 経由の Azure ファイル共有での Windows ACL の読み取り、書き込み、削除、および変更が許可されます。

重要

ファイルの所有権を引き受ける機能を含めて、ファイル共有を完全に管理制御するには、ストレージ アカウント キーを使用する必要があります。 Azure AD 資格情報を使用した管理制御はサポートされていません。

Azure portal、PowerShell、または Azure CLI を使用して、共有レベルのアクセス許可を付与するために、組み込みのロールをユーザーの Azure AD ID に割り当てることができます。 共有レベルの Azure ロールの割り当ては、有効になるまでに時間がかかる場合があることにご注意ください。 一般的な推奨事項は、ユーザーと ID のグループを表す AD グループに対する高レベルのアクセス管理に共有レベルのアクセス許可を使用してから、ディレクトリとファイルのレベルでのきめ細かいアクセス制御に Windows ACL を利用することです。

Azure AD の ID に Azure ロールを割り当てる

重要

ワイルドカード (*) 文字を使うのではなく、アクションとデータ アクションを明示的に宣言することによりアクセス許可を割り当てます。 データ アクションのカスタム ロール定義にワイルドカード文字が含まれている場合、そのロールに割り当てられているすべての ID に、可能なすべてのデータ アクションへのアクセス権が付与されます。 つまり、そのようなすべての ID は、プラットフォームに追加される新しいデータ アクションも許可されます。 新しいアクションまたはデータ アクションによって付与される追加のアクセスとアクセス許可は、ワイルドカードを使用しているお客様にとって望ましくない動作である可能性があります。

Azure portal を使用して Azure ロールを Azure AD ID に割り当てるには、これらの手順に従います。

  1. Azure portal でファイル共有に移動するか、ファイル共有を作成します。
  2. [アクセス制御 (IAM)] を選択します。
  3. [ロールの割り当てを追加する] を選択します。
  4. [ロールの割り当ての追加] ブレードで、 [ロール] リストから適切な組み込みロール (ストレージ ファイル データ SMB 共有閲覧者、ストレージ ファイル データ SMB 共有共同作成者) を選択します。 [アクセスの割り当て先] は既定の設定のままにしておきます。Azure AD のユーザー、グループ、サービス プリンシパル。 名前またはメール アドレスで、ターゲット Azure AD ID を選択します。
  5. [Review + assign] (確認と割り当て) を選び、ロールの割り当て操作を完了します。

Windows ACL を構成する

RBAC に共有レベルのアクセス許可を割り当てたら、ルート、ディレクトリ、またはファイル レベルに Windows ACL (NTFS アクセス許可とも呼ぶ) を割り当てることができます。 共有レベルのアクセス許可は、ユーザーが共有にアクセスできるかどうかを決定する高度なゲートキーパーであり、Windows ACL はユーザーがディレクトリまたはファイル レベルでどんな操作を行えるかを規定し、より詳細なレベルで動作すると考えることができます。

Azure Files では、基本的なアクセス許可と詳細なアクセス許可の完全なセットをサポートします。 Azure ファイル共有内のディレクトリとファイルの Windows ACL を表示および構成するには、共有をマウントしてから、Windows エクスプローラーを使用するか、Windows の icacls または Set-ACL コマンドを実行します。

ファイル共有のルート ディレクトリでは、次のアクセス許可セットがサポートされています。

  • BUILTIN\Administrators:(OI)(CI)(F)
  • NT AUTHORITY\SYSTEM:(OI)(CI)(F)
  • BUILTIN\Users:(RX)
  • BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
  • NT authority \authenticated Users:(OI)(CI)(M)
  • NT AUTHORITY\SYSTEM:(F)
  • CREATOR OWNER:(OI)(CI)(IO)(F)

詳しくは、「SMB 経由でディレクトリとファイル レベルのアクセス許可を構成する」を参照してください。

ストレージ アカウント キーを使用してファイル共有をマウントする

Windows ACL を構成する前に、まずストレージ アカウント キーを使用してファイル共有をドメイン参加済みの VM にマウントする必要があります。 これを行うには、ドメイン参加済みの VM に Azure AD ユーザーとしてログインし、Windows コマンド プロンプトを開いて、次のコマンドを実行します。 忘れずに、<YourStorageAccountName><FileShareName><YourStorageAccountKey> を独自の値に置き換えてください。 Z: が既に使用されている場合は、使用可能なドライブ文字に置き換えます。 ストレージ アカウント キーを確認するには、Azure portal でストレージ アカウントに移動し、[セキュリティとネットワーク]>[アクセス キー] を選びます。または、Get-AzStorageAccountKey PowerShell コマンドレットを使うこともできます。

このステージで共有をマウントするには、PowerShell ではなく、Windows コマンド net use を使うことが重要です。 PowerShell を使って共有をマウントすると、共有は Windows のエクスプローラーまたは cmd.exe に表示されないため、Windows ACL を構成できなくなります。

注意

ロールには、フル コントロールの ACL が既に適用されている可能性があります。 これにより、通常、アクセス許可を割り当てる機能が既に提供されています。 しかし、2 つのレベル (共有レベルとファイルまたはディレクトリ レベル) でアクセス チェックが行われるため、これは制限されます。 SMB の管理者特権の共同作成者ロールを持ち、新しいファイルまたはディレクトリを作成するユーザーのみが、ストレージ アカウント キーを使用せずに、これらの新しいファイルまたはディレクトリに対するアクセス許可を割り当てることができます。 その他のファイルまたはディレクトリのアクセス許可の割り当てはすべて、最初にストレージ アカウント キーを使用して共有に接続する必要があります。

net use Z: \\<YourStorageAccountName>.file.core.windows.net\<FileShareName> /user:localhost\<YourStorageAccountName> <YourStorageAccountKey>

Windows エクスプローラーを使用して Windows ACL を構成する

Azure ファイル共有をマウントしたら、Windows ACL を構成する必要があります。 これは、エクスプローラーまたは icacls のどちらかを使って行うことができます。

Windows エクスプローラーを使って、ルート ディレクトリを含む、ファイル共有下のすべてのディレクトリとファイル共有に完全なアクセス許可を付与するには、以下の手順のようにします。

  1. Windows エクスプローラーを開き、ファイルまたはディレクトリを右クリックし、 [プロパティ] を選択します。
  2. [セキュリティ] タブをクリックします。
  3. [編集] を選んでアクセス許可を変更します。
  4. 既存のユーザーの権限を変更することや、[追加] を選択して新しいユーザーにアクセス許可を付与することができます。
  5. 新しいユーザーを追加するためのプロンプト ウィンドウで、アクセス許可を付与するターゲット ユーザーの名前を [選択するオブジェクト名を入力してください] ボックスに入力し、 [名前の確認] を選択して、ターゲット ユーザーの完全な UPN 名を見つけます。
  6. [OK] を選択します。
  7. [セキュリティ] タブで、新しいユーザーに付与するすべてのアクセス許可を選択します。
  8. [適用] を選択します。

icacls で Windows ACL を構成する

ルート ディレクトリを含む、ファイル共有下のすべてのディレクトリとファイル共有に完全なアクセス許可を付与するには、次の Windows コマンドを使用します。 例中のプレースホルダーをお客様独自の値に置き換えてください。

icacls <mounted-drive-letter>: /grant <user-email>:(f)

icacls を使用して Windows ACL を設定する方法や、サポートされるさまざまな種類のアクセス許可の詳細については、コマンド ライン リファレンスの icacls に関するページをご覧ください。

ドメイン参加済みの VM からファイル共有をマウントする

次のプロセスでは、ファイル共有とアクセス許可が正しく設定されたことと、ドメイン参加済みの VM から Azure ファイル共有にアクセスできることを確認します。 共有レベルの Azure ロールの割り当ては、有効になるまでに時間がかかる場合があることにご注意ください。

アクセス許可を付与した Azure AD の ID を使用して、ドメイン参加済みの VM にサインインします。 必ず Azure AD の資格情報でサインインしてください。 ドライブが既にストレージ アカウント キーを使用してマウントされている場合は、ドライブを切断するか、もう一度サインインする必要があります。

以下の PowerShell スクリプトを実行するか、Azure portal を使用して、Azure ファイル共有を永続的にマウントし、Windows 上の Z: ドライブにマップします。 Z: が既に使用されている場合は、使用可能なドライブ文字に置き換えます。 認証済みなので、ストレージ アカウント キーを指定する必要はありません。 このスクリプトでは、このストレージ アカウントに TCP ポート 445 (SMB が使用するポート) を介してアクセスできるかどうかを確認します。 忘れずに、<storage-account-name><file-share-name> を独自の値に置き換えてください。 詳細については、Windows での Azure ファイル共有の使用に関する記事を参照してください。

共有のプライベート エンドポイントを設定している場合でも、常に file.core.windows.net を使用して Azure ファイル共有をマウントします。 ファイル共有のマウントに CNAME を使用することは、ID ベースの認証ではサポートされていません。

$connectTestResult = Test-NetConnection -ComputerName <storage-account-name>.file.core.windows.net -Port 445
if ($connectTestResult.TcpTestSucceeded) {
    cmd.exe /C "cmdkey /add:`"<storage-account-name>.file.core.windows.net`" /user:`"localhost\<storage-account-name>`""
    New-PSDrive -Name Z -PSProvider FileSystem -Root "\\<storage-account-name>.file.core.windows.net\<file-share-name>" -Persist
} else {
    Write-Error -Message "Unable to reach the Azure storage account via port 445. Check to make sure your organization or ISP is not blocking port 445, or use Azure P2S VPN, Azure S2S VPN, or Express Route to tunnel SMB traffic over a different port."
}

Windows プロンプトから net-use コマンドを使用して、ファイル共有をマウントすることもできます。 忘れずに、<YourStorageAccountName><FileShareName> を独自の値に置き換えてください。

net use Z: \\<YourStorageAccountName>.file.core.windows.net\<FileShareName>

ドメイン参加していない VM からファイル共有をマウントする

ドメインに参加していない VM は、Azure AD DS 認証を使用して Azure ファイル共有にアクセスできるのは、VM が Azure AD DS のドメイン コントローラー (Azure にある) に対する視線を持っている場合のみです。 通常、この接続を許可するには、サイト間またはポイント対サイト VPN を設定する必要があります。 ファイル共有にアクセスするユーザーは、Azure AD DS マネージド ドメインに ID と資格情報 (Azure AD から Azure AD DS に同期された Azure AD ID) を持っている必要があります。

ドメインに参加していない VM からファイル共有をマウントするには、ユーザーは次のいずれかを行う必要があります。

  • DOMAINNAME\username などの明示的な資格情報を指定する必要があります。ここで、DOMAINNAME は Azure AD DS ドメイン、username は Azure AD DS での ID のユーザー名です。
  • username@domainFQDN の表記を使用します。ここで、domainFQDN は完全修飾ドメイン名です。

これらの方法のいずれかを使用すると、クライアントは Azure AD DS ドメイン内のドメイン コントローラーに接続して、Kerberos チケットを要求および受信できます。

次に例を示します。

net use Z: \\<YourStorageAccountName>.file.core.windows.net\<FileShareName> /user:<DOMAINNAME\username>

or

net use Z: \\<YourStorageAccountName>.file.core.windows.net\<FileShareName> /user:<username@domainFQDN>

次のステップ

ファイル共有に対してさらにユーザー アクセスを許可するには、「共有レベルのアクセス許可を割り当てる」と「Windows ACL を構成する」の手順に従ってください。

Azure Files の ID ベースの認証の詳細については、次のリソースを参照してください。