Configurazione dell’autenticazione di Windows per le istanze RDS Custom per SQL Server - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione dell’autenticazione di Windows per le istanze RDS Custom per SQL Server

È consigliabile creare un’unità organizzativa dedicata e credenziali del servizio aventi come ambito tale unità organizzativa per qualsiasi Account AWS proprietario di un’istanza database RDS Custom per SQL Server aggiunta al tuo dominio AD. Dedicando un’unità organizzativa e le credenziali di servizio, puoi evitare autorizzazioni in conflitto e seguire il principio del privilegio minimo.

Le policy di gruppo a livello di Active Directory potrebbero entrare in conflitto con le automazioni e autorizzazioni AWS. È consigliabile selezionare GPO applicabili solo all’unità organizzativa creata per RDS Custom per SQL Server.

  • Per creare un’unità organizzativa e un utente di dominio AD in un AD autogestito o on-premises, è possibile connettere il controller di dominio come amministratore di dominio.

  • Per creare utenti e gruppi in una directory Directory Service, è necessario essere connessi a un’istanza di gestione e avere effettuato l’accesso con un utente che dispone di privilegi per creare utenti e gruppi. Per ulteriori informazioni, consulta User and group management in AWS Managed Microsoft AD nella Guida di amministrazione di AWS Directory Service.

  • Per gestire Active Directory da un’istanza Amazon EC2 Windows Server, è necessario installare i servizi di dominio Active Directory e gli strumenti del servizio Active Directory Lightweight Directory nell’istanza EC2. Per ulteriori informazioni, consulta Installazione degli strumenti di amministrazione di Active Directory per AWS Managed Microsoft AD nella Guida di amministrazione di AWS Directory Service.

  • Per semplificare l’amministrazione, è consigliabile installare questi strumenti su un’istanza EC2 separata per l’amministrazione e non sull’istanza database RDS Custom per SQL Server.

Di seguito sono indicati i requisiti per un account del servizio di dominio AD.

  • Devi disporre di un account del servizio nel tuo dominio AD con autorizzazioni delegate per aggiungere computer al dominio. Un account del servizio di dominio è un account utente nel tuo dominio AD che dispone di autorizzazione delegata per eseguire determinate attività.

  • Delega le seguenti autorizzazioni all’account del servizio di dominio nell’unità organizzativa a cui stai aggiungendo l’istanza database RDS per SQL Server:

    • Capacità convalidata di scrivere sul nome host DNS

    • Capacità convalidata di scrivere sul nome principale del servizio

    • Creazione ed eliminazione degli oggetti computer

  • Per AD autogestito e on-premises, l’account del servizio di dominio deve essere membro del gruppo “AWS Delegated Domain Name System Administrators”.

  • Per AWS Managed Microsoft AD, l’account del servizio di dominio deve essere membro del gruppo “DnsAdmins”.

Questo è il set minimo di autorizzazioni necessarie per aggiungere oggetti computer ad AD autogestito e AWS Managed Microsoft AD. Per ulteriori informazioni, consulta Error: Access is denied when non-administrator users who have been delegated control try to join computers to a domain controller nella documentazione di Microsoft Windows Server.

Importante

Non spostare gli oggetti computer creati da RDS Custom per SQL Server nell’unità organizzativa (UO) dopo la creazione dell’istanza database. Lo spostamento degli oggetti associati potrebbe causare una configurazione errata dell’istanza database RDS Custom per SQL Server. Se devi spostare gli oggetti computer creati da Amazon RDS, utilizza l’operazione API RDS ModifyDBInstance per modificare i parametri del dominio in base alla posizione desiderata degli oggetti computer.

Fase 1: creazione di un’unità organizzativa (UO) in AD

Utilizza la procedura seguente per creare un’unità organizzativa in AD:

