CREATE CREDENTIAL (Transact-SQL)

Sintassi

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

Argomenti

  • credential_name
    Specifica il nome della credenziale da creare. credential_name non può iniziare con il simbolo di cancelletto (#), perché tale simbolo viene utilizzato per le credenziali di sistema.

  • IDENTITY ='identity_name'
    Specifica il nome dell'account da utilizzare per la connessione all'esterno del server.

  • SECRET ='secret'
    Specifica il segreto richiesto per l'autenticazione in uscita. Questa clausola è facoltativa.

  • FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name
    Specifica il nome di un provider EKM (Enterprise Key Management). Per ulteriori informazioni su EKM, vedere Informazioni su Extensible Key Management (EKM).

Osservazioni

Una credenziale è un record contenente le informazioni di autenticazione necessarie per connettersi a una risorsa all'esterno di SQL Server. La maggior parte delle credenziali include un utente e una password di Windows.

Se IDENTITY è un utente di Windows, il segreto può essere la password. Il segreto viene crittografato con la chiave master del servizio. Se la chiave master del servizio viene rigenerata, il segreto viene ricrittografato con la nuova chiave master del servizio.

Dopo aver creato una credenziale è possibile mapparla a un account di accesso di SQL Server tramite CREATE LOGIN o ALTER LOGIN. Un account di accesso di SQL Server può essere mappato a una sola credenziale, mentre una credenziale può essere mappata a più account di accesso di SQL Server. Per ulteriori informazioni, vedere Credenziali (Motore di database).

Le informazioni sulle credenziali sono visibili nella vista del catalogo sys.credentials.

Se non è presente una credenziale mappata a un account accesso per il provider, viene utilizzata la credenziale mappata all'account del servizio SQL Server.

A un account di accesso possono essere mappate più credenziali, a condizione che vengano utilizzate con provider distinti. È possibile mappare una sola credenziale per provider per ogni account di accesso. La stessa credenziale può essere mappata ad altri account di accesso.

Autorizzazioni

È richiesta l'autorizzazione ALTER ANY CREDENTIAL.

Esempi

Nell'esempio seguente viene creata la credenziale denominata AlterEgo. Tale credenziale contiene l'utente di Windows Mary5 e una password.

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

Nell'esempio seguente viene utilizzato un account creato in precedenza denominato User1OnEKM in un modulo EKM tramite gli strumenti di gestione di EKM, con un tipo di account di base e una password. Tramite l'account sysadmin nel server viene creata una credenziale utilizzata per connettersi all'account EKM, che viene assegnata all'account SQL ServerUser1:

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;
/* Modify the login to assign a non cryptographic provider credential */ 
ALTER LOGIN User1
WITH CREDENTIAL = AlterEgo;
GO