Включение проверки подлинности служб домен Active Directory для общих папок Azure
В этой статье описывается процесс включения проверки подлинности служб домен Active Directory (AD DS) в учетной записи хранения, чтобы использовать учетные данные локальная служба Active Directory (AD) для проверки подлинности в общих папках Azure.
Внимание
Прежде чем включать проверку подлинности AD DS, ознакомьтесь с поддерживаемыми сценариями и требованиями в обзорной статье и обеспечьте выполнение предварительных требований. Если среда Active Directory охватывает несколько лесов, ознакомьтесь с Файлы Azure с несколькими лесами Active Directory.
Чтобы включить проверку подлинности AD DS через SMB для общих папок Azure, необходимо зарегистрировать учетную запись хранения Azure в локальной службе AD DS, а затем задать необходимые свойства домена в учетной записи хранения. Чтобы зарегистрировать учетную запись хранения в AD DS, создайте учетную запись компьютера (или учетную запись входа в службу), представляющую ее в AD DS. Подумайте об этом процессе, как если бы это было похоже на создание учетной записи, представляющей локальный файловый сервер Windows в AD DS. Если эта функция включена в учетной записи хранения, она применяется ко всем новым и существующим общим папкам в учетной записи.
Применяется к
Тип общей папки | SMB | NFS |
---|---|---|
Стандартные общие папки (GPv2), LRS/ZRS | ||
Стандартные общие папки (GPv2), GRS/GZRS | ||
Общие папки уровня "Премиум" (FileStorage), LRS/ZRS |
Вариант 1 (рекомендуется): использовать модуль PowerShell AzFilesHybrid
Модуль PowerShell AzFilesHybrid предоставляет командлеты для развертывания и настройки Файлы Azure. Он включает командлеты для присоединения учетных записей хранения к локальная служба Active Directory и настройке DNS-серверов. Командлеты вносят необходимые изменения и позволяют включить функцию. Так как некоторые части командлетов взаимодействуют с локальными AD DS, мы объясним, что делают командлеты, чтобы определить, соответствуют ли изменения политикам соответствия требованиям и безопасности, и убедитесь, что у вас есть соответствующие разрешения для выполнения командлетов. Хотя мы рекомендуем использовать модуль AzFilesHybrid, если это не удается сделать, мы предоставляем инструкции вручную.
Внимание
Шифрование Kerberos AES-256 теперь является единственным методом шифрования, поддерживаемым модулем AzFilesHybrid. Если вы предпочитаете использовать шифрование RC4, см . два варианта: вручную выполнить действия включения. Если вы ранее включили функцию со старой версией AzFilesHybrid (ниже версии 0.2.2), которая использовала RC4 в качестве метода шифрования по умолчанию и хотите обновить для поддержки AES-256, см. сведения об устранении неполадок Файлы Azure проверке подлинности SMB.
Необходимые компоненты
- Если у вас не установлено решение .NET Framework 4.7.2 или более поздней версии, установите его сейчас. Он необходим для успешного импорта модуля AzFilesHybrid.
- Убедитесь, что вы установили Azure PowerShell (модуль Az) и Az.Storage . Для использования AzFilesHybrid необходимо иметь по крайней мере Az.PowerShell 2.8.0+ и Az.Storage 4.3.0+ .
- Установите модуль PowerShell Active Directory.
Загрузка модуля AzFilesHybrid
Скачайте и распакуйте последнюю версию модуля AzFilesHybrid.
Выполнение командлета Join-AzStorageAccount
Командлет Join-AzStorageAccount
выполняет действие, аналогичное присоединению к автономному домену от имени указанной учетной записи хранения. Приведенный ниже сценарий использует этот командлет для создания учетной записи компьютера в домене AD. Если по какой-то причине использовать учетную запись компьютера нельзя, вы можете изменить сценарий и создать вместо нее учетную запись для входа в службу. Использование шифрования AES-256 с учетными записями входа в службу поддерживается начиная с AzFilesHybrid версии 0.2.5.
Учетная запись AD DS, созданная командлетом, представляет учетную запись хранения. Если учетная запись AD DS создана в подразделении с ограничением на срок действия пароля, необходимо обновить пароль до окончания срока его действия. Если вы не обновите пароль учетной записи до наступления этой даты, то при обращении к общим папкам Azure возникнут ошибки. Сведения об обновлении пароля см. в статье Обновление пароля учетной записи AD DS.
Внимание
Командлет Join-AzStorageAccount
создаст учетную запись AD для представления учетной записи хранения (общей папки) в AD. Вы можете зарегистрировать учетную запись компьютера или учетную запись для входа в службу. Дополнительные сведения см. в статье Часто задаваемые вопросы. Срок действия паролей учетной записи для входа в службу может истечь в AD, если для них задан срок действия пароля по умолчанию для домена или для подразделения AD. Так как изменения пароля для учетной записи компьютера управляются клиентским компьютером, а не службой AD, срок их действия никогда не истекает в AD, а клиентские компьютеры по умолчанию изменяют пароли каждые 30 дней.
Для обоих типов учетных записей рекомендуется проверить настроенный срок действия пароля и запланировать обновление пароля учетной записи хранения в учетной записи AD до окончания срока действия пароля. Вы можете создать новое подразделение Active Directory в AD и отключить политику срока действия паролей для учетных записей компьютеров или учетных записей для входа в службу.
Необходимо запустить приведенный ниже сценарий в PowerShell 5.1 на устройстве, присоединенном к локальной службе AD DS, используя локальные учетные данные AD DS с разрешениями на создание учетной записи компьютера или учетной записи входа службы в целевой AD (например, администратора домена). Чтобы следовать принципу наименьших привилегий, локальные учетные данные AD DS должны иметь следующие роли Azure:
- Средство чтения в группе ресурсов, в которой находится целевая учетная запись хранения.
- Участник учетной записи хранения, присоединенной к AD DS.
Если учетная запись, используемая для присоединения к учетной записи хранения в AD DS, является владельцем или участником в подписке Azure, где находятся целевые ресурсы, эта учетная запись уже включена для выполнения соединения и дальнейших назначений не требуется.
Учетные данные AD DS также должны иметь разрешения на создание учетной записи компьютера или учетной записи входа в службу в целевой ad. Замените значения заполнителей собственными перед выполнением скрипта.
# 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 to Azure using a credential that has either storage account owner or contributor Azure role
# assignment. If you are logging into an Azure environment other than Public (ex. AzureUSGovernment)
# you will need to specify that.
# See https://learn.microsoft.com/azure/azure-government/documentation-government-get-started-connect-with-ps
# for more information.
Connect-AzAccount
# Define parameters
# $StorageAccountName is the name of an existing storage account that you want to join to AD
# $SamAccountName is the name of the to-be-created AD object, which is used by AD as the logon name
# for the object. It must be 15 characters or less and has certain character restrictions.
# Make sure that you provide the SamAccountName without the trailing '$' sign.
# See https://learn.microsoft.com/windows/win32/adschema/a-samaccountname for more information.
$SubscriptionId = "<your-subscription-id-here>"
$ResourceGroupName = "<resource-group-name-here>"
$StorageAccountName = "<storage-account-name-here>"
$SamAccountName = "<sam-account-name-here>"
$DomainAccountType = "<ComputerAccount|ServiceLogonAccount>" # Default is set as ComputerAccount
# 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.
$OuDistinguishedName = "<ou-distinguishedname-here>"
# Encryption method is AES-256 Kerberos.
# 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 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), depending on your AD permissions
# and preference. Run Get-Help Join-AzStorageAccountForAuth for more details on this cmdlet.
Join-AzStorageAccount `
-ResourceGroupName $ResourceGroupName `
-StorageAccountName $StorageAccountName `
-SamAccountName $SamAccountName `
-DomainAccountType $DomainAccountType `
-OrganizationalUnitDistinguishedName $OuDistinguishedName
# 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: выполнение действий по включению вручную
Большинство клиентов должны выбрать вариант выше и использовать модуль PowerShell AzFilesHybrid, чтобы включить проверку подлинности AD DS с Файлы Azure. Однако если вы предпочитаете выполнить шаги вручную с помощью PowerShell Active Directory, описанные здесь действия описаны здесь.
Внимание
Если вы уже выполнили приведенный Join-AzStorageAccount
выше сценарий, перейдите непосредственно в раздел "Подтверждение включения функции ". Выполнять описанные ниже действия вручную не нужно.
Проверка среды
Сначала проверьте состояние среды.
- Проверьте, установлен ли PowerShell Active Directory и если оболочка выполняется с правами администратора.
- Убедитесь, что модуль Az.Storage установлен и установите его, если он не установлен. Вам потребуется по крайней мере версия 2.0.
- После выполнения этих проверок проверьте, есть ли учетная запись компьютера (по умолчанию) или учетная запись входа в службу, которая уже создана с помощью имени участника-службы или имени участника-пользователя, например cifs/your-storage-account-name-here.file.core.windows.net. Если учетная запись не существует, создайте ее, как описано в следующем разделе.
Внимание
Приведенные в этом разделе командлеты PowerShell для Windows Server Active Directory должны выполняться в Windows PowerShell 5.1. PowerShell 7.x и Azure Cloud Shell не подходят для этого сценария.
Создание удостоверения, представляющего учетную запись хранения в AD, вручную
Чтобы создать эту учетную запись вручную, сначала создайте ключ Kerberos для учетной записи хранения и получите ключ доступа с помощью командлетов PowerShell, приведенных ниже. Этот ключ используется только во время установки и не может использоваться в учетной записи хранения для управления или операций в плоскости данных.
# 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"}
Командлеты должны возвращать значение ключа. После получения ключа kerb1 создайте учетную запись компьютера или учетную запись службы в AD в подразделении и используйте ключ в качестве пароля для удостоверения AD.
Задайте имя субъекта-службы для cifs/your-storage-account-name-here.file.core.windows.net в графическом интерфейсе AD или выполните
Setspn
команду из командной строки Windows от имени администратора (не забудьте заменить пример текста именем учетной записи хранения и<ADAccountName>
именем учетной записи AD).Setspn -S cifs/your-storage-account-name-here.file.core.windows.net <ADAccountName>
Если у вас есть учетная запись пользователя, измените имя участника-пользователя, чтобы оно соответствовало имени участника-службы для объекта AD (необходимо установить командлеты AD PowerShell и выполнить их в PowerShell 5.1 с повышенными привилегиями).
Set-ADUser -Identity $UserSamAccountName -UserPrincipalName cifs/<StorageAccountName>.file.core.windows.net@<DNSRoot>
Задайте пароль учетной записи AD значением ключа kerb1.
Set-ADAccountPassword -Identity servername$ -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "kerb1_key_value_here" -Force)
Если вашем подразделении ограничивается срок действия пароля, необходимо обновить пароль до истечения срока его действия, чтобы предотвратить сбои проверки подлинности при доступе к общим папкам Azure. Дополнительные сведения см. в статье Обновление пароля для идентификации вашей учетной записи хранения в AD DS.
Сохраните идентификатор безопасности только что созданного удостоверения — он вам потребуется в следующем шаге. Созданное удостоверение, представляющее учетную запись хранения, не нужно синхронизировать с идентификатором Microsoft Entra.
Включение функции в учетной записи хранения
Измените приведенную ниже команду, чтобы включить в нее сведения о конфигурации для свойств домена, и выполните эту команду для включения функции. Идентификатор безопасности учетной записи хранения, необходимый для следующей команды, представляет собой идентификатор безопасности удостоверения, которое вы создали в AD DS в предыдущем разделе. Убедитесь, что свойство ActiveDirectorySamAccountName указано без знака "$" на конце.
# Set the feature flag on the target storage account and provide the required AD domain information
Set-AzStorageAccount `
-ResourceGroupName "<your-resource-group-name>" `
-Name "<your-storage-account-name>" `
-EnableActiveDirectoryDomainServicesForFile $true `
-ActiveDirectoryDomainName "<your-domain-dns-root>" `
-ActiveDirectoryNetBiosDomainName "<your-domain-dns-root>" `
-ActiveDirectoryForestName "<your-forest-name>" `
-ActiveDirectoryDomainGuid "<your-guid>" `
-ActiveDirectoryDomainsid "<your-domain-sid>" `
-ActiveDirectoryAzureStorageSid "<your-storage-account-sid>" `
-ActiveDirectorySamAccountName "<your-domain-object-sam-account-name>" `
-ActiveDirectoryAccountType "<your-domain-object-account-type, the value could be 'Computer' or 'User'>"
Включение шифрования AES-256 (рекомендуется)
Чтобы включить шифрование AES 256, выполните действия, описанные в этом разделе. Если вы планируете использовать шифрование RC4, пропустите этот раздел.
Внимание
Чтобы включить шифрование AES-256, объект домена, представляющий учетную запись хранения, должен быть учетной записью компьютера (по умолчанию) или учетной записью входа в службу в локальном домене AD. Если объект домена не соответствует этим требованиям, удалите его и создайте новый объект в соответствии с ними. Кроме того, необходимо иметь доступ на запись к msDS-SupportedEncryptionTypes
атрибуту объекта.
Командлет, который будет выполняться для настройки поддержки AES-256, зависит от того, является ли объект домена, представляющий учетную запись хранения, является учетной записью компьютера или учетной записью входа в службу (учетная запись пользователя). В любом случае необходимо установить командлеты AD PowerShell и выполнить командлет в PowerShell 5.1 с повышенными привилегиями.
Чтобы включить шифрование AES-256 в учетной записи компьютера, выполните следующую команду. Замените <domain-object-identity>
и <domain-name>
собственными значениями.
Set-ADComputer -Identity <domain-object-identity> -Server <domain-name> -KerberosEncryptionType "AES256"
Чтобы включить шифрование AES-256 в учетной записи входа в службу, выполните следующую команду. Замените <domain-object-identity>
и <domain-name>
собственными значениями.
Set-ADUser -Identity <domain-object-identity> -Server <domain-name> -KerberosEncryptionType "AES256"
После выполнения командлета выше замените <domain-object-identity>
в следующем скрипте своим значением, а затем запустите скрипт, чтобы обновить пароль объекта домена:
$KeyName = "kerb1" # Could be either the first or second kerberos key, this script assumes we're refreshing the first
$KerbKeys = New-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -KeyName $KeyName
$KerbKey = $KerbKeys.keys | Where-Object {$_.KeyName -eq $KeyName} | Select-Object -ExpandProperty Value
$NewPassword = ConvertTo-SecureString -String $KerbKey -AsPlainText -Force
Set-ADAccountPassword -Identity <domain-object-identity> -Reset -NewPassword $NewPassword
Внимание
Если вы ранее использовали шифрование RC4 и обновили учетную запись хранения для использования AES-256, необходимо запустить klist purge
на клиенте, а затем повторно подключить общую папку, чтобы получить новые билеты Kerberos с AES-256.
Отладка
При необходимости можно запустить Debug-AzStorageAccountAuth
командлет, чтобы выполнить набор базовых проверок конфигурации AD с использованием пользователя AD, вошедшего в систему. Этот командлет поддерживается в AzFilesHybrid версии 0.1.2+ и более поздней версии. Этот командлет применим только для проверки подлинности AD DS. Он не работает для доменных служб Microsoft Entra или учетных записей хранения с поддержкой Microsoft Entra Kerberos. Дополнительные сведения о проверках, выполненных в этом командлете, см. в статье "Не удалось подключить общие папки Azure с учетными данными AD".
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
Проверка включения функции
Вы можете проверить, включена ли Active Directory в учетной записи хранения с помощью следующего сценария:
# 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
В случае успеха выходные данные должны выглядеть следующим образом:
DomainName:<yourDomainHere>
NetBiosDomainName:<yourNetBiosDomainNameHere>
ForestName:<yourForestNameHere>
DomainGuid:<yourGUIDHere>
DomainSid:<yourSIDHere>
AzureStorageID:<yourStorageSIDHere>
Следующий шаг
Теперь вы успешно включили AD DS в учетной записи хранения. Чтобы использовать эту функцию, необходимо назначить разрешения на уровне общего ресурса.