Creazione di un’unità organizzativa (UO) in AD
  1. Connettiti all’AD del dominio come amministratore del dominio.

  2. Apri Utenti e computer di Active Directory e seleziona il dominio in cui desideri creare l'unità organizzativa.

  3. Fai clic con il pulsante destro del mouse sul dominio e scegli Nuovo, quindi Unità organizzativa.

  4. Inserisci un nome per l’unità organizzativa.

    Abilita Proteggi il container dall’eliminazione accidentale.

  5. Scegli OK. La nuova unità organizzativa apparirà sotto il dominio.

Per AWS Managed Microsoft AD, il nome di questa UO è basato sul nome NetBIOS digitato quando la directory è stata creata. Questa UO è di proprietà di AWS e contiene tutti i gli oggetti di directory correlati ad AWS per cui ti è stato concesso il controllo completo. Per impostazione predefinita, a questa UO corrispondono due UO secondarie: Computer e Utenti. Le nuove unità organizzative create da RDS Custom sono secondarie rispetto all’unità organizzativa basata su NetBIOS.

Fase 2: creazione un utente di dominio AD

Le credenziali dell’utente del dominio vengono utilizzate per il segreto in Secrets Manager.

Creazione di un utente di dominio AD in AD
  1. Apri Utenti e computer di Active Directory e seleziona il dominio e l’unità organizzativa in cui desideri creare l’utente.

  2. Fai clic con il pulsante destro del mouse sull’oggetto Utenti, scegli Nuovo, quindi Utente.

  3. Immetti il nome, il cognome e il nome di accesso per l’utente. Fai clic su Next (Successivo).

  4. Immetti una password per l’utente. Non selezionare L’utente deve cambiare la password al prossimo accesso o L’account è disabilitato. Fai clic su Next (Successivo).

  5. Fai clic su OK. Il nuovo utente appare sotto il dominio.

Fase 3: delega del controllo all’utente AD in AWS Managed Microsoft AD o autogestito

Per delega il controllo all’utente del dominio AD nel dominio
  1. Apri lo snap-in MMC Utenti e computer di Active Directory e seleziona il dominio.

  2. Fai clic con il pulsante destro del mouse sull’unità organizzativa creata in precedenza e scegli Delega controllo.

  3. Nella pagina Delega guidata del controllo, fai clic su Avanti.

  4. Nella sezione Utenti o gruppi, fai clic su Aggiungi.

  5. Nella sezione Seleziona utenti, computer o gruppi, inserisci l’utente AD creato in precedenza e fai clic su Controlla nomi. Se il controllo degli utenti AD ha esito positivo, fai clic su OK.

  6. Nella sezione Utenti o gruppi, verifica che l’utente AD sia stato aggiunto e fai clic su Avanti.

  7. Nella pagina Operazioni da delegare, seleziona Crea un’operazione personalizzata da delegare, quindi fai clic su Avanti.

  8. Nella sezione Tipo di oggetto Active Directory:

    Seleziona Solo i seguenti oggetti contenuti nella cartella.

    Seleziona Oggetti computer.

    Seleziona Crea oggetti selezionati in questa cartella.

    Seleziona Elimina gli oggetti selezionati in questa cartella e fai clic su Avanti.

  9. Nella sezione Autorizzazioni:

    Mantieni selezionata l’opzione Generale.

    Seleziona Scrittura convalidata in nome host DNS.

    Seleziona Scrittura convalidata in nome principale servizio e fai clic su Avanti.

  10. In Completamento della delega guidata del controllo, conferma le impostazioni e fai clic su Fine.

Fase 4: creazione di un segreto

Crea il segreto nello stesso Account AWS e nella stessa Regione contenente l’istanza database RDS Custom per SQL Server che desideri includere nella tua Active Directory. Memorizza le credenziali dell’utente del dominio AD creato in Fase 2: creazione un utente di dominio AD.

