パート 1: Azure ファイル共有に対する AD DS 認証を有効にするPart one: enable AD DS authentication for your Azure file shares

Active Directory Domain Services (AD DS) 認証を有効にする前に、概要の記事を読んで、サポートされているシナリオと要件を理解してください。Before you enable Active Directory Domain Services (AD DS) authentication, make sure you've read the overview article to understand the supported scenarios and requirements.

この記事では、ストレージ アカウントで Active Directory Domain Services (AD DS) 認証を有効にするために必要なプロセスについて説明します。This article describes the process required for enabling Active Directory Domain Services (AD DS) authentication on your storage account. この機能を有効にした後、AD DS の資格情報を使用して Azure ファイル共有に対して認証するために、ストレージ アカウントと AD DS を構成する必要があります。After enabling the feature, you must configure your storage account and your AD DS, to use AD DS credentials for authenticating to your Azure file share. Azure ファイル共有に対する SMB 経由の AD DS 認証を有効にするには、ストレージ アカウントを AD DS に登録してから、ストレージ アカウントに必要なドメイン プロパティを設定する必要があります。To enable AD DS authentication over SMB for Azure file shares, you need to register your storage account with AD DS and then set the required domain properties on the storage account.

ストレージ アカウントを AD DS に登録するには、それを表すアカウントを AD DS 内に作成します。To register your storage account with AD DS, create an account representing it in your AD DS. このプロセスは、オンプレミスの Windows ファイル サーバーを表すアカウントを AD DS 内に作成するのと同じように考えることができます。You can think of this process as if it were like creating an account representing an on-premises Windows file server in your AD DS. 機能は、ストレージ アカウントで有効になると、アカウント内のすべての新規および既存のファイル共有に適用されます。When the feature is enabled on the storage account, it applies to all new and existing file shares in the account.

AzFilesHybrid PowerShell モジュールのコマンドレットによって、ユーザーの代わりに必要な変更が行われ、機能が有効になります。The cmdlets in the AzFilesHybrid PowerShell module make the necessary modifications and enables the feature for you. コマンドレットの一部はオンプレミスの AD DS と相互作用するため、ここではコマンドレットの動作について説明します。これにより、変更がコンプライアンス ポリシーとセキュリティ ポリシーに適合するかどうかを判断し、コマンドレットを実行するための適切なアクセス許可を持っていることを確実にすることができます。Since some parts of the cmdlets interact with your on-premises AD DS, we explain what the cmdlets do, so you can determine if the changes align with your compliance and security policies, and ensure you have the proper permissions to execute the cmdlets. AzFilesHybrid モジュールの使用をお勧めしますが、使用できない場合は、手動で実行するための手順を用意しています。Though we recommend using AzFilesHybrid module, if you are unable to do so, we provide the steps so that you may perform them manually.

AzFilesHybrid モジュールをダウンロードするDownload AzFilesHybrid module

  • AzFilesHybrid モジュール (GA モジュール: v0.2.0+) をダウンロードして解凍するAES 256 Kerberos 暗号化は、v0.2.2 以上でサポートされることに注意してください。Download and unzip the AzFilesHybrid module (GA module: v0.2.0+) Note that AES 256 kerberos encryption is supported on v0.2.2 or above. この機能を 0.2.2 未満の AzFilesHybrid バージョンで有効にし、AES 256 Kerberos 暗号化がサポートされるように更新する場合は、この記事をご覧ください。If you have enabled the feature with a AzFilesHybrid version below v0.2.2 and want to update to support AES 256 Kerberos encryption, please refer to this article.
  • ターゲット AD でサービス ログオン アカウントまたはコンピューター アカウントを作成する権限がある AD DS 資格情報を使用して、オンプレミスの AD DS に参加しているデバイスにモジュールをインストールして実行します。Install and execute the module in a device that is domain joined to on-premises AD DS with AD DS credentials that have permissions to create a service logon account or a computer account in the target AD.
  • Azure AD に同期されているオンプレミスの AD DS 資格情報を使用して、スクリプトを実行します。Run the script using an on-premises AD DS credential that is synced to your Azure AD. オンプレミスの AD DS 資格情報には、ストレージ アカウント所有者または共同作成者の Azure ロールのアクセス許可が必要です。The on-premises AD DS credential must have either the storage account owner or the contributor Azure role permissions.

Join-AzStorageAccountForAuth を実行するRun Join-AzStorageAccountForAuth

