Delen via


Verifiëren met Microsoft Entra-id in sqlcmd

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric

sqlcmd- ondersteunt diverse Microsoft Entra-verificatiemodellen, afhankelijk van de versie die u hebt geïnstalleerd.

Notitie

Hoewel Microsoft Entra ID de nieuwe naam is voor Azure Active Directory (Azure AD), blijft Azure AD aanwezig in sommige hardcoded elementen, zoals gebruikersinterfacevelden, verbindingsproviders, foutcodes en cmdlets om te voorkomen dat bestaande omgevingen worden onderbroken. In dit artikel zijn de twee namen uitwisselbaar.

Zie sqlcmd-hulpprogrammavoor meer informatie over het verschil tussen sqlcmd versies.

sqlcmd (Go) ondersteunt meer Microsoft Entra-verificatiemodellen op basis van het azidentity-pakket. De implementatie is afhankelijk van een Microsoft Entra-connector in het go-sqlcmd-stuurprogramma.

Opdrachtregelargumenten

Als u Microsoft Entra-verificatie wilt gebruiken, kunt u een van de twee opdrachtregelopties gebruiken.

-G is (meestal) compatibel met het gebruik ervan in sqlcmd (ODBC). Als er een gebruikersnaam en wachtwoord worden opgegeven, wordt deze geverifieerd met behulp van Microsoft Entra-wachtwoordverificatie. Als er een gebruikersnaam is opgegeven, wordt interactieve Verificatie van Microsoft Entra gebruikt, die mogelijk een webbrowser weergeeft. Als er geen gebruikersnaam of wachtwoord wordt opgegeven, wordt er een DefaultAzureCredentialgebruikt, die probeert te verifiëren via verschillende mechanismen.

--authentication-method= kan worden gebruikt om een van de volgende verificatietypen op te geven.

ActiveDirectoryDefault

  • Zie voor een overzicht van de soorten authenticatie die in deze modus worden gebruikt, Azure Standaardreferenties.
  • Kies deze methode als uw databaseautomatiseringsscripts zijn bedoeld om te worden uitgevoerd in zowel lokale ontwikkelomgevingen als in een productie-implementatie in Azure. In uw ontwikkelomgeving kunt u een clientgeheim of een Azure CLI-aanmelding gebruiken. Zonder het script te wijzigen vanuit de ontwikkelomgeving, kunt u een beheerde identiteit of clientgeheim gebruiken voor uw productie-implementatie.
  • Het instellen van omgevingsvariabelen AZURE_TENANT_ID en AZURE_CLIENT_ID zijn nodig voor DefaultAzureCredential om de omgevingsconfiguratie te controleren en te zoeken naar een van de volgende aanvullende omgevingsvariabelen om te verifiëren:
    • Als u omgevingsvariabele instelt AZURE_CLIENT_SECRET configureert u de DefaultAzureCredential om ClientSecretCredentialte kiezen.
    • Als u omgevingsvariabele instelt AZURE_CLIENT_CERTIFICATE_PATH configureert u de DefaultAzureCredential om ClientCertificateCredential te kiezen als AZURE_CLIENT_SECRET niet is ingesteld.
  • Als u omgevingsvariabele instelt AZURE_USERNAME configureert u de DefaultAzureCredential om UsernamePasswordCredential te kiezen als AZURE_CLIENT_SECRET en AZURE_CLIENT_CERTIFICATE_PATH niet zijn ingesteld.

ActiveDirectory-geïntegreerd

Deze methode is momenteel niet geïmplementeerd en valt terug op ActiveDirectoryDefault.

ActiveDirectoryWachtwoord

  • Deze methode verifieert met behulp van een gebruikersnaam en wachtwoord. Het werkt niet als MFA is vereist.

  • U geeft de gebruikersnaam en het wachtwoord op met behulp van de gebruikelijke opdrachtregelswitches of SQLCMD omgevingsvariabelen.

  • Stel AZURE_TENANT_ID omgevingsvariabele in op de tenant-id van de server als deze niet de standaardtenant van de gebruiker gebruikt.

ActiveDirectoryInteractive

Met deze methode wordt een webbrowser gestart om de gebruiker te verifiëren.

ActiveDirectoryManagedIdentity

Gebruik deze methode bij het uitvoeren van sqlcmd (Go) op een Azure-VM met een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit. Als u een door de gebruiker toegewezen beheerde identiteit gebruikt, stelt u de gebruikersnaam in op de client-id van de beheerde identiteit. Als u een door het systeem toegewezen identiteit gebruikt, laat u de gebruikersnaam leeg.

In dit voorbeeld ziet u hoe u verbinding maakt met behulp van een door de service toegewezen beheerde identiteit (SAMI):

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity

In dit voorbeeld ziet u hoe u verbinding maakt met een door de gebruiker toegewezen beheerde identiteit (UAMI) door de client-id toe te voegen van de door de gebruiker toegewezen beheerde identiteit:

-S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryManagedIdentity -U <user-assigned-managed-identity-client-id>

ActiveDirectoryServicePrincipal

Met deze methode wordt de opgegeven gebruikersnaam geverifieerd als een service-principal-id en het wachtwoord als het clientgeheim voor de service-principal. Geef een gebruikersnaam op in het formulier <service principal id>@<tenant id>. Stel de SQLCMDPASSWORD-variabele in op het klantgeheim. Als u een certificaat gebruikt in plaats van een clientgeheim, stelt u AZURE_CLIENT_CERTIFICATE_PATH omgevingsvariabele in op het pad van het certificaatbestand.

Omgevingsvariabelen voor Microsoft Entra-verificatie

Sommige Microsoft Entra-verificatie-instellingen hebben geen opdrachtregelinvoer en sommige omgevingsvariabelen worden rechtstreeks gebruikt door het azidentity-pakket dat wordt gebruikt door sqlcmd (Go).

Deze omgevingsvariabelen kunnen worden ingesteld om bepaalde aspecten van Microsoft Entra-verificatie te configureren en standaardgedrag te omzeilen. Naast de eerder vermelde variabelen zijn de volgende specifieke variabelen voor sqlcmd (Go) en van toepassing op meerdere methoden.

SQLCMDCLIENTID

Stel deze omgevingsvariabele in op de id van een toepassing die is geregistreerd in Microsoft Entra, die is geautoriseerd voor verificatie bij Azure SQL Database. Is van toepassing op ActiveDirectoryInteractive- en ActiveDirectoryPassword-methoden.