Console
  • In AWS Secrets Manager, scegli Archivia un nuovo segreto.

  • Per Secret type (Tipo di segreto), scegli Other type of secret (Altro tipo di segreto).

  • In Coppie chiave/valore, aggiungi due chiavi:

    • Per la prima chiave, SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME e inserisci il nome del tuo utente AD (senza il prefisso del dominio) come valore.

    • Per la seconda chiave, inserisci SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD e inserisci la password per l’utente AD nel dominio.

  • Per Chiave di crittografia, inserisci la stessa AWS KMS chiave utilizzata per creare l’istanza RDS Custom per SQL Server.

  • Per Nome segreto, scegli il nome segreto che inizia con do-not-delete-rds-custom- per consentire al profilo dell’istanza di accedere a questo segreto. Se desideri scegliere un nome diverso per il segreto, aggiorna RDSCustomInstanceProfile per accedere a Nome segreto.

  • (Facoltativo) In Descrizione, inserisci una descrizione per il nome del segreto.

  • Aggiungi i tag Key="AWSRDSCustom",Value="custom-sqlserver"

  • Fai clic su Salva, quindi su Avanti.

  • In Configura impostazioni di rotazione, non modificare i valori predefiniti e scegli Avanti.

  • Controlla le impostazioni relative al segreto e fai clic su Archivio.

  • Scegli il nuovo segreto e copia il valore per ARN secreto. Questa informazione verrà utilizzata nella fase successiva per configurare Active Directory.

CLI

Esegui il comando seguente nella CLI per creare il segreto:

# Linux based aws secretsmanager create-secret \ --name do-not-delete-rds-custom-DomainUserCredentails \ --description "Active directory user credentials for managing RDS Custom" \ --secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" \ --kms-key-id <RDSCustomKMSKey> \ --tags Key="AWSRDSCustom",Value="custom-sqlserver" # Windows based aws secretsmanager create-secret ^ --name do-not-delete-rds-custom-DomainUserCredentails ^ --description "Active directory user credentials for managing RDS Custom" ^ --secret-string "{\"SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME\":\"tester\",\"SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD\":\"xxxxxxxx\"}" ^ --kms-key-id <RDSCustomKMSKey> ^ --tags Key="AWSRDSCustom",Value="custom-sqlserver"

Fase 5: creazione o modifica di un’istanza database RDS Custom per SQL Server

Crea o modifica un’istanza database RDS Custom per SQL Server per l’utilizzo con la directory. Puoi utilizzare la console, CLI o l'API RDS per associare un'istanza database a una directory. Questa operazione può essere eseguita in uno dei seguenti modi:

Nota

Se l’istanza RDS Custom per SQL Server è già aggiunta manualmente a un AD, controlla le impostazioni relative a Regole per le porte della configurazione di rete e Convalida di rete e completa i passaggi da 1 a 4. Aggiorna --domain-fqdn, --domain-ou e --domain-auth-secret-arn sul tuo AD, in modo che le credenziali e le configurazioni di aggiunta al dominio siano registrate in RDS Custom per monitorare, registrare CNAME e intraprendere azioni di ripristino.

Quando utilizzi AWS CLI, sono necessari i seguenti parametri per consentire all'istanza database di utilizzare la directory che hai creato:

  • Per il parametro --domain-fqdn, usa il nome di dominio completo del dominio Active Directory autogestito.

  • Per il parametro --domain-ou, utilizza l'unità organizzativa creata nel dominio AD gestito dal cliente.

  • Per il parametro --domain-auth-secret-arn, utilizza il valore ARN segreto che hai creato.

Importante

Se modifichi un’istanza database per aggiungerla o rimuoverla da un dominio AD autogestito o AWS Managed Microsoft AD, è necessario riavviare l’istanza database affinché la modifica abbia effetto. Puoi scegliere di applicare le modifiche subito o attendere fino alla prossima finestra di manutenzione. La selezione dell’opzione Applica immediatamente comporta un tempo di inattività per le istanze database Single-AZ. Un cluster di database Multi-AZ esegue un failover prima di completare il riavvio. Per ulteriori informazioni, consulta Modifica di un'istanza database Amazon RDS.

Il seguente comando CLI crea una nuova istanza database RDS Custom per SQL Server e la aggiunge a un dominio AWS Managed Microsoft AD o autogestito.

Per Linux, macOS o Unix:

