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


Включение проверки подлинности служб домен 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 Да Нет

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

Внимание

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

Необходимые компоненты

Загрузка модуля 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.

  1. Задайте имя субъекта-службы для 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>
    
  3. Задайте пароль учетной записи 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, выполните действия, описанные в этом разделе. Если вы планируете использовать шифрование 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 в учетной записи хранения. Чтобы использовать эту функцию, необходимо назначить разрешения на уровне общего ресурса.