SKAPA AUTENTISERINGSUPPGIFTER (Transact-SQL)
gäller för:SQL ServerAzure SQL Managed Instance
Skapar autentiseringsuppgifter på servernivå. En 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. Om du till exempel sparar en databassäkerhetskopia på någon plats kan SQL Server behöva ange särskilda autentiseringsuppgifter för att få åtkomst till den platsen. Mer information finns i autentiseringsuppgifter (databasmotor).
Not
För att göra autentiseringsuppgifterna på databasnivå använder du CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Skapa en autentiseringsuppgift på servernivå med CREATE CREDENTIAL
när du behöver använda samma autentiseringsuppgifter för flera databaser på servern.
- Skapa en databasomfattande autentiseringsuppgift med
CREATE DATABASE SCOPED CREDENTIAL
för att göra databasen mer portabel. När en databas flyttas till en ny server flyttas databasens begränsade autentiseringsuppgifter med den. - Använd databasomfattande autentiseringsuppgifter i SQL Database.
- Använd databasomfattande autentiseringsuppgifter med PolyBase- och Azure SQL Managed Instance-datavirtualisering funktioner.
Transact-SQL syntaxkonventioner
Syntax
CREATE CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
[ , SECRET = 'secret' ]
[ FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name ]
Argument
credential_name
Anger namnet på autentiseringsuppgifterna som skapas. credential_name kan inte börja med talet (#). Systemautentiseringsuppgifter börjar med ##.
Viktig
När du använder en signatur för delad åtkomst (SAS) måste det här namnet matcha containersökvägen, börja med https och får inte innehålla ett snedstreck. Se exempel D.
När den används för säkerhetskopiering/återställning med hjälp av en till externa dataplattformar, till exempel Azure Blob Storage eller S3-kompatibla plattformar, innehåller följande tabell vanliga sökvägar:
Extern datakälla | Platssökväg | Exempel |
---|---|---|
Azure Blob Storage (V2) | https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername> |
exempel D. |
S3-kompatibel objektlagring | – S3-kompatibel lagring: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.<region>.amazonaws.com[:port]/<folder> eller s3://s3.<region>.amazonaws.com[:port]/<bucket_name>/<folder> |
exempel F. |
IDENTITY ='identity_name'
Anger namnet på det konto som ska användas vid anslutning utanför servern. När autentiseringsuppgifterna används för att komma åt Azure Key Vault är IDENTITY namnet på nyckelvalvet. Se exempel C nedan. När autentiseringsuppgifterna använder en signatur för delad åtkomst (SAS) är IDENTITYSIGNATUR FÖR DELAD ÅTKOMST. Se exempel D nedan.
Viktig
Azure SQL Database stöder endast Azure Key Vault- och signaturidentiteter för delad åtkomst. Windows-användaridentiteter stöds inte.
SECRET ='hemlighet"
Anger hemligheten som krävs för utgående autentisering.
När autentiseringsuppgifterna används för åtkomst till Azure Key Vault måste argumentet SECRET formateras som ett tjänsthuvudnamns <klient-ID> (utan bindestreck) och <hemlighet>, som skickas tillsammans utan utrymme mellan dem. Se exempel C nedan. När autentiseringsuppgifterna använder en signatur för delad åtkomst är SECRET signaturtoken för delad åtkomst. Se exempel D nedan. Information om hur du skapar en lagrad åtkomstprincip och en signatur för delad åtkomst i en Azure-container finns i Lektion 1: Skapa en lagrad åtkomstprincip och en signatur för delad åtkomst på en Azure-container.
FÖR KRYPTOGRAFIPROVIDER CRYPTOGRAPHIC_PROVIDER_NAME
Anger namnet på en Enterprise Key Management Provider (EKM). Mer information om nyckelhantering finns i Utökningsbar nyckelhantering (EKM).
Anmärkningar
När IDENTITY är en Windows-användare kan hemligheten vara lösenordet. Hemligheten krypteras med hjälp av tjänstens huvudnyckel. Om tjänstens huvudnyckel återskapas krypteras hemligheten igen med hjälp av den nya huvudnyckeln för tjänsten.
När du har skapat en autentiseringsuppgift kan du mappa den till en SQL Server-inloggning med hjälp av CREATE LOGIN eller ALTER LOGIN. En SQL Server-inloggning kan endast mappas till en autentiseringsuppgift, men en enda autentiseringsuppgift kan mappas till flera SQL Server-inloggningar. Mer information finns i autentiseringsuppgifter (databasmotor). En autentiseringsuppgift på servernivå kan bara mappas till en inloggning, inte till en databasanvändare.
Information om autentiseringsuppgifter visas i sys.credentials katalogvy.
Om det inte finns någon inloggningsmappad autentiseringsuppgift för providern används autentiseringsuppgifterna som mappas till SQL Server-tjänstkontot.
En inloggning kan ha flera autentiseringsuppgifter mappade till den så länge de används med distinkta leverantörer. Det får bara finnas en mappad autentiseringsuppgift per provider per inloggning. Samma autentiseringsuppgifter kan mappas till andra inloggningar.
Behörigheter
Kräver ÄNDRA BEHÖRIGHETER FÖR AUTENTISERINGSUPPGIFTER.
Exempel
A. Skapa en autentiseringsuppgift för Windows-identitet
I följande exempel skapas autentiseringsuppgifterna med namnet AlterEgo
. Autentiseringsuppgifterna innehåller Windows-användaren Mary5
och ett lösenord.
CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'Mary5',
SECRET = '<EnterStrongPasswordHere>';
GO
B. Skapa en autentiseringsuppgift för EKM
I följande exempel används ett konto som tidigare skapats med namnet User1OnEKM
på en EKM-modul via EKM:s hanteringsverktyg, med en grundläggande kontotyp och lösenord. Kontot sysadmin på servern skapar en autentiseringsuppgift som används för att ansluta till EKM-kontot och tilldelar den till User1
SQL Server-kontot:
CREATE CREDENTIAL CredentialForEKM
WITH IDENTITY='User1OnEKM', SECRET='<EnterStrongPasswordHere>'
FOR CRYPTOGRAPHIC PROVIDER MyEKMProvider;
GO
/* Modify the login to assign the cryptographic provider credential */
ALTER LOGIN User1
ADD CREDENTIAL CredentialForEKM;
C. Skapa en autentiseringsuppgift för EKM med hjälp av Azure Key Vault
I följande exempel skapas en SQL Server-autentiseringsuppgift som databasmotorn ska använda vid åtkomst till Azure Key Vault med hjälp av SQL Server Connector för Microsoft Azure Key Vault. Ett fullständigt exempel på hur du använder SQL Server Connector finns i Extensible Key Management Using Azure Key Vault (SQL Server).
Viktig
Argumentet IDENTITY för CREATE CREDENTIAL kräver nyckelvalvets namn. Argumentet SECRET för CREATE CREDENTIAL kräver att <klient-ID> (utan bindestreck) och <Hemlighet> skickas tillsammans utan utrymme mellan dem.
I följande exempel tas klient-ID (00001111-aaaa-2222-bbbb-3333cccc4444
) bort från bindestrecken och anges som strängen 11111111222233334444555555555555
och Secret representeras av strängen SECRET_DBEngine
.
USE master;
CREATE CREDENTIAL Azure_EKM_TDE_cred
WITH IDENTITY = 'ContosoKeyVault',
SECRET = '11111111222233334444555555555555SECRET_DBEngine'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;
I följande exempel skapas samma autentiseringsuppgifter med hjälp av variabler för klient-ID och hemliga strängar, som sedan sammanfogas för att bilda argumentet SECRET. Funktionen REPLACE används för att ta bort bindestrecken från klient-ID:t.
DECLARE @AuthClientId uniqueidentifier = '11111111-AAAA-BBBB-2222-CCCCCCCCCCCC';
DECLARE @AuthClientSecret varchar(200) = 'SECRET_DBEngine';
DECLARE @pwd varchar(max) = REPLACE(CONVERT(varchar(36), @AuthClientId) , '-', '') + @AuthClientSecret;
EXEC ('CREATE CREDENTIAL Azure_EKM_TDE_cred
WITH IDENTITY = ''ContosoKeyVault'', SECRET = ''' + @PWD + '''
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;');
D. Skapa en autentiseringsuppgift med hjälp av en SAS-token
gäller för: SQL Server 2014 (12.x) via aktuella versionen och Azure SQL Managed Instance.
I följande exempel skapas en signaturautentiseringsuppgift för delad åtkomst med hjälp av en SAS-token. En självstudiekurs om hur du skapar en lagrad åtkomstprincip och en signatur för delad åtkomst i en Azure-container och sedan skapar en autentiseringsuppgift med signaturen för delad åtkomst finns i Självstudie: Använda Microsoft Azure Blob Storage med SQL Server-databaser.
Viktig
ARGUMENTET CREDENTIAL NAME kräver att namnet matchar containersökvägen, börjar med https och inte innehåller ett avslutande snedstreck. Argumentet IDENTITY kräver namnet SIGNATUR FÖR DELAD ÅTKOMST. Argumentet SECRET kräver signaturtoken för delad åtkomst.
Den signaturen för delad åtkomst inte ska ha den ledande ?.
USE master
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] -- this name must match the container path, start with https and must not contain a trailing forward slash.
WITH IDENTITY='SHARED ACCESS SIGNATURE' -- this is a mandatory string and do not change it.
, SECRET = 'sharedaccesssignature' -- this is the shared access signature token
GO
E. Skapa en autentiseringsuppgift för hanterad identitet
I följande exempel skapas autentiseringsuppgifterna som representerar hanterad identitet för Azure SQL eller Azure Synapse-tjänsten. Lösenord och hemlighet gäller inte i det här fallet.
CREATE CREDENTIAL ServiceIdentity WITH IDENTITY = 'Managed Identity';
GO
F. Skapa en autentiseringsuppgift för säkerhetskopiering/återställning till S3-kompatibel lagring
gäller för: SQL Server 2022 (16.x) och senare versioner
Den öppna S3-kompatibla standarden tillhandahåller lagringssökvägar och information som kan variera beroende på lagringsplattformen. Mer information finns i SQL Server-säkerhetskopiering till URL för S3-kompatibel objektlagring.
För de flesta S3-kompatibla lagringsutrymmen skapar det här exemplet autentiseringsuppgifter på servernivå och utför en BACKUP TO URL
.
USE [master];
CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>]
WITH
IDENTITY = 'S3 Access Key',
SECRET = '<AccessKeyID>:<SecretKeyID>';
GO
BACKUP DATABASE [SQLTestDB]
TO URL = 's3://<endpoint>:<port>/<bucket>/SQLTestDB.bak'
WITH FORMAT /* overwrite any existing backup sets */
, STATS = 10
, COMPRESSION;
AWS S3 stöder dock två olika url-standarder.
-
S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>
(standard) S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
Det finns flera metoder för att skapa en autentiseringsuppgift för AWS S3:
Ange bucketnamnet och sökvägen och regionen i autentiseringsuppgifternas namn.
-- S3 bucket name: datavirtualizationsample -- S3 bucket region: us-west-2 -- S3 bucket folder: backup CREATE CREDENTIAL [s3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup] WITH IDENTITY = 'S3 Access Key' , SECRET = 'accesskey:secretkey'; GO BACKUP DATABASE [AdventureWorks2022] TO URL = 's3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup/AdventureWorks2022.bak' WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520; GO
Eller
CREATE CREDENTIAL [s3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup] WITH IDENTITY = 'S3 Access Key' , SECRET = 'accesskey:secretkey'; GO BACKUP DATABASE [AdventureWorks2022] TO URL = 's3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup/AdventureWorks2022.bak' WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520; GO
Eller ange bucketnamnet och sökvägen i autentiseringsuppgifternas namn, men parametrisera regionen inom varje
BACKUP
/RESTORE
kommando. Använd den S3-specifika regionsträngen iBACKUP_OPTIONS
ochRESTORE_OPTIONS
, till exempel'{"s3": {"region":"us-west-2"}}'
.-- S3 bucket name: datavirtualizationsample -- S3 bucket region: us-west-2 -- S3 bucket folder: backup CREATE CREDENTIAL [s3://datavirtualizationsample.s3.amazonaws.com/backup] WITH IDENTITY = 'S3 Access Key' , SECRET = 'accesskey:secretkey'; GO BACKUP DATABASE [AdventureWorks2022] TO URL = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak' WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-2"}}' -- REGION AS PARAMETER) , COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520; GO RESTORE DATABASE AdventureWorks2022_1 FROM URL = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak' WITH MOVE 'AdventureWorks2022' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.mdf' , MOVE 'AdventureWorks2022_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.ldf' , STATS = 10, RECOVERY , REPLACE, RESTORE_OPTIONS = '{"s3": {"region":"us-west-2"}}'; -- REGION AS PARAMETER) GO
Relaterat innehåll
- autentiseringsuppgifter (databasmotor)
- ÄNDRA AUTENTISERINGSUPPGIFTER (Transact-SQL)
- SLÄPP AUTENTISERINGSUPPGIFTER (Transact-SQL)
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- ALTER LOGIN (Transact-SQL)
- sys.credentials (Transact-SQL)
- lektion 2: Skapa en SQL Server-autentiseringsuppgift med hjälp av en signatur för delad åtkomst
- signaturer för delad åtkomst