aws rds create-db-instance \ --engine custom-sqlserver-se \ --engine-version 15.00.4312.2.v1 \ --db-instance-identifier my-custom-instance \ --db-instance-class db.m5.large \ --allocated-storage 100 --storage-type io1 --iops 1000 \ --master-username my-master-username \ --master-user-password my-master-password \ --kms-key-id my-RDSCustom-key-id \ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance \ --domain-fqdn "corp.example.com" \ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \ --db-subnet-group-name my-DB-subnet-grp \ --vpc-security-group-ids my-securitygroup-id \ --no-publicly-accessible \ --backup-retention-period 3 \ --port 8200 \ --region us-west-2 \ --no-multi-az

Per Windows:

aws rds create-db-instance ^ --engine custom-sqlserver-se ^ --engine-version 15.00.4312.2.v1 ^ --db-instance-identifier my-custom-instance ^ --db-instance-class db.m5.large ^ --allocated-storage 100 --storage-type io1 --iops 1000 ^ --master-usernamemy-master-username ^ --master-user-password my-master-password ^ --kms-key-id my-RDSCustom-key-id ^ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance ^ --domain-fqdn "corp.example.com" ^ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^ --db-subnet-group-name my-DB-subnet-grp ^ --vpc-security-group-ids my-securitygroup-id ^ --no-publicly-accessible ^ --backup-retention-period 3 ^ --port 8200 ^ --region us-west-2 ^ --no-multi-az
Importante

Se il NetBIOS per AWS Managed Microsoft AD è corpexample, viene visualizzato come UO. Qualsiasi nuova unità organizzativa creata in precedenza verrà visualizzata come unità organizzativa nidificata. Per AWS Managed Microsoft AD, imposta --domain-ou su "OU=RDSCustomOU,OU=corpexample,DC=corp,DC=example,DC=com".

Il seguente comando modifica un’istanza database RDS Custom per SQL Server esistente in modo che utilizzi un dominio Active Directory.

Per Linux, macOS o Unix:

aws rds modify-db-instance \ --db-instance-identifier my-custom-instance \ --domain-fqdn "corp.example.com" \ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" \ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" \

Per Windows:

aws rds modify-db-instance ^ --db-instance-identifier my-custom-instance ^ --domain-fqdn "corp.example.com" ^ --domain-ou "OU=RDSCustomOU,DC=corp,DC=example,DC=com" ^ --domain-auth-secret-arn "arn:aws:secretsmanager:region:account-number:secret:do-not-delete-rds-custom-my-AD-test-secret-123456" ^

Il seguente comando CLI rimuove un’istanza database RDS Custom per SQL Server da un dominio Active Directory.

Per Linux, macOS o Unix:

aws rds modify-db-instance \ --db-instance-identifier my-custom-instance \ --disable-domain

Per Windows:

aws rds modify-db-instance ^ --db-instance-identifier my-custom-instance ^ --disable-domain

Quando usi la console per creare o modificare l’istanza, fai clic su Abilita l’autenticazione di Windows di Microsoft SQL Server per visualizzare le seguenti opzioni.

Directory di autenticazione Microsoft SQL Server Windows

È tua responsabilità assicurarti che il nome FQDN del tuo dominio venga risolto negli indirizzi IP del controller di dominio. Se gli IP del controller di dominio non vengono risolti, le operazioni di aggiunta al dominio non riescono, ma la creazione dell’istanza RDS Custom per SQL Server ha esito positivo. Per informazioni sulla risoluzione dei problemi, consulta Risoluzione dei problemi di Active Directory.

Fase 6: creazione di account di accesso di SQL Server per l’autenticazione di Windows

Utilizza le credenziali dell'utente master Amazon RDS per eseguire la connessione all'istanza database SQL Server analogamente a quanto avviene con qualsiasi altra istanza database. Poiché l’istanza database viene aggiunta al dominio, puoi eseguire il provisioning degli account di accesso e degli utenti di SQL Server. Puoi eseguire questa operazione dall’utilità Utenti e gruppi AD nel tuo dominio AD. Le autorizzazioni per il database vengono gestite tramite le autorizzazioni standard di SQL Server concesse e revocate in base a questi account di accesso Windows.

