Sdílet prostřednictvím


CREATE CREDENTIAL (Transact-SQL)

platí pro:SQL Serverazure SQL Managed Instance

Vytvoří přihlašovací údaje na úrovni serveru. Přihlašovací údaje jsou záznam, který obsahuje ověřovací informace potřebné pro připojení k prostředku mimo SQL Server. Většina přihlašovacích údajů zahrnuje uživatele a heslo systému Windows. Například uložení zálohy databáze do některého umístění může vyžadovat, aby SQL Server poskytl speciální přihlašovací údaje pro přístup k danému umístění. Další informace najdete v tématupřihlašovací údaje (databázový stroj).

Poznámka

Pokud chcete přihlašovací údaje nastavit na úrovni databáze, použijteCREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Pokud potřebujete použít stejné přihlašovací údaje pro více databází na serveru, vytvořte přihlašovací údaje na úrovni serveru s CREATE CREDENTIAL.

  • Vytvořte přihlašovací údaje s vymezeným oborem databáze s CREATE DATABASE SCOPED CREDENTIAL, aby byla databáze přenosnější. Když se databáze přesune na nový server, přihlašovací údaje s vymezeným oborem databáze se s ní přesunou.
  • Použijte přihlašovací údaje s vymezeným oborem databáze ve službě SQL Database.
  • Používejte přihlašovací údaje v oboru databáze s PolyBase a funkcemi virtualizace dat azure SQL Managed Instance.

Transact-SQL konvence syntaxe

Syntax

CREATE CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]
        [ FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name ]

Argumenty

credential_name

