Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ общие папки SMB
В этой статье объясняется, как включить проверку подлинности в Active Directory Domain Services (AD DS) в учетной записи хранилища, чтобы использовать учетные данные локальной Active Directory (AD) для проверки подлинности в файловых ресурсах Azure.
Внимание
Перед включением проверки подлинности AD DS ознакомьтесь со статьей обзора AD DS и выполните необходимые предварительные требования. Если среда Active Directory охватывает несколько лесов, см. раздел Использование файлов Azure с несколькими лесами Active Directory.
Чтобы включить проверку подлинности AD DS через SMB для общих папок Azure, зарегистрируйте учетную запись хранения Azure в локальной службе AD DS, а затем задайте необходимые свойства домена в учетной записи хранения. Чтобы зарегистрировать учетную запись хранения в AD DS, создайте учетную запись компьютера (или учетную запись входа в службу), представляющую ее в AD DS. Этот процесс аналогичен созданию учетной записи, представляющей локальный Windows файловый сервер в AD DS. Если включить функцию в учетной записи хранения, она применяется ко всем новым и существующим общим папкам в учетной записи.
Вариант 1 (рекомендуется): использовать модуль PowerShell AzFilesHybrid
Модуль PowerShell AzFilesHybrid предоставляет командлеты для присоединения учетных записей хранения к локальным доменным службам AD DS и настройки DNS-серверов. Командлеты вносят необходимые изменения и позволяют включить эту функцию. Так как некоторые части командлетов взаимодействуют с локальными AD DS, ознакомьтесь с описанием того, что делают командлеты. Затем вы можете определить, насколько изменения соответствуют вашим политикам соответствия и безопасности, чтобы убедиться, что у вас есть необходимые разрешения для выполнения командлетов. Если вы не можете использовать модуль AzFilesHybrid, можно включить эту функцию , выполнив действия вручную.
Внимание
Модуль AzFilesHybrid поддерживает только шифрование AES-256 Kerberos. Если вы ранее включили функцию с помощью старой версии AzFilesHybrid (ниже версии 0.2.2), которая использовала RC4 в качестве метода шифрования по умолчанию, обновите до AES-256 немедленно. Для получения дополнительной информации см. раздел Устранение неполадок аутентификации SMB в Azure Files.
Предварительные условия
- Установите .NET Framework 4.7.2 или более поздней версии если он еще не установлен. Модулю AzFilesHybrid это требуется.
- Убедитесь, что установлены последние версии Azure PowerShell (модуль Az) и Az.Storage. Для использования AzFilesHybrid необходимо использовать Az.Storage 8.1.0 или более поздней версии.
- Установите модуль Active Directory PowerShell.
Загрузка модуля AzFilesHybrid
Скачайте и распакуйте последнюю версию модуля AzFilesHybrid.
Запустите Join-AzStorageAccount
Командлет Join-AzStorageAccount выполняет эквивалент автономного присоединения к домену для указанной учетной записи хранения. Скрипт ниже использует данный командлет для создания учетной записи компьютера в вашем домене AD. Если вы не можете использовать учетную запись компьютера, можно изменить сценарий, чтобы создать учетную запись входа в службу . Использование шифрования AES-256 с учетными записями входа в службу поддерживается начиная с AzFilesHybrid версии 0.2.5.
Внимание
Учетная запись, создаваемая Join-AzStorageAccount, представляет учетную запись хранилища в вашей AD DS. Независимо от того, регистрируете ее как учетную запись компьютера или учетную запись входа в службу, проверьте политику истечения срока действия пароля в домене AD или подразделении (OU). Срок действия паролей учетной записи входа в службу может истекать в зависимости от возраста по умолчанию, в то время как изменения паролей учетной записи компьютера управляются клиентским компьютером (по умолчанию каждые 30 дней) и не истекают в AD. Для любого типа учетной записи необходимо обновить пароль до истечения его срока действия, чтобы избежать ошибок аутентификации при доступе к общим папкам Azure.
Рассмотрите возможность создания нового подразделения AD и отключения срока действия паролей на учетных записях компьютеров или учетных записях для входа в службы при необходимости. Дополнительные сведения см. в разделе часто задаваемых вопросов.
Запустите следующий скрипт в PowerShell 5.1 на устройстве, связанном с вашим локальным AD DS. Используйте локальные учетные данные AD DS, имеющие разрешения на создание учетной записи компьютера или учетной записи входа в службу в целевой AD (например, администратор домена). Чтобы следовать принципу наименьших привилегий , локальные учетные данные AD DS должны иметь следующие роли Azure.
- Читатель в группе ресурсов, в которой находится целевое хранилище.
- Участник учетной записи хранения, присоединенной к AD DS.
Если учетная запись, используемая для присоединения к учетной записи хранения в AD DS, является Owner или Contributor в подписке Azure, где находятся целевые ресурсы, учетная запись уже включена для выполнения соединения и не требует дополнительных назначений.
Замените значения плейсхолдеров собственными перед выполнением скрипта.
# 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 20 characters or less and has certain character restrictions.
# Certain NETBIOS restrictions might require a $SamAccountName of 15 characters or less.
# 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 without the trailing '$'>"
$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 here. 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:
# https://learn.microsoft.com/troubleshoot/azure/azure-storage/files/security/files-troubleshoot-smb-authentication#unable-to-mount-azure-file-shares-with-ad-credentials
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
Теперь можно продолжить подтверждение включения функции.
Вариант 2: выполнение действий по включению вручную
Если вы не можете использовать модуль PowerShell AzFilesHybrid, можно выполнить шаги вручную с помощью Active Directory PowerShell.
Внимание
Если вы уже успешно выполнили Join-AzStorageAccount скрипт, перейдите в раздел "Подтверждение включения функции ". Выполнять описанные ниже действия вручную не нужно.
Проверка среды
Сначала проверьте состояние среды.
- Active Directory PowerShell необходимо установить, и оболочка должна работать с правами администратора.
- Необходимо установить последнюю версию модуля Az.Storage .
- Проверьте, есть ли учетная запись компьютера (по умолчанию) или учетная запись входа в службу, созданная с помощью имени основного субъекта службы (SPN) или имени основного участника-пользователя (UPN), например cifs/[ваше-имя-учетной-записи-хранения-здесь].file.core.windows.net. Если учетная запись не существует, создайте ее, как описано в следующем разделе.
Внимание
В этом разделе в PowerShell 5.1 необходимо запустить командлеты Windows Server Active Directory PowerShell. PowerShell 7.x и Azure Cloud Shell не работают в этом сценарии.
Создание удостоверения, представляющего учетную запись хранения в AD, вручную
Сначала создайте новый ключ Kerberos для учетной записи хранения и получите ключ доступа с помощью следующих командлетов PowerShell. Используйте этот ключ только во время установки. Его нельзя использовать для операций управления или операций с "data plane" в отношении учетной записи хранения.
# 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.
Задайте для имени основного пользователя службы (SPN) cifs/your-storage-account-name-here.file.core.windows.net в GUI Active Directory или путем выполнения команды
Setspnв командной строке Windows с правами администратора. Замените пример текста именем учетной записи хранения и<ADAccountName>именем учетной записи AD.Setspn -S cifs/your-storage-account-name-here.file.core.windows.net <ADAccountName>Если у вас есть учетная запись пользователя, измените UPN, чтобы он соответствовал SPN для объекта 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. Если такие идентификаторы существуют в локальном каталоге, выполните одно из следующих действий:- Обновите унифицированное имя пользователя до допустимого формата (например,
user@domain.com). - Исключите пользователя из синхронизации с помощью правил фильтрации в Microsoft Entra Connect.
- Обновите унифицированное имя пользователя до допустимого формата (например,
Установите пароль учетной записи AD на значение ключа kerb1.
Set-ADAccountPassword -Identity servername$ -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "kerb1_key_value_here" -Force)
Если ваша организационная единица (ОЕ) применяет срок действия пароля, необходимо обновить пароль до истечения максимально допустимого срока действия, чтобы предотвратить сбои в проверке подлинности при доступе к общим папкам Azure. Дополнительные сведения см. в статье Об обновлении пароля удостоверения учетной записи хранения в AD.
Сохраните SID только что созданной учетной записи. Он понадобится для следующего шага. Созданное удостоверение AD, представляющее учетную запись хранения, не нужно синхронизировать с 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 without the trailing '$'>" `
-ActiveDirectoryAccountType "<your-domain-object-account-type, the value could be 'Computer' or 'User'>"
Включение шифрования AES-256 (рекомендуется)
Чтобы включить шифрование AES-256, выполните следующие действия.
Внимание
Чтобы включить шифрование AES-256, объект домена, представляющий учетную запись хранения, должен быть учетной записью компьютера (по умолчанию) или учетной записью входа в службу в домене Active Directory. Если объект домена не соответствует этим требованиям, удалите его и создайте новый объект в соответствии с ними. Кроме того, необходимо иметь доступ на запись к 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.
Проверка включения функции
Проверьте, включен ли AD DS в качестве источника удостоверений в учетной записи хранения с помощью следующего скрипта. Замените <resource-group-name> и <storage-account-name> собственными значениями.
# Get the target storage account
$storageaccount = Get-AzStorageAccount `
-ResourceGroupName "<resource-group-name>" `
-Name "<storage-account-name>"
# List the identity source for the selected storage 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 с помощью вошедшего пользователя AD, выполните Debug-AzStorageAccountAuth командлет. Этот командлет поддерживается в AzFilesHybrid версии 0.1.2+ и выше. Этот командлет работает для AD DS и Microsoft Entra, а также для аутентификации Kerberos. Он не работает для учетных записей хранения, использующих Microsoft Entra Domain Services в роли источника удостоверений. Дополнительные сведения см. в разделе Невозможно подключить общие папки Azure с учетными данными AD.
Debug-AzStorageAccountAuth -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName -Verbose
Отключение проверки подлинности AD DS в учетной записи хранения
Если вы хотите использовать другой источник удостоверений, отключите проверку подлинности AD DS в учетной записи хранения с помощью портала Azure, PowerShell или Azure CLI.
Если отключить этот источник удостоверений, файловые ресурсы в вашей учетной записи хранения не будут иметь доступ с учетом идентификационных данных, пока вы не включите и не настроите другой источник удостоверений.
Внимание
После отключения проверки подлинности AD DS в учетной записи хранилища рассмотрите удаление удостоверения AD DS (учетной записи компьютера или учетной записи службы), созданного для представления учетной записи хранилища в локальной AD. Если оставить учетную запись в AD DS, она остается осиротевшим объектом. Удаление не является автоматическим.
Чтобы отключить проверку подлинности AD DS в учетной записи хранения с помощью портала Azure, выполните следующие действия.
- Войдите на портал Azure и выберите учетную запись хранения, для которой требуется отключить проверку подлинности AD DS.
- В разделе Хранилище данных выберите Общие папки.
- Рядом с доступом на основе удостоверений выберите состояние конфигурации, которое должно быть настроено.
- В разделе Active Directory Domain Services (AD DS) выберите Configure.
- Установите флажок Disable Active Directory для этой учетной записи хранения.
- Нажмите Сохранить.