Włączanie uwierzytelniania usług AD DS dla udziałów plików platformy Azure

W tym artykule opisano proces włączania uwierzytelniania usług domena usługi Active Directory (AD DS) na koncie magazynu w celu używania poświadczeń lokalna usługa Active Directory (AD) na potrzeby uwierzytelniania w udziałach plików platformy Azure.

Ważne

Przed włączeniem uwierzytelniania usług AD DS upewnij się, że rozumiesz obsługiwane scenariusze i wymagania w artykule przeglądu i spełnij niezbędne wymagania wstępne. Jeśli środowisko usługi Active Directory obejmuje wiele lasów, zobacz Używanie usługi Azure Files z wieloma lasami usługi Active Directory.

Aby włączyć uwierzytelnianie usług AD DS za pośrednictwem protokołu SMB dla udziałów plików platformy Azure, musisz zarejestrować konto usługi Azure Storage przy użyciu lokalnych usług AD DS, a następnie ustawić wymagane właściwości domeny na koncie magazynu. Aby zarejestrować konto magazynu w usługach AD DS, należy utworzyć konto komputera (lub konto logowania usługi) reprezentujące je w usługach AD DS. Ten proces można traktować tak, jakby wyglądał jak utworzenie konta reprezentującego lokalny serwer plików systemu Windows w usługach AD DS. Gdy funkcja jest włączona na koncie magazynu, ma zastosowanie do wszystkich nowych i istniejących udziałów plików na koncie.

Dotyczy

Typ udziału plików SMB NFS
Udziały plików w warstwie Standardowa (GPv2), LRS/ZRS Yes No
Udziały plików w warstwie Standardowa (GPv2), GRS/GZRS Yes No
Udziały plików w warstwie Premium (FileStorage), LRS/ZRS Yes No

Moduł AzFilesHybrid programu PowerShell zawiera polecenia cmdlet do wdrażania i konfigurowania usługi Azure Files. Obejmuje on polecenia cmdlet służące do dołączania kont magazynu do lokalna usługa Active Directory i konfigurowania serwerów DNS. Polecenia cmdlet umożliwiają wprowadzenie niezbędnych modyfikacji i włączenie tej funkcji. Ponieważ niektóre części poleceń cmdlet współdziałają z lokalnymi usługami AD DS, wyjaśniamy, co robią polecenia cmdlet, aby określić, czy zmiany są zgodne z zasadami zgodności i zabezpieczeń, i upewnij się, że masz odpowiednie uprawnienia do wykonywania poleceń cmdlet. Mimo że zalecamy użycie modułu AzFilesHybrid, jeśli nie możesz tego zrobić, udostępniamy kroki ręczne.

Ważne

Szyfrowanie Kerberos AES-256 jest teraz jedyną metodą szyfrowania obsługiwaną przez moduł AzFilesHybrid. Jeśli wolisz używać szyfrowania RC4, zobacz Opcja druga: Ręczne wykonywanie akcji włączania. Jeśli wcześniej włączono tę funkcję przy użyciu starej wersji AzFilesHybrid (poniżej wersji 0.2.2), która używała wersji RC4 jako domyślnej metody szyfrowania i chcesz zaktualizować usługę AES-256, zobacz Rozwiązywanie problemów z uwierzytelnianiem SMB usługi Azure Files.

Wymagania wstępne

Pobierz moduł AzFilesHybrid

Pobierz i rozpakuj najnowszą wersję modułu AzFilesHybrid.

Uruchamianie polecenia Join-AzStorageAccount

Polecenie Join-AzStorageAccount cmdlet wykonuje odpowiednik przyłączania domeny offline w imieniu określonego konta magazynu. Poniższy skrypt używa tego polecenia cmdlet do utworzenia konta komputera w domenie usługi AD. Jeśli z jakiegokolwiek powodu nie możesz użyć konta komputera, możesz zmienić skrypt, aby utworzyć konto logowania do usługi. Korzystanie z szyfrowania AES-256 przy użyciu kont logowania usługi jest obsługiwane począwszy od polecenia AzFilesHybrid w wersji 0.2.5.

Konto usług AD DS utworzone przez polecenie cmdlet reprezentuje konto magazynu. Jeśli konto usług AD DS jest tworzone w ramach jednostki organizacyjnej ,która wymusza wygaśnięcie hasła, musisz zaktualizować hasło przed maksymalnym wiekiem hasła. Nie można zaktualizować hasła konta przed tą datą powoduje niepowodzenie uwierzytelniania podczas uzyskiwania dostępu do udziałów plików platformy Azure. Aby dowiedzieć się, jak zaktualizować hasło, zobacz Aktualizowanie hasła konta usług AD DS.

Ważne