Určuje název vytvářených přihlašovacích údajů. credential_name nemůže začínat znaménkem čísla (#). Systémové přihlašovací údaje začínají ##.

Důležitý

Při použití sdíleného přístupového podpisu (SAS) musí tento název odpovídat cestě ke kontejneru, musí začínat https a nesmí obsahovat lomítko. Viz příklad D.

Pokud se používá k zálohování a obnovení pomocí externích datových platforem, jako jsou platformy kompatibilní se službou Azure Blob Storage nebo S3, poskytuje následující tabulka běžné cesty:

Externí zdroj dat Cesta k umístění Příklad
Azure Blob Storage (V2) https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername> příklad D.
Úložiště objektů kompatibilní s S3 - Úložiště kompatibilní s S3: s3://<server_name>:<port>/
– AWS S3: s3://<bucket_name>.S3.<region>.amazonaws.com[:port]/<folder>
nebo s3://s3.<region>.amazonaws.com[:port]/<bucket_name>/<folder>
příklad F.

IDENTITA ='identity_name'

Určuje název účtu, který se má použít při připojování mimo server. Pokud se přihlašovací údaje používají pro přístup ke službě Azure Key Vault, IDENTITY je název trezoru klíčů. Viz příklad C níže. Pokud přihlašovací údaje používají sdílený přístupový podpis (SAS), identita je SDÍLENÝ PŘÍSTUPOVÝ PODPIS. Viz příklad D níže.

Důležitý

Azure SQL Database podporuje pouze identity služby Azure Key Vault a sdílených přístupových podpisů. Uživatelské identity systému Windows nejsou podporovány.

SECRET ='tajný'

Určuje tajný klíč vyžadovaný pro odchozí ověřování.

Pokud se přihlašovací údaje používají pro přístup ke službě Azure Key Vault, musí být argument SECRET formátovaný jako ID klienta instančního objektu (bez pomlček) a tajných kódů, které se předávají společně bez mezery mezi nimi. Viz příklad C níže. Pokud přihlašovací údaje používají sdílený přístupový podpis, SECRET je token sdíleného přístupového podpisu. Viz příklad D níže. Informace o vytvoření uložených zásad přístupu a sdíleného přístupového podpisu v kontejneru Azure najdete v lekci 1: Vytvoření uložených zásad přístupu a sdíleného přístupového podpisu v kontejneru Azure.

PRO CRYPTOGRAPHIC_PROVIDER_NAME ZPROSTŘEDKOVATELE KRYPTOGRAFICKÝCH SLUŽEB

Určuje názevEKM (Enterprise Key Management Provider). Další informace o správě klíčů naleznete v tématu Extensible Key Management (EKM).

Poznámky

Pokud je identita uživatelem Systému Windows, může být tajný kód heslem. Tajný klíč je šifrovaný pomocí hlavního klíče služby. Pokud se hlavní klíč služby znovu vygeneruje, tajný klíč se znovu zašifruje pomocí nového hlavního klíče služby.

Po vytvoření přihlašovacích údajů ho můžete namapovat na přihlášení k SQL Serveru pomocí CREATE LOGIN nebo ALTER LOGIN. Přihlášení k SQL Serveru je možné namapovat pouze na jeden přihlašovací údaj, ale jeden přihlašovací údaj lze namapovat na více přihlášení SQL Serveru. Další informace najdete v tématupřihlašovací údaje (databázový stroj). Přihlašovací údaje na úrovni serveru je možné mapovat pouze na přihlašovací údaje, nikoli na uživatele databáze.

Informace o přihlašovacích údajích jsou viditelné v zobrazení katalogu sys.credentials.

Pokud pro zprostředkovatele nejsou namapované přihlašovací údaje, použije se přihlašovací údaje mapované na účet služby SQL Serveru.

Přihlášení může mít namapovaných více přihlašovacích údajů, pokud se používají s výraznými poskytovateli. Pro každé přihlášení musí existovat pouze jeden mapovaný přihlašovací údaj na jednoho zprostředkovatele. Stejné přihlašovací údaje je možné mapovat na jiná přihlášení.

Dovolení

Vyžaduje ALTER ANY CREDENTIAL oprávnění.

Příklady

A. Vytvoření přihlašovacích údajů pro identitu Windows

Následující příklad vytvoří přihlašovací údaje s názvem AlterEgo. Přihlašovací údaje obsahují uživatelské Mary5 Windows a heslo.

CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';
GO

B. Vytvoření přihlašovacích údajů pro EKM

Následující příklad používá dříve vytvořený účet s názvem User1OnEKM v modulu EKM prostřednictvím nástrojů pro správu EKM se základním typem účtu a heslem. Účet správce systému na serveru vytvoří přihlašovací údaje, které se používají pro připojení k účtu EKM, a přiřadí ho k účtu User1 SQL Serveru:

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. Vytvoření přihlašovacích údajů pro EKM pomocí služby Azure Key Vault

Následující příklad vytvoří přihlašovací údaje SQL Serveru pro databázový stroj, který se použije při přístupu ke službě Azure Key Vault pomocí konektoru SQL Serveru pro microsoft Azure Key Vault. Úplný příklad použití konektoru SQL Serveru najdete v tématu Rozšiřitelná správa klíčů pomocí služby Azure Key Vault (SQL Server).

Důležitý

Argument IDENTITYCREATE CREDENTIAL vyžaduje název trezoru klíčů. Argument SECRET argumentu CREATE CREDENTIAL vyžaduje ID klienta (bez pomlček) a tajné předat společně bez mezery mezi nimi.

V následujícím příkladu je id klienta (00001111-aaaa-2222-bbbb-3333cccc4444) proškrtnuto a zadáno jako řetězcové 11111111222233334444555555555555 a Tajné je reprezentován řetězcem SECRET_DBEngine.

USE master;
CREATE CREDENTIAL Azure_EKM_TDE_cred
    WITH IDENTITY = 'ContosoKeyVault',
    SECRET = '11111111222233334444555555555555SECRET_DBEngine'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;

Následující příklad vytvoří stejné přihlašovací údaje pomocí proměnných pro id klienta a tajných kódů řetězce, které jsou pak zřetězeny dohromady a tvoří SECRET argument. Funkce REPLACE slouží k odebrání pomlček z ID klienta.

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. Vytvoření přihlašovacích údajů pomocí tokenu SAS

platí pro: SQL Server 2014 (12.x) prostřednictvím aktuální verze a Azure SQL Managed Instance.

Následující příklad vytvoří přihlašovací údaje sdíleného přístupového podpisu pomocí tokenu SAS. Kurz vytvoření uložených zásad přístupu a sdíleného přístupového podpisu v kontejneru Azure a následném vytvoření přihlašovacích údajů pomocí sdíleného přístupového podpisu najdete v tématu Kurz: Použití služby Microsoft Azure Blob Storage s databázemi SQL Serveru.

Důležitý

Argument CREDENTIAL NAME vyžaduje, aby název odpovídal cestě ke kontejneru, začínal https a neobsahovává koncové lomítko. Argument identity vyžaduje název SDÍLENÝ PŘÍSTUPOVÝ PODPIS. Argument SECRET vyžaduje token sdíleného přístupového podpisu.

Tajný kód SDÍLENÝ PŘÍSTUPOVÝ PODPIS by neměl mít úvodní ?.

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. Vytvoření přihlašovacích údajů pro spravovanou identitu

Následující příklad vytvoří přihlašovací údaje, které představují spravovanou identitu Azure SQL nebo služby Azure Synapse. V tomto případě neplatí heslo a tajný klíč.

CREATE CREDENTIAL ServiceIdentity WITH IDENTITY = 'Managed Identity';
GO

F. Vytvoření přihlašovacích údajů pro zálohování nebo obnovení do úložiště kompatibilního s S3

platí pro: SQL Server 2022 (16.x) a novější verze

Otevřený standard kompatibilní s S3 poskytuje cesty k úložišti a podrobnosti, které se můžou lišit v závislosti na platformě úložiště. Další informace najdete v tématu zálohování SQL Serveru na adresu URL pro úložiště objektů kompatibilní s S3.

Pro většinu úložiště kompatibilních s S3 tento příklad vytvoří přihlašovací údaje na úrovni serveru a provede 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 ale podporuje dva různé standardy adresy URL.

  • S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER> (výchozí)
  • S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>

Existuje několik přístupů k úspěšnému vytvoření přihlašovacích údajů pro AWS S3:

  • Do názvu přihlašovacích údajů zadejte název kontejneru a cestu a oblast.

    -- 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
    

    Nebo

    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
    
  • Nebo zadejte název kontejneru a cestu v názvu přihlašovacích údajů, ale parametrizujte oblast v rámci každého příkazu BACKUP/RESTORE. V BACKUP_OPTIONS a RESTORE_OPTIONSpoužijte řetězec oblasti specifické pro S3, například '{"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