Join-AzStorageAccountForAuth コマンドレットでは、指定されたストレージ アカウントに代わってオフライン ドメイン参加に相当することを行います。The Join-AzStorageAccountForAuth cmdlet performs the equivalent of an offline domain join on behalf of the specified storage account. このスクリプトでは、コマンドレットを使用して、AD ドメインにコンピューター アカウントを作成します。The script uses the cmdlet to create a computer account in your AD domain. 何らかの理由でコンピューター アカウントを使用できない場合は、代わりにサービス ログオン アカウントを作成するようにスクリプトを変更できます。If for whatever reason you cannot use a computer account, you can alter the script to create a service logon account instead. このコマンドを手動で実行する場合は、環境に最も適したアカウントを選択する必要があります。If you choose to run the command manually, you should select the account best suited for your environment.

コマンドレットによって作成された AD DS アカウントは、ストレージ アカウントを表します。The AD DS account created by the cmdlet represents the storage account. AD DSアカウントが、パスワードの有効期限を適用する組織単位 (OU) の下で作成されている場合は、パスワードの有効期間の前にパスワードを更新する必要があります。If the AD DS account is created under an organizational unit (OU) that enforces password expiration, you must update the password before the maximum password age. その日付の前までにアカウント パスワードが更新されない場合は、Azure ファイル共有にアクセスするときに認証エラーが発生します。Failing to update the account password before that date results in authentication failures when accessing Azure file shares. パスワードを更新する方法については、AD DS アカウント パスワードを更新する方法に関する記事を参照してください。To learn how to update the password, see Update AD DS account password.

PowerShell で実行する前に、必ず、以下のパラメーターのプレースホルダーの値を実際の値に置き換えてください。Replace the placeholder values with your own in the parameters below before executing it in PowerShell.

重要

ドメイン参加コマンドレットは、AD のストレージ アカウント (ファイル共有) を表す AD アカウントを作成します。The domain join cmdlet will create an AD account to represent the storage account (file share) in AD. コンピューター アカウントまたはサービス ログオン アカウントのどちらとして登録するかを選択できます。詳細については、FAQ を参照してください。You can choose to register as a computer account or service logon account, see FAQ for details. コンピューター アカウントの場合は、AD で 30 日に設定された既定のパスワードの有効期限が存在します。For computer accounts, there is a default password expiration age set in AD at 30 days. 同様に、サービス ログオン アカウントでも、既定のパスワードの有効期限が AD ドメインまたは組織単位 (OU) で設定されている可能性があります。Similarly, the service logon account may have a default password expiration age set on the AD domain or Organizational Unit (OU). どちらのアカウントの種類でも、AD 環境で構成されているパスワードの有効期限を確認し、パスワードの有効期間が終了する前に、AD アカウントのストレージ アカウント ID のパスワードを更新するよう計画することをお勧めします。For both account types, we recommend you check the password expiration age configured in your AD environment and plan to update the password of your storage account identity of the AD account before the maximum password age. AD で新しい AD 組織単位 (OU) を作成し、それぞれコンピューター アカウントまたはサービス ログオン アカウントのパスワードの有効期限のポリシーを無効にすることを検討できます。You can consider creating a new AD Organizational Unit (OU) in AD and disabling password expiration policy on computer accounts or service logon accounts accordingly.

# Change the execution policy to unblock importing AzFilesHybrid.psm1 module
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser

# Navigate to where AzFilesHybrid is unzipped and stored and run to copy the files into your path
.\CopyToPSPath.ps1 

# Import AzFilesHybrid module
Import-Module -Name AzFilesHybrid

# Login with an Azure AD credential that has either storage account owner or contributer Azure role assignment
# If you are logging into an Azure environment other than Public (ex. AzureUSGovernment) you will need to specify that.
# See https://docs.microsoft.com/azure/azure-government/documentation-government-get-started-connect-with-ps
# for more information.
Connect-AzAccount

# Define parameters, $StorageAccountName currently has a maximum limit of 15 characters
$SubscriptionId = "<your-subscription-id-here>"
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"

# Select the target subscription for the current session
Select-AzSubscription -SubscriptionId $SubscriptionId 