Polecenie Join-AzStorageAccount cmdlet utworzy konto usługi AD reprezentujące konto magazynu (udział plików) w usłudze AD. Możesz zarejestrować się jako konto komputera lub konto logowania do usługi, zobacz Często zadawane pytania , aby uzyskać szczegółowe informacje. Hasła kont logowania usługi mogą wygasnąć w usłudze AD, jeśli mają domyślny wiek wygaśnięcia hasła ustawiony w domenie usługi AD lub jednostki organizacyjnej. Ponieważ zmiany hasła konta komputera są sterowane przez komputer kliencki, a nie przez usługę AD, nie wygasają w usłudze AD, chociaż komputery klienckie domyślnie zmieniają swoje hasła co 30 dni. W przypadku obu typów kont zalecamy sprawdzenie skonfigurowanego wieku wygaśnięcia hasła i zaplanowanie zaktualizowania hasła tożsamości konta magazynu konta usługi AD przed maksymalnym wiekiem hasła. Możesz rozważyć utworzenie nowej jednostki organizacyjnej usługi AD w usłudze AD i wyłączenie zasad wygasania haseł na kontach komputerów lub kontach logowania usługi odpowiednio.

Należy uruchomić poniższy skrypt w programie PowerShell 5.1 na urządzeniu przyłączonym do lokalnej usługi AD DS przy użyciu lokalnych poświadczeń usług AD DS, które mają uprawnienia do tworzenia konta komputera lub konta logowania usługi w docelowej usłudze AD (na przykład administratora domeny). Aby postępować zgodnie z zasadą najniższych uprawnień, lokalne poświadczenie usług AD DS musi mieć następujące role platformy Azure:

  • Czytelnik w grupie zasobów, w której znajduje się docelowe konto magazynu.
  • Współautor konta magazynu, który ma zostać przyłączony do usług AD DS.

Jeśli konto używane do dołączenia do konta magazynu w usługach AD DS jest właścicielem lub współautorem w subskrypcji platformy Azure, w której znajdują się zasoby docelowe, to to konto jest już włączone do wykonania sprzężenia i nie są wymagane żadne dalsze przypisania.

Poświadczenia usług AD DS muszą również mieć uprawnienia do tworzenia konta komputera lub konta logowania usługi w docelowej usłudze AD. Przed wykonaniem skryptu zastąp wartości symboli zastępczych własnymi wartościami.

# 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

Opcja druga: Ręczne wykonywanie akcji włączania

Większość klientów powinna wybrać opcję jedną powyżej i użyć modułu AzFilesHybrid programu PowerShell, aby włączyć uwierzytelnianie usług AD DS za pomocą usługi Azure Files. Jeśli jednak wolisz wykonać kroki ręcznie przy użyciu programu PowerShell usługi Active Directory, kroki zostały opisane tutaj.

Ważne

Jeśli skrypt został już wykonany Join-AzStorageAccount powyżej pomyślnie, przejdź bezpośrednio do sekcji Potwierdź, że funkcja jest włączona . Nie musisz wykonywać następujących kroków ręcznych.

Sprawdzanie środowiska

Najpierw sprawdź stan środowiska.

  • Sprawdź, czy program PowerShell usługi Active Directory jest zainstalowany i czy powłoka jest wykonywana z uprawnieniami administratora.
  • Upewnij się, że moduł Az.Storage jest zainstalowany i zainstaluj go, jeśli nie jest. Będziesz potrzebować co najmniej wersji 2.0.
  • Po wykonaniu tych testów sprawdź usługi AD DS, aby sprawdzić, czy istnieje konto komputera (domyślne) lub konto logowania usługi, które zostało już utworzone za pomocą nazwy SPN/NAZWY UPN, na przykład "cifs/your-storage-account-name-here.file.core.windows.net". Jeśli konto nie istnieje, utwórz je zgodnie z opisem w poniższej sekcji.

Ważne

Polecenia cmdlet programu PowerShell systemu Windows Server Active Directory w tej sekcji muszą być uruchamiane w programie Windows PowerShell 5.1. Program PowerShell 7.x i usługa Azure Cloud Shell nie będą działać w tym scenariuszu.

Ręczne tworzenie tożsamości reprezentującej konto magazynu w usłudze AD

Aby ręcznie utworzyć to konto, najpierw utwórz nowy klucz Kerberos dla konta magazynu i pobierz klucz dostępu przy użyciu poniższych poleceń cmdlet programu PowerShell. Ten klucz jest używany tylko podczas instalacji. Nie można jej używać w przypadku żadnych operacji kontroli ani płaszczyzny danych na koncie magazynu.

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

Polecenia cmdlet powinny zwracać wartość klucza. Po utworzeniu klucza kerb1 utwórz konto komputera lub konto usługi w usłudze AD w ramach jednostki organizacyjnej i użyj klucza jako hasła dla tożsamości usługi AD.

  1. Ustaw nazwę SPN na cifs/your-storage-account-name-here.file.core.windows.net w graficznym interfejsie użytkownika usługi AD lub uruchamiając Setspn polecenie z wiersza polecenia systemu Windows jako administrator (pamiętaj, aby zastąpić przykładowy tekst nazwą konta magazynu i <ADAccountName> nazwą konta usługi AD).

    Setspn -S cifs/your-storage-account-name-here.file.core.windows.net <ADAccountName>
    
  2. Jeśli masz konto użytkownika, zmodyfikuj nazwę UPN tak, aby pasowała do nazwy SPN obiektu usługi AD (musisz mieć zainstalowane polecenia cmdlet programu AD PowerShell i wykonać polecenia cmdlet w programie PowerShell 5.1 z podwyższonym poziomem uprawnień).

    Set-ADUser -Identity $UserSamAccountName -UserPrincipalName cifs/<StorageAccountName>.file.core.windows.net@<DNSRoot>
    
  3. Ustaw hasło konta usługi AD na wartość klucza kerb1.

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