Affinché un utente AD possa autenticarsi su SQL Server, deve essere disponibile un accesso Windows SQL Server per l’utente AD o un gruppo di Active Directory di cui l’utente è membro. Il controllo granulare degli accessi viene gestito assegnando o revocando le autorizzazioni per questi login di SQL Server. Un utente che non dispone di un accesso SQL Server o non appartiene a un gruppo con tale accesso, non può accedere all’istanza database SQL Server.

È necessaria l’autorizzazione ALTER ANY LOGIN per creare un accesso SQL Server per AD. Se non hai ancora creato un accesso con questa autorizzazione, esegui la connessione come utente principale dell’istanza database utilizzando l’autenticazione di SQL Server e crea gli accessi SQL Server per AD nel contesto dell’utente principale.

Esegui il comando DDL (Data Definition Language) seguente per creare un accesso SQL Server per un utente o un gruppo AD.

USE [master] GO CREATE LOGIN [mydomain\myuser] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english]; GO

Gli utenti (persone e applicazioni) del tuo dominio possono ora connettersi all’istanza RDS Custom per SQL Server da un computer client associato al dominio utilizzando l’autenticazione di Windows.

Fase 7: utilizzo dell’autenticazione Kerberos o NTLM

Autenticazione NTLM tramite endpoint RDS

Ogni istanza database Amazon RDS dispone di un endpoint e ciascun endpoint è associato a un nome DNS e a un numero di porta per l’istanza database. Per connetterti all'istanza database tramite un'applicazione client SQL, devi conoscere il nome DNS e il numero di porta dell'istanza database. Per eseguire l’autenticazione tramite l’autenticazione NTLM, devi connetterti all’endpoint RDS.

Durante una manutenzione pianificata del database o un’interruzione non pianificata del servizio, Amazon RDS esegue automaticamente il failover nel database secondario aggiornato, in modo che le operazioni possano riprendere rapidamente senza intervento manuale. Le istanze primarie e secondarie utilizzano lo stesso endpoint, il cui indirizzo di rete fisico passa alla replica secondaria come parte del processo di failover. Non è necessario riconfigurare l'applicazione quando si verifica un failover.

Autenticazione Kerberos

L’autenticazione basata su Kerberos per RDS Custom per SQL Server richiede la connessione a uno specifico nome principale del servizio (SPN). Tuttavia, dopo un evento di failover, l’applicazione potrebbe non essere a conoscenza del nuovo SPN. Per risolvere questo problema, RDS Custom per SQL Server offre un endpoint basato su Kerberos.

L’endpoint basato su Kerberos segue un formato specifico. Se l’endpoint RDS è rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com, il corrispondente endpoint basato su Kerberos sarebbe rds-instance-name.account-region-hash.aws-region.awsrds.fully qualified domain name (FQDN).

Ad esempio, se l’endpoint RDS è ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com e il nome di dominio è corp-ad.company.com, l’endpoint basato su Kerberos sarebbe ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com.

Questo endpoint basato su Kerberos può essere utilizzato per l’autenticazione con l’istanza SQL Server tramite Kerberos, anche dopo un evento di failover, poiché l’endpoint viene aggiornato automaticamente in modo che punti al nuovo SPN dell’istanza SQL Server primaria.

Trovare il CNAME

Per trovare il tuo CNAME, connettiti al controller di dominio e apri DNS Manager. Vai a Forward Lookup Zones e al tuo FQDN.

Navigare in awsrds, aws-region e hash specifico dell’account e della Regione.

Se stai connettendo l’istanza RDS Custom EC2 e stai tentando di connetterti al database localmente utilizzando CNAME, la connessione utilizzerà l’autenticazione NTLM anziché Kerberos.

Se dopo aver connesso CNAME dal client remoto viene restituita una connessione NTLM, controlla se le porte richieste sono incluse nella lista consentita.

Per verificare che la connessione utilizzi Kerberos, esegui la seguente query:

SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SSPID;