# Register the target storage account with your active directory environment under the target OU (for example: specify the OU with Name as "UserAccounts" or DistinguishedName as "OU=UserAccounts,DC=CONTOSO,DC=COM"). 
# You can use to this PowerShell cmdlet: Get-ADOrganizationalUnit to find the Name and DistinguishedName of your target OU. If you are using the OU Name, specify it with -OrganizationalUnitName as shown below. If you are using the OU DistinguishedName, you can set it with -OrganizationalUnitDistinguishedName. You can choose to provide one of the two names to specify the target OU.
# You can choose to create the identity that represents the storage account as either a Service Logon Account or Computer Account (default parameter value), depends on the AD permission you have and preference. 
# Run Get-Help Join-AzStorageAccountForAuth for more details on this cmdlet.

Join-AzStorageAccountForAuth `
        -ResourceGroupName $ResourceGroupName `
        -StorageAccountName $StorageAccountName `
        -DomainAccountType "<ComputerAccount|ServiceLogonAccount>" <# Default is set as ComputerAccount #> `
        -OrganizationalUnitDistinguishedName "<ou-distinguishedname-here>" <# If you don't provide the OU name as an input parameter, the AD identity that represents the storage account is created under the root directory. #> `
        -EncryptionType "<AES256/RC4/AES256,RC4>" <# Specify the encryption agorithm used for Kerberos authentication. Default is configured as "'RC4','AES256'" which supports both 'RC4' and 'AES256' encryption. #>

#Run the command below if you want to enable AES 256 authentication. If you plan to use RC4, you can skip this step.
Update-AzStorageAccountAuthForAES256 -ResourceGroupName $ResourceGroupName -StorageAccountName $StorageAccountName

#You can run the Debug-AzStorageAccountAuth cmdlet to conduct a set of basic checks on your AD configuration with the logged on AD user. This cmdlet is supported on AzFilesHybrid v0.1.2+ version. For more details on the checks performed in this cmdlet, see Azure Files Windows troubleshooting guide.
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose

オプション 2:有効化アクションを手動で実行するOption 2: Manually perform the enablement actions

前述の Join-AzStorageAccountForAuth スクリプトを既に正常に実行している場合は、セクション「機能が有効になっていることを確認する」に進んでください。If you have already executed the Join-AzStorageAccountForAuth script above successfully, go to the Confirm the feature is enabled section. 次の手動の手順を実行する必要はありません。You don't need to perform the following manual steps.

環境の確認Checking environment

まず、環境の状態を確認する必要があります。First, you must check the state of your environment. 具体的には、Active Directory PowerShell がインストールされているかどうかと、シェルが管理者特権で実行されているかどうかを確認する必要があります。Specifically, you must check if Active Directory PowerShell is installed, and if the shell is being executed with administrator privileges. 次に、Az.Storage 2.0 モジュールがインストールされているかどうかを確認し、まだの場合はインストールします。Then check to see if the Az.Storage 2.0 module is installed, and install it if it isn't. これらの確認が完了したら、AD DS を確認し、コンピューター アカウント (既定値)、あるいは "cifs/ここはご利用のストレージ アカウントの名前.file.core.windows.net" などの SPN または UPN を使用して既に作成されているサービス ログオン アカウントがあるかどうかを確認します。After completing those checks, check your AD DS to see if there is either a computer account (default) or service logon account that has already been created with SPN/UPN as "cifs/your-storage-account-name-here.file.core.windows.net". アカウントが存在しない場合は、次のセクションの説明に従って作成します。If the account doesn't exist, create one as described in the following section.

AD でのストレージ アカウントを表す ID の手動による作成Creating an identity representing the storage account in your AD manually

このアカウントを手動で作成するには、ストレージ アカウント用の新しい Kerberos キーを作成します。To create this account manually, create a new Kerberos key for your storage account. 次に、以下の PowerShell コマンドレットを使用して、その Kerberos キーをアカウントのパスワードとして使用します。Then, use that Kerberos key as the password for your account with the PowerShell cmdlets below. このキーは、設定時にのみ使われ、ストレージ アカウントに対する制御やデータ プレーンの操作には使用できません。This key is only used during setup and cannot be used for any control or data plane operations against the storage account.

# Create the Kerberos key on the storage account and get the Kerb1 key as the password for the AD identity to represent the storage account
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"

New-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -KeyName kerb1
Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -ListKerbKey | where-object{$_.Keyname -contains "kerb1"}

そのキーを作成したら、OU の下にサービスまたはコンピューター アカウントを作成します。Once you have that key, create either a service or computer account under your OU. 次の仕様を使用します (テキスト例は実際のストレージ アカウント名に置き換えてください)。Use the following specification (remember to replace the example text with your storage account name):

