Share via


Habilitación de la autenticación de Active Directory Domain Services para recursos compartidos de archivos de Azure

En este artículo se describe el proceso para habilitar la autenticación de Active Directory Domain Services (AD DS) en la cuenta de almacenamiento con el fin de usar credenciales de Active Directory local (AD) para autenticarse en recursos compartidos de archivos de Azure.

Importante

Antes de habilitar la autenticación de AD DS, asegúrese de comprender los escenarios admitidos y los requisitos del artículo de información general y de completar los requisitos previos necesarios. Si el entorno de Active Directory abarca varios bosques, consulte Uso de Azure Files con varios bosques de Active Directory.

Para habilitar la autenticación de AD DS en SMB para los recursos compartidos de archivos de Azure, debe registrar la cuenta de almacenamiento de Azure en AD DS local y, después, establecer las propiedades de dominio necesarias en la cuenta de almacenamiento. Para registrar la cuenta de almacenamiento con AD DS, cree una cuenta de equipo (o una cuenta de inicio de sesión en el servicio) que la represente en AD DS. Este proceso se puede considerar como si se tratara de la creación de una cuenta que representa un servidor local de archivos de Windows en AD DS. Cuando la característica está habilitada en la cuenta de almacenamiento, se aplica a todos los recursos compartidos de archivos nuevos y existentes de la cuenta.

Se aplica a

Tipo de recurso compartido de archivos SMB NFS
Recursos compartidos de archivos Estándar (GPv2), LRS/ZRS Sí No
Recursos compartidos de archivos Estándar (GPv2), GRS/GZRS Sí No
Recursos compartidos de archivos Premium (FileStorage), LRS/ZRS Sí No

El módulo AzFilesHybrid de PowerShell proporciona cmdlets para implementar y configurar Azure Files. Incluye cmdlets para unir cuentas de almacenamiento de dominio a Active Directory local y configurar los servidores DNS. Los cmdlets realizan las modificaciones necesarias y habilitan la característica automáticamente. Puesto que algunas partes del cmdlet interactúan con la instancia local de AD DS, se explica lo que hacen los cmdlets, para que pueda determinar si los cambios se alinean con las directivas de cumplimiento y seguridad, y asegurarse de que tiene los permisos adecuados para ejecutar los cmdlets. Aunque se recomienda usar el módulo AzFilesHybrid, si no puede hacerlo, se proporcionan pasos manuales.

Importante

El cifrado Kerberos AES-256 es ahora el único método de cifrado compatible con el módulo AzFilesHybrid. Si prefiere usar el cifrado RC4, consulte Opción dos: realizar manualmente las acciones de habilitación. Si ha habilitado previamente la característica con una versión anterior de AzFilesHybrid (inferior a la 0.2.2) que usaba RC4 como método de cifrado predeterminado y quiere actualizarla para que admita AES-256, consulte Solución de problemas de autenticación SMB de Azure Files.

Requisitos previos

Descarga del módulo AzFilesHybrid

Descargue y descomprima la última versión del módulo AzFilesHybrid.

Ejecución de Join-AzStorageAccount

El cmdlet Join-AzStorageAccount realiza la acción equivalente a la unión a un dominio sin conexión en nombre de la cuenta de almacenamiento especificada. El script siguiente usa este cmdlet para crear una cuenta de equipo en el dominio de AD. Si, por cualquier motivo, no puede usar una cuenta de equipo, puede modificar el script para crear una cuenta de inicio de sesión de servicio en su lugar. El uso del cifrado AES-256 con cuentas de inicio de sesión de servicio se admite a partir de la versión 0.2.5 de AzFilesHybrid.

La cuenta de AD DS que crea el cmdlet representa la cuenta de almacenamiento. Si la cuenta de AD DS se crea en una unidad organizativa (OU) que aplica la expiración de contraseñas, debe actualizar la contraseña antes de su vigencia máxima. Si no actualiza la contraseña de la cuenta antes de esa vigencia, se producirán errores de autenticación al acceder a los recursos compartidos de archivos de Azure. Para saber cómo actualizar la contraseña, consulte Actualización de la contraseña de la cuenta de AD DS.

Importante