Jeśli jednostka organizacyjna wymusza wygaśnięcie hasła, musisz zaktualizować hasło przed maksymalnym wiekiem hasła, aby zapobiec niepowodzeniu uwierzytelniania podczas uzyskiwania dostępu do udziałów plików platformy Azure. Aby uzyskać szczegółowe informacje, zobacz Aktualizowanie hasła tożsamości konta magazynu w usłudze AD .

Zachowaj identyfikator SID nowo utworzonej tożsamości. Będzie on potrzebny do następnego kroku. Utworzona tożsamość reprezentująca konto magazynu nie musi być synchronizowana z identyfikatorem Entra firmy Microsoft.

Włączanie funkcji na koncie magazynu

Zmodyfikuj następujące polecenie, aby uwzględnić szczegóły konfiguracji właściwości domeny w poniższym poleceniu, a następnie uruchom je, aby włączyć tę funkcję. Identyfikator SID konta magazynu wymagany w poniższym poleceniu to identyfikator SID tożsamości utworzonej w usługach AD DS w poprzedniej sekcji. Upewnij się, że podasz właściwość ActiveDirectorySamAccountName bez końcowego znaku "$".

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

Aby włączyć szyfrowanie AES-256, wykonaj kroki opisane w tej sekcji. Jeśli planujesz używać szyfrowania RC4, pomiń tę sekcję.

Ważne

Aby włączyć szyfrowanie AES-256, obiekt domeny reprezentujący konto magazynu musi być kontem komputera (ustawienie domyślne) lub kontem logowania usługi w lokalnej domenie usługi AD. Jeśli obiekt domeny nie spełnia tego wymagania, usuń go i utwórz nowy obiekt domeny, który to robi. Ponadto musisz mieć dostęp do zapisu do msDS-SupportedEncryptionTypes atrybutu obiektu.

Polecenie cmdlet, które zostanie uruchomione w celu skonfigurowania obsługi AES-256, zależy od tego, czy obiekt domeny reprezentujący konto magazynu jest kontem komputera lub kontem logowania usługi (konto użytkownika). Tak czy inaczej, musisz mieć zainstalowane polecenia cmdlet programu AD PowerShell i wykonać polecenie cmdlet w programie PowerShell 5.1 z podwyższonym poziomem uprawnień.

Aby włączyć szyfrowanie AES-256 na koncie komputera, uruchom następujące polecenie. Zastąp <domain-object-identity> wartości i <domain-name> wartościami.

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

Aby włączyć szyfrowanie AES-256 na koncie logowania do usługi, uruchom następujące polecenie. Zastąp <domain-object-identity> wartości i <domain-name> wartościami.

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

Po uruchomieniu powyższego polecenia cmdlet zastąp <domain-object-identity> ciąg w poniższym skrypcie wartością, a następnie uruchom skrypt, aby odświeżyć hasło obiektu domeny:

$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

Ważne

Jeśli wcześniej używano szyfrowania RC4 i zaktualizować konto magazynu do używania protokołu AES-256, należy uruchomić klist purge go na kliencie, a następnie ponownie zainstalować udział plików, aby uzyskać nowe bilety Protokołu Kerberos za pomocą protokołu AES-256.

Debugowanie

W razie potrzeby możesz uruchomić Debug-AzStorageAccountAuth polecenie cmdlet, aby przeprowadzić zestaw podstawowych kontroli konfiguracji usługi AD przy użyciu zalogowanego użytkownika usługi AD. To polecenie cmdlet jest obsługiwane w wersji AzFilesHybrid w wersji 0.1.2 lub nowszej. To polecenie cmdlet ma zastosowanie tylko do uwierzytelniania usług AD DS. Nie działa w przypadku usług Microsoft Entra Domain Services ani kont magazynu z włączoną obsługą protokołu Kerberos firmy Microsoft. Aby uzyskać więcej informacji na temat testów wykonywanych w tym poleceniu cmdlet, zobacz Nie można zainstalować udziałów plików platformy Azure przy użyciu poświadczeń usługi AD.

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

Upewnij się, że funkcja jest włączona

Możesz sprawdzić, czy usługa Active Directory jest włączona na koncie magazynu przy użyciu następującego skryptu:

# 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

W przypadku powodzenia dane wyjściowe powinny wyglądać następująco:

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

Następne kroki

Usługa AD DS została pomyślnie włączona na koncie magazynu. Aby korzystać z tej funkcji, musisz przypisać uprawnienia na poziomie udziału.