SPN: "cifs/ここはご利用のストレージ アカウントの名前.file.core.windows.net"。パスワード: ストレージ アカウントの Kerberos キー。SPN: "cifs/your-storage-account-name-here.file.core.windows.net" Password: Kerberos key for your storage account.

OU でパスワードの有効期限が適用されている場合は、パスワードの有効期間の前にパスワードを更新し、Azure ファイル共有にアクセスするときの認証エラーを防ぐ必要があります。If your OU enforces password expiration, you must update the password before the maximum password age to prevent authentication failures when accessing Azure file shares. 詳細については、「AD のストレージ アカウント ID のパスワードを更新する」を参照してください。See Update the password of your storage account identity in AD for details.

新しく作成された ID の SID を保持します。これは次の手順で必要になります。Keep the SID of the newly created identity, you'll need it for the next step. ストレージ アカウントを表す、作成した ID を Azure AD に同期する必要はありません。The identity you've created that represent the storage account doesn't need to be synced to Azure AD.

ストレージ アカウントで機能を有効にするEnable the feature on your storage account

これで、ストレージ アカウントで機能を有効にすることができるようになりました。Now you can enable the feature on your storage account. 次のコマンドでドメイン プロパティの構成の詳細をいくつか指定してから実行します。Provide some configuration details for the domain properties in the following command, then run it. 次のコマンドで必要なストレージ アカウント SID は、前のセクションの AD DS で作成した ID の SID です。The storage account SID required in the following command is the SID of the identity you created in your AD DS in the previous section.

# Set the feature flag on the target storage account and provide the required AD domain information
Set-AzStorageAccount `
        -ResourceGroupName "<your-resource-group-name-here>" `
        -Name "<your-storage-account-name-here>" `
        -EnableActiveDirectoryDomainServicesForFile $true `
        -ActiveDirectoryDomainName "<your-domain-name-here>" `
        -ActiveDirectoryNetBiosDomainName "<your-netbios-domain-name-here>" `
        -ActiveDirectoryForestName "<your-forest-name-here>" `
        -ActiveDirectoryDomainGuid "<your-guid-here>" `
        -ActiveDirectoryDomainsid "<your-domain-sid-here>" `
        -ActiveDirectoryAzureStorageSid "<your-storage-account-sid>"

デバッグDebugging

Debug-AzStorageAccountAuth コマンドレットを実行し、ログオンした AD ユーザーで AD の構成に対する一連の基本的なチェックを実行します。You can run the Debug-AzStorageAccountAuth cmdlet to conduct a set of basic checks on your AD configuration with the logged on AD user. このコマンドレットは、AzFilesHybrid バージョン 0.1.2 以降でサポートされています。This cmdlet is supported on AzFilesHybrid v0.1.2+ version. このコマンドレットで実行されるチェックの詳細については、Windows のトラブルシューティング ガイドの「AD 資格情報を使用して Azure Files をマウントできない」を参照してください。For more information on the checks performed in this cmdlet, see Unable to mount Azure Files with AD credentials in the troubleshooting guide for Windows.

Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose

機能が有効になっていることを確認するConfirm the feature is enabled

次のスクリプトを使用して、ストレージ アカウントで機能が有効になっているかどうかを確認することができます。You can check to confirm whether the feature is enabled on your storage account with the following script:

# Get the target storage account
$storageaccount = Get-AzStorageAccount `
        -ResourceGroupName "<your-resource-group-name-here>" `
        -Name "<your-storage-account-name-here>"

# List the directory service of the selected service account
$storageAccount.AzureFilesIdentityBasedAuth.DirectoryServiceOptions

# List the directory domain information if the storage account has enabled AD DS authentication for file shares
$storageAccount.AzureFilesIdentityBasedAuth.ActiveDirectoryProperties

正常に終了した場合、出力は次のようになります。If successful, the output should look like this:

DomainName:<yourDomainHere>
NetBiosDomainName:<yourNetBiosDomainNameHere>
ForestName:<yourForestNameHere>
DomainGuid:<yourGUIDHere>
DomainSid:<yourSIDHere>
AzureStorageID:<yourStorageSIDHere>

次のステップNext steps

これで、ストレージ アカウントで機能が正常に有効になりました。You've now successfully enabled the feature on your storage account. この機能を使用するには、共有レベルのアクセス許可を割り当てる必要があります。To use the feature, you must assign share-level permissions. 次のセクションに進みます。Continue to the next section.

パート 2: ID に共有レベルのアクセス許可を割り当てるPart two: assign share-level permissions to an identity