El cmdlet Join-AzStorageAccount creará una cuenta de AD para representar la cuenta de almacenamiento (recurso compartido de archivos) en AD. Puede optar por registrarla como una cuenta de equipo o una cuenta de inicio de sesión de servicio; consulte Preguntas más frecuentes para obtener más información. Las contraseñas de la cuenta de inicio de sesión de servicio pueden expirar en AD si tienen establecida una antigüedad de expiración de contraseña predeterminada en el dominio o la unidad organizativa de AD. Dado que los cambios de contraseña de la cuenta de equipo los controla el equipo cliente y no AD, no expiran en AD, aunque los equipos cliente cambian sus contraseñas de manera predeterminada cada 30 días. Para ambos tipos de cuenta, se recomienda comprobar cuál es el tiempo de expiración de la contraseña configurado y planificar la actualización de la contraseña de la identidad de la cuenta de almacenamiento de la cuenta de AD antes de la vigencia máxima de la contraseña. Puede considerar la posibilidad de crear una unidad organizativa de AD en AD y deshabilitar la directiva de expiración de contraseñas en las cuentas de equipo o las cuentas de inicio de sesión de servicio, según corresponda.

Debe ejecutar el siguiente script en PowerShell 5.1 y en un dispositivo que esté unido al dominio de su instancia de AD DS local, mediante las credenciales de AD DS local que tengan permisos para crear una cuenta de equipo o una cuenta de inicio de sesión del servicio en la instancia de AD de destino (como el dominio administración). Para seguir el principio de privilegios mínimos, la credencial de AD DS local debe tener los siguientes roles de Azure:

  • Lector en el grupo de recursos donde se encuentra la cuenta de almacenamiento de destino.
  • Colaborador en la cuenta de almacenamiento que se va a unir a AD DS.

Si la cuenta usada para unirse a la cuenta de almacenamiento en AD DS es un Propietario o Colaborador en la suscripción de Azure donde se encuentran los recursos de destino, entonces esa cuenta ya está habilitada para realizar la unión y no se requieren más asignaciones.

La credencial de AD DS también debe tener permisos para crear una cuenta de equipo o una cuenta de inicio de sesión de servicio en la instancia de AD de destino. Reemplace los valores de marcador de posición por los suyos propios antes de ejecutar el script.

# 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

Opción 2: Realización manual de las acciones de habilitación

La mayoría de los clientes deben elegir la Opción uno que aparece arriba y usar el módulo de PowerShell AzFilesHybrid para habilitar la autenticación de AD DS con Azure Files. Sin embargo, si prefiere ejecutar los pasos manualmente mediante PowerShell de Active Directory, use los que se describen a continuación.

Importante

Si ya ha ejecutado correctamente el script Join-AzStorageAccount anterior, vaya directamente a la sección Confirmación de que la característica está habilitada. No tendrá que realizar los siguientes pasos manuales.

Comprobación del entorno

En primer lugar, compruebe el estado del entorno.

  • Compruebe si Active Directory PowerShell está instalado y si el shell se ejecuta con privilegios de administrador.
  • Asegúrese de que está instalado el módulo Az.Storage y, si no lo está, instálelo. Necesitará al menos la versión 2.0.
  • Después de completar esas comprobaciones, compruebe la instancia de AD DS para ver si hay una cuenta de equipo (predeterminada) o una cuenta de inicio de sesión en el servicio que ya se haya creado con SPN/UPN, como "cifs/nombre_de_la_cuenta_de_almacenamiento.file.core.windows.net". Si la cuenta no existe, cree una como se describe en la sección siguiente.

Importante

Los cmdlets de PowerShell de Windows Server Active Directory de esta sección deben ejecutarse en Windows PowerShell 5.1. PowerShell 7.x y Azure Cloud Shell no funcionarán en este escenario.

Creación de una identidad que represente a la cuenta de almacenamiento de AD manualmente

Para crear esta cuenta manualmente, primero cree una nueva clave Kerberos para la cuenta de almacenamiento y obtenga la clave de acceso mediante los cmdlets de PowerShell siguientes. Esta clave solo se usa durante la instalación. No se puede usar para las operaciones de control o de plano de datos en la cuenta de almacenamiento.

# 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"}

Los cmdlets deben devolver el valor de clave. Una vez que tenga la clave kerb1, cree una cuenta de equipo o una cuenta de servicio en AD en la unidad organizativa y use la clave como contraseña para la identidad de AD.

  1. Establezca el SPN en cifs/your-storage-account-name-here.file.core.windows.net en la GUI de AD o ejecutando el comando Setspn desde la línea de comandos de Windows como administrador (recuerde reemplazar el texto de ejemplo por el nombre de la cuenta de almacenamiento y <ADAccountName> por el nombre de la cuenta de AD).

    Setspn -S cifs/your-storage-account-name-here.file.core.windows.net <ADAccountName>
    
  2. Si tiene una cuenta de usuario, modifique el UPN para que coincida con el SPN del objeto de AD (debe tener instalados los cmdlets de PowerShell de AD y ejecutar los cmdlets en PowerShell 5.1 con privilegios elevados).

    Set-ADUser -Identity $UserSamAccountName -UserPrincipalName cifs/<StorageAccountName>.file.core.windows.net@<DNSRoot>
    
  3. Establezca la contraseña de la cuenta de AD en el valor de la clave kerb1.

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

