Dela via


Autentisera med Microsoft Entra ID i sqlcmd

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Förhandsversion av Microsoft Fabric

sqlcmd stöder en mängd olika Microsoft Entra-autentiseringsmodeller, beroende på vilken version du har installerat.

Note

Även om Microsoft Entra ID är det nya namnet för Azure Active Directory (Azure AD), för att förhindra avbrott i befintliga miljöer, förblir Azure AD fortfarande i vissa hårdkodade element som gränssnittsfält, anslutningsproviders, felkoder och cmdletar. I den här artikeln är de två namnen utbytbara.

Information om vilken variant och version av sqlcmd som är installerad på systemet finns i Kontrollera installerad version av sqlcmd-verktyget. Information om hur du hämtar sqlcmd finns i Ladda ned och installera sqlcmd-verktyget.

sqlcmd (Go) stöder fler Microsoft Entra-autentiseringsmodeller, baserat på azidentity-paketet. Implementeringen förlitar sig på en Microsoft Entra-anslutning i go-sqlcmd-drivrutin.

Kommandoradsargument

Om du vill använda Microsoft Entra-autentisering kan du använda en av två kommandoradsväxlar.

-G är (mestadels) kompatibelt med dess användning i sqlcmd (ODBC). Om ett användarnamn och lösenord anges autentiseras det med hjälp av Microsoft Entra-lösenordsautentisering. Om ett användarnamn anges använder det interaktiv Microsoft Entra-autentisering, som kan visa en webbläsare. Om inget användarnamn eller lösenord anges använder det en DefaultAzureCredential, som försöker autentisera via olika mekanismer.

--authentication-method= kan användas för att ange någon av följande autentiseringstyper.

ActiveDirectoryDefault

  • En översikt över typerna av autentisering som används i det här läget hänvisas till i Standardautentisering för Azure.
  • Välj den här metoden om dina databasautomatiseringsskript är avsedda att köras i både lokala utvecklingsmiljöer och i en produktionsdistribution i Azure. I utvecklingsmiljön kan du använda en klienthemlighet eller en Azure CLI-inloggning. Utan att ändra skriptet från utvecklingsmiljön kan du använda en hanterad identitet eller klienthemlighet i produktionsdistributionen.
  • Det är nödvändigt att ange miljövariabler AZURE_TENANT_ID och AZURE_CLIENT_ID för att DefaultAzureCredential ska kunna börja kontrollera miljökonfigurationen och leta efter någon av följande ytterligare miljövariabler för att kunna autentisera:
    • Om du ställer in miljövariabeln AZURE_CLIENT_SECRET konfigureras DefaultAzureCredential att välja ClientSecretCredential.
    • Om du ställer in miljövariabeln AZURE_CLIENT_CERTIFICATE_PATH konfigureras DefaultAzureCredential att välja ClientCertificateCredential om AZURE_CLIENT_SECRET inte har angetts.
  • Om du ställer in miljövariabeln AZURE_USERNAME konfigureras DefaultAzureCredential att välja UsernamePasswordCredential om AZURE_CLIENT_SECRET och AZURE_CLIENT_CERTIFICATE_PATH inte har angetts.

ActiveDirectoryIntegrated

Den här metoden implementeras för närvarande inte och återgår till ActiveDirectoryDefault.

ActiveDirectoryPassword

  • Den här metoden autentiserar med ett användarnamn och lösenord. Det fungerar inte om MFA krävs.

  • Du anger användarnamn och lösenord med hjälp av vanliga kommandoradsväxlar eller SQLCMD miljövariabler.

  • Ange AZURE_TENANT_ID en miljövariabel till serverns tenant-ID om du inte använder användarens standardtenant.

ActiveDirectoryInteractive

Den här metoden startar en webbläsare för att autentisera användaren.

ActiveDirectoryManagedIdentity

Använd den här metoden när du kör sqlcmd (Go) på en virtuell Azure-dator som antingen har en systemtilldelad eller användartilldelad hanterad identitet. Om du använder en användartilldelad hanterad identitet anger du användarnamnet till klient-ID för den hanterade identiteten. Om du använder en systemtilldelad identitet lämnar du användarnamnet tomt.

Det här exemplet visar hur du ansluter med hjälp av en tjänsttilldelad hanterad identitet (SAMI):

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

Det här exemplet visar hur du ansluter med en användartilldelad hanterad identitet (UAMI) genom att lägga till klient-ID för den användartilldelade hanterade identiteten:

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

ActiveDirectoryServicePrincipal

Den här metoden autentiserar det angivna användarnamnet som ett tjänsthuvudnamns-ID och lösenordet som klienthemlighet för tjänstens huvudnamn. Ange ett användarnamn i formuläret <application (client) ID>. Ange SQLCMDPASSWORD variabel till klienthemligheten. Om du använder ett certifikat i stället för en klienthemlighet anger du AZURE_CLIENT_CERTIFICATE_PATH miljövariabel till sökvägen till certifikatfilen.

sqlcmd -S testsrv.database.windows.net -d Target_DB_or_DW --authentication-method ActiveDirectoryServicePrincipal -U <Application (client) ID> -P <client secret>

Miljövariabler för Microsoft Entra-autentisering

Vissa Microsoft Entra-autentiseringsinställningar har inte kommandoradsindata och vissa miljövariabler används direkt av azidentity-paketet som används av sqlcmd (Go).

Dessa miljövariabler kan ställas in för att konfigurera vissa aspekter av Microsoft Entra-autentisering och kringgå standardbeteenden. Förutom variablerna som angavs tidigare är följande specifika för sqlcmd (Go) och gäller för flera metoder.

SQLCMDCLIENTID

Ange miljövariabeln till identifieraren för ett program som är registrerat i Microsoft Entra, som har behörighet att autentisera till Azure SQL Database. Gäller metoderna ActiveDirectoryInteractive och ActiveDirectoryPassword.