Поделиться через


Включение проверки подлинности служб домен Active Directory для общих папок Azure

В этой статье описывается процесс включения аутентификации службы доменных служб Active Directory (AD DS) в учетной записи хранения, чтобы использовать учетные данные локальной службы Active Directory (AD) для аутентификации в общих папках Azure.

Внимание

Прежде чем включать проверку подлинности AD DS, ознакомьтесь с поддерживаемыми сценариями и требованиями в обзорной статье и обеспечьте выполнение предварительных требований. Если среда Active Directory охватывает несколько лесов, используйте Azure Files с несколькими лесами Active Directory.

Чтобы включить проверку подлинности AD DS через SMB для общих папок Azure, необходимо зарегистрировать учетную запись хранения Azure в локальной службе AD DS, а затем задать необходимые свойства домена в учетной записи хранения. Чтобы зарегистрировать учетную запись хранения в AD DS, создайте учетную запись компьютера (или учетную запись входа в службу), представляющую ее в AD DS. Подумайте об этом процессе, как если бы это было похоже на создание учетной записи, представляющей локальный файловый сервер Windows в AD DS. Если эта функция включена в учетной записи хранения, она применяется ко всем новым и существующим общим папкам в учетной записи.

Применяется к

Модель управления Модель выставления счетов Тарифный уровень мультимедиа Избыточность малые и средние предприятия (SMB) Сетевая файловая система
Microsoft.Storage Подготовленная версия 2 HDD (стандартный) Локальное (LRS) Да Нет
Microsoft.Storage Подготовленная версия 2 HDD (стандартный) Зона (ZRS) Да Нет
Microsoft.Storage Подготовленная версия 2 HDD (стандартный) Джио (GRS) Да Нет
Microsoft.Storage Подготовленная версия 2 HDD (стандартный) GeoZone (GZRS) Да Нет
Microsoft.Storage Настроенная версия v1 SSD (премиум) Локальное (LRS) Да Нет
Microsoft.Storage Настроенная версия v1 SSD (премиум) Зона (ZRS) Да Нет
Microsoft.Storage Оплата по мере использования HDD (стандартный) Локальное (LRS) Да Нет
Microsoft.Storage Оплата по мере использования HDD (стандартный) Зона (ZRS) Да Нет
Microsoft.Storage Оплата по мере использования HDD (стандартный) Джио (GRS) Да Нет
Microsoft.Storage Оплата по мере использования HDD (стандартный) GeoZone (GZRS) Да Нет

Модуль AzFilesHybrid для PowerShell предоставляет командлеты для развертывания и настройки Azure Files. Он включает командлеты для присоединения учетных записей хранилища к локальной службе Active Directory и настройки DNS-серверов. Командлеты вносят необходимые изменения и позволяют включить функцию. Так как некоторые части командлетов взаимодействуют с локальной службой AD DS, мы объясняем, что делают командлеты, чтобы вы могли определить, соответствуют ли изменения вашим политикам соответствия требованиям и безопасности, и чтобы удостовериться, что у вас есть соответствующие разрешения для выполнения командлетов. Хотя мы рекомендуем использовать модуль AzFilesHybrid, если это не удается, мы предоставляем шаги вручную.

Внимание

Шифрование Kerberos AES-256 теперь является единственным методом шифрования, поддерживаемым модулем AzFilesHybrid. Если вы предпочитаете использовать шифрование RC4, см. Вариант два: вручную выполнить действия включения. Если вы ранее включили функцию с помощью старой версии AzFilesHybrid (ниже версии 0.2.2), которая использовала RC4 в качестве метода шифрования по умолчанию, и хотите обновить её для поддержки AES-256, обратитесь к разделу об устранении неполадок проверки подлинности SMB в Azure Files.

Предварительные условия

Загрузка модуля 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 Files. Однако если вы предпочитаете выполнить шаги вручную с помощью PowerShell Active Directory, описанные здесь действия описаны здесь.

Внимание

Если вы уже выполнили приведенный Join-AzStorageAccount выше сценарий, перейдите непосредственно в раздел "Подтверждение включения функции ". Выполнять описанные ниже действия вручную не нужно.

Проверка среды

Сначала проверьте состояние среды.

  • Проверьте, установлен ли Active Directory PowerShell и выполняется ли оболочка с правами администратора.
  • Убедитесь, что модуль Az.Storage установлен и установите его, если он не установлен. Вам потребуется по крайней мере версия 2.0.
  • После выполнения этих проверок проверьте, есть ли в вашем AD DS учетная запись компьютера (по умолчанию) или учетная запись входа в службу, которая уже была создана с использованием SPN/UPN, например 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.

  1. Установите SPN на 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>
    
  2. Если у вас есть учетная запись пользователя, измените имя участника-пользователя, чтобы оно соответствовало имени участника-службы для объекта AD (необходимо установить командлеты AD PowerShell и выполнить их в PowerShell 5.1 с повышенными привилегиями).

    Set-ADUser -Identity $UserSamAccountName -UserPrincipalName cifs/<StorageAccountName>.file.core.windows.net@<DNSRoot>
    

Внимание

Не синхронизируйте пользователей с недопустимыми значениями userPrincipalName (UPN). Имя участника (UPNs) не должны содержать специальные символы, такие как /, пробелы или другие неподдерживаемые символы. Попытка синхронизации пользователей с недопустимыми UPN (то есть с использованием / в имени пользователя) приведет к ошибкам Microsoft Entra Connect. Если такие аутентичные данные существуют в вашем локальном каталоге, то:

  • Обновите имя пользователя до допустимого формата (например, [email protected]), или
  • Исключите пользователя из синхронизации с помощью правил фильтрации в Microsoft Entra Connect.
  1. Установите пароль учетной записи AD на значение ключа kerb1.

    Set-ADAccountPassword -Identity servername$ -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "kerb1_key_value_here" -Force)
    

Если ваша организационная единица устанавливает истечение срока действия пароля, необходимо обновить пароль до достижения максимального срока, чтобы предотвратить сбои проверки подлинности при доступе к общим папкам Azure. Дополнительные сведения см. в статье Обновление пароля для идентификации вашей учетной записи хранения в AD DS.

Сохраните идентификатор безопасности только что созданного удостоверения — он вам потребуется в следующем шаге. Созданное удостоверение, представляющее учетную запись хранения, не нужно синхронизировать с Microsoft Entra ID.

Включите функцию в вашей учетной записи хранения

Измените приведенную ниже команду, чтобы включить в нее сведения о конфигурации для свойств домена, и выполните эту команду для включения функции. SID учетной записи хранения, необходимый для следующей команды, — это SID удостоверения, которое вы создали в 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, выполните действия, описанные в этом разделе. Если вы планируете использовать шифрование 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 Kerberos. Он не работает для учетных записей хранения с поддержкой доменных служб Microsoft Entra. Дополнительные сведения о проверках, выполненных в этом командлете, см. в статье "Не удалось подключить общие папки 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 в учетной записи хранения. Чтобы использовать эту функцию, необходимо назначить разрешения на уровне общего ресурса.