Dela via


SKAPA DATABASOMFATTANDE AUTENTISERINGSUPPGIFTER (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Skapar en databasautentiseringsuppgift. En databasautentiseringsuppgift mappas inte till en serverinloggning eller databasanvändare. Autentiseringsuppgifterna används av databasen för åtkomst till den externa platsen när databasen utför en åtgärd som kräver åtkomst.

Transact-SQL syntaxkonventioner

Syntax

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]
[ ; ]

Argumentpunkter

credential_name

Anger namnet på databasens begränsade autentiseringsuppgifter som skapas. credential_name kan inte börja med talet (#). Systemautentiseringsuppgifter börjar med ##. Den maximala längden på credential_name är 128 tecken.

IDENTITY = "identity_name"

Anger namnet på det konto som ska användas vid anslutning utanför servern.

  • Om du vill importera en fil från Azure Blob Storage eller Azure Data Lake Storage med en delad nyckel måste identitetsnamnet vara SHARED ACCESS SIGNATURE. Mer information om signaturer för delad åtkomst finns i Använda signaturer för delad åtkomst (SAS). Använd IDENTITY = SHARED ACCESS SIGNATURE endast för en signatur för delad åtkomst.
  • Om du vill importera en fil från Azure Blob Storage med hjälp av en hanterad identitet måste identitetsnamnet vara MANAGED IDENTITY.
  • När du använder Kerberos (Windows Active Directory eller MIT KDC) ska du inte använda domännamnet IDENTITY i argumentet. Det ska bara vara kontonamnet.
  • I en SQL Server-instans ignoreras om du skapar en databasomfattande autentiseringsuppgift med en lagringsåtkomstnyckel som används som SECRET. IDENTITY
  • WITH IDENTITY krävs inte om containern i Azure Blob Storage är aktiverad för anonym åtkomst. Ett exempel på frågor om Azure Blob Storage med OPENROWSET BULKfinns i Importera till en tabell från en fil som lagras i Azure Blob Storage.
  • I SQL Server 2022 (16.x) och senare versioner ersätter REST-API-anslutningsappen HADOOP. För Azure Blob Storage och Azure Data Lake Gen 2 är den enda autentiseringsmetod som stöds signatur för delad åtkomst. Mer information finns i SKAPA EXTERN DATAKÄLLA (Transact-SQL).
  • I SQL Server 2019 (15.x) är Hadoop den enda externa PolyBase-datakällan som stöder Kerberos-autentisering. Alla andra externa datakällor (SQL Server, Oracle, Teradata, MongoDB, generisk ODBC) stöder endast grundläggande autentisering.
  • SQL-pooler i Azure Synapse Analytics innehåller följande kommentarer:
    • Om du vill läsa in data i Azure Synapse Analytics kan alla giltiga värden användas för IDENTITY.
    • I en serverlös SQL-pool i Azure Synapse Analytics kan autentiseringsuppgifter med databasomfattning ange en hanterad identitet för arbetsytan, tjänstens huvudnamn eller signatur för delad åtkomst (SAS). Åtkomst via en användaridentitet, som aktiveras av Microsoft Entra-direktautentisering, är också möjlig med en databasomfångad autentiseringsuppgift, liksom anonym åtkomst till offentligt tillgänglig lagring. Mer information finns i Typer av lagringsauktorisering som stöds.
    • I en dedikerad SQL-pool i Azure Synapse Analytics kan autentiseringsuppgifter med databasomfattning ange sas-token (signatur för delad åtkomst), anpassad programidentitet, arbetsytehanterad identitet eller lagringsåtkomstnyckel.
autentisering T-SQL Stödd Anteckningar
Signatur för delad åtkomst (SAS) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022, Azure SQL Managed Instance, Azure Synapse Analytics, Azure SQL Database
Hanterad identitet CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Azure SQL Database, SQL Managed Identity
Microsoft Entra-direktautentisering via användaridentitet CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database I Azure Synapse läser du Microsoft Entra Connect: Direktautentisering
Grundläggande S3-åtkomstnyckelautentisering CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022
Kerberos (Windows Active Directory eller MIT KDC) eller för ODBC-datakällor CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; Hadoop-versioner av SQL

SECRET = 'secret'

Anger hemligheten som krävs för utgående autentisering. SECRET krävs för att importera en fil från Azure Blob Storage. Om du vill läsa in från Azure Blob Storage till Azure Synapse Analytics eller Parallel Data Warehouse måste hemligheten vara Azure Storage-nyckeln.

Varning

SAS-nyckelvärdet kan börja med ett "?" (frågetecken). När du använder SAS-nyckeln måste du ta bort inledande ?. Annars kan dina ansträngningar blockeras.

Anmärkningar

En databasomfattande autentiseringsuppgift är en post som innehåller den autentiseringsinformation som krävs för att ansluta till en resurs utanför SQL Server. De flesta autentiseringsuppgifterna innehåller en Windows-användare och ett lösenord.

För att skydda känslig information i databasens begränsade autentiseringsuppgifter krävs en databashuvudnyckel (DMK). DMK är en symmetrisk nyckel som krypterar hemligheten i databasens begränsade autentiseringsuppgifter. Databasen måste ha en DMK innan några databasomfattningsautentiseringsuppgifter kan skapas. En DMK ska krypteras med ett starkt lösenord. Azure SQL Database skapar en DMK med ett starkt, slumpmässigt valt lösenord som en del av skapandet av databasens begränsade autentiseringsuppgifter eller som en del av att skapa en servergranskning. Användare kan inte skapa DMK på en logisk master databas. Huvudnyckellösenordet är okänt för Microsoft och kan inte identifieras när det har skapats. Därför rekommenderar vi att du skapar en DMK innan du skapar en databasomfattande autentiseringsuppgift. Mer information finns i CREATE MASTER KEY (Transact-SQL).

När IDENTITY är en Windows-användare kan hemligheten vara lösenordet. Hemligheten krypteras med hjälp av tjänstens huvudnyckel (SMK). Om SMK:n återskapas krypteras hemligheten igen med hjälp av den nya SMK:n.

När du beviljar behörigheter för en signatur för delad åtkomst (SAS) för användning med en extern PolyBase-tabell väljer du både Container och Object som tillåtna resurstyper. Om du inte beviljas kan du få fel 16535 eller 16561 när du försöker komma åt den externa tabellen.

Information om autentiseringsuppgifter med databasomfattning visas i sys.database_scoped_credentials katalogvy.

Här följer några program med autentiseringsuppgifter med databasomfattning:

Behörigheter

Kräver KONTROLL-behörighet för databasen.

Exempel

A. Skapa en databasomfattande autentiseringsuppgift för ditt program

I följande exempel skapas databasens omfångsbegränsade autentiseringsuppgifter med namnet AppCred. Databasens begränsade autentiseringsuppgifter innehåller Windows-användaren Mary5 och ett lösenord.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';

B. Skapa en databasomfattande autentiseringsuppgift för en signatur för delad åtkomst

I följande exempel skapas en databasomfattande autentiseringsuppgift som kan användas för att skapa en extern datakälla, som kan utföra massåtgärder, till exempel BULK INSERT (Transact-SQL) och OPENROWSET (Transact-SQL).

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

C. Skapa en databasomfattande autentiseringsuppgift för PolyBase-anslutning till Azure Data Lake Store

I följande exempel skapas en databasomfattande autentiseringsuppgift som kan användas för att skapa en extern datakälla, som kan användas av PolyBase i Azure Synapse Analytics.

Azure Data Lake Store använder ett Microsoft Entra-program för tjänst-till-tjänst-autentisering.

Skapa ett Microsoft Entra-program och dokumentera din client_id, OAuth_2.0_Token_EndPoint och Nyckel innan du försöker skapa en databasomfattande autentiseringsuppgift.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
    IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
    SECRET = '<key>'
;