Si la unidad organizativa impone la expiración de la contraseña, debe actualizar la contraseña antes de su vigencia máxima para evitar errores de autenticación al acceder a recursos compartidos de archivos de Azure. Vea Actualización de la contraseña de la identidad de la cuenta de almacenamiento en AD para obtener más información.

Mantenga el SID de la identidad recién creada; lo necesitará en el siguiente paso. No es preciso sincronizar la identidad que ha creado y que representa la cuenta de almacenamiento con Microsoft Entra ID.

Habilitación de la característica en la cuenta de almacenamiento

Modifique el comando siguiente para incluir detalles de configuración para las propiedades de dominio en el comando siguiente y, a continuación, ejecútelo para habilitar la característica. El SID de la cuenta de almacenamiento necesario en el siguiente comando es el de la identidad que creó en su AD DS en la sección anterior. Asegúrese de proporcionar la propiedad ActiveDirectorySamAccountName sin el signo "$" final.

# 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'>"

Para habilitar el cifrado AES-256, siga los pasos de esta sección. Si piensa usar el cifrado RC4, puede saltarse esta sección.

Importante

Para habilitar el cifrado AES-256, el objeto de dominio que representa la cuenta de almacenamiento debe ser una cuenta de equipo (predeterminada) o una cuenta de inicio de sesión de servicio en el dominio de AD local. Si el objeto de dominio no cumple este requisito, elimínelo y cree un nuevo objeto de dominio que lo haga. Además, debe tener acceso de escritura al atributo msDS-SupportedEncryptionTypes del objeto.

El cmdlet que ejecutará para configurar la compatibilidad con AES-256 depende de si el objeto de dominio que representa la cuenta de almacenamiento es una cuenta de equipo o una cuenta de inicio de sesión de servicio (cuenta de usuario). En cualquier caso, debe tener instalados los cmdlets de PowerShell de AD y ejecutar el cmdlet en PowerShell 5.1 con privilegios elevados.

Para habilitar el cifrado AES-256 en una cuenta de equipo, ejecute el siguiente comando. Reemplace <domain-object-identity> y <domain-name> con sus valores.

Set-ADComputer -Identity <domain-object-identity> -Server <domain-name> -KerberosEncryptionType "AES256"

Para habilitar el cifrado AES-256 en una cuenta de inicio de sesión de servicio, ejecute el siguiente comando. Reemplace <domain-object-identity> y <domain-name> con sus valores.

Set-ADUser -Identity <domain-object-identity> -Server <domain-name> -KerberosEncryptionType "AES256"

Después de ejecutar el comando anterior, reemplace <domain-object-identity> en el siguiente script por su valor y ejecute el script para actualizar la contraseña del objeto de dominio:

$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

Importante

Si anteriormente usaba el cifrado RC4 y actualizaba la cuenta de almacenamiento para usar AES-256, debe ejecutar klist purge en el cliente y, a continuación, volver a montar el recurso compartido de archivos para obtener nuevos vales Kerberos con AES-256.

Depuración

Si hace falta, puede ejecutar el cmdlet Debug-AzStorageAccountAuth para realizar un conjunto de comprobaciones básicas en la configuración de AD con el usuario de AD con el que ha iniciado sesión. Este cmdlet se admite en AzFilesHybrid v0.1.2+ y versiones posteriores. Este cmdlet solo es aplicable a la autenticación de AD DS. No funciona con cuentas de almacenamiento habilitadas para los servicios de dominio Microsoft Entra o Microsoft Entra Kerberos. Para más detalles sobre las comprobaciones realizadas en este cmdlet, consulte No se puede montar recursos compartidos de archivos Azure con las credenciales de AD.

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

Confirmación de que la característica está habilitada

Puede comprobar si Active Directory está habilitado en la cuenta de almacenamiento con el siguiente 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

En caso afirmativo, la salida debería ser similar a esta:

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

Paso siguiente

Ahora, ya ha habilitado correctamente AD DS en la cuenta de almacenamiento. Para usar la característica, debe asignar permisos de nivel de recurso compartido.