CREATE CREDENTIAL (Transact-SQL)
Dotyczy:programu SQL ServerAzure SQL Managed Instance
Tworzy poświadczenia na poziomie serwera. Poświadczenie to rekord zawierający informacje uwierzytelniania wymagane do nawiązania połączenia z zasobem poza programem SQL Server. Większość poświadczeń obejmuje użytkownika i hasło systemu Windows. Na przykład zapisanie kopii zapasowej bazy danych w określonej lokalizacji może wymagać programu SQL Server podania specjalnych poświadczeń w celu uzyskania dostępu do tej lokalizacji. Aby uzyskać więcej informacji, zobacz Credentials (Aparat bazy danych).
Nuta
Aby poświadczenie na poziomie bazy danych było używane CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Utwórz poświadczenie na poziomie serwera przy użyciu CREATE CREDENTIAL
, gdy musisz użyć tego samego poświadczenia dla wielu baz danych na serwerze.
- Utwórz poświadczenie o zakresie bazy danych przy użyciu
CREATE DATABASE SCOPED CREDENTIAL
, aby zwiększyć przenośną bazę danych. Po przeniesieniu bazy danych na nowy serwer poświadczenie o określonym zakresie bazy danych zostanie przeniesione wraz z nim. - Użyj poświadczeń o zakresie bazy danych w usłudze SQL Database.
- Użyj poświadczeń o zakresie bazy danych z funkcjami wirtualizacji danych PolyBase i wirtualizacji danych usługi Azure SQL Managed Instance.
Transact-SQL konwencje składni
Składnia
CREATE CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
[ , SECRET = 'secret' ]
[ FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name ]
Argumenty
credential_name
Określa nazwę tworzonego poświadczenia. credential_name nie można rozpocząć od znaku numeru (#). Poświadczenia systemowe zaczynają się od pliku ##.
Ważny
W przypadku korzystania z sygnatury dostępu współdzielonego (SAS) ta nazwa musi być zgodna ze ścieżką kontenera, zacznij od protokołu HTTPS i nie może zawierać ukośnika. Zobacz przykładoweD .
W przypadku używania kopii zapasowej/przywracania przy użyciu elementu do zewnętrznych platform danych, takich jak usługa Azure Blob Storage lub platformy zgodne z usługą S3, poniższa tabela zawiera typowe ścieżki:
Zewnętrzne źródło danych | Ścieżka lokalizacji | Przykład |
---|---|---|
Azure Blob Storage (wersja 2) | https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername> |
przykładowe D. |
Magazyn obiektów zgodny ze standardem S3 | - Magazyn zgodny z S3: s3://<server_name>:<port>/ - AWS S3: s3://<bucket_name>.S3.<region>.amazonaws.com[:port]/<folder> lub s3://s3.<region>.amazonaws.com[:port]/<bucket_name>/<folder> |
przykład F. |
IDENTITY =' identity_name
Określa nazwę konta, które ma być używane podczas nawiązywania połączenia poza serwerem. Gdy poświadczenia są używane do uzyskiwania dostępu do usługi Azure Key Vault, IDENTITY jest nazwą magazynu kluczy. Zobacz przykładowy kod C poniżej. Gdy poświadczenie używa sygnatury dostępu współdzielonego (SAS), IDENTITY jest SYGNATURA DOSTĘPU WSPÓŁDZIELONEGO. Zobacz przykład D poniżej.
Ważny
Usługa Azure SQL Database obsługuje tylko usługi Azure Key Vault i tożsamości sygnatury dostępu współdzielonego. Tożsamości użytkowników systemu Windows nie są obsługiwane.
SECRET ='wpisu tajnego'
Określa wpis tajny wymagany do uwierzytelniania wychodzącego.
Gdy poświadczenia są używane do uzyskiwania dostępu do usługi Azure Key Vault, argument SECRET
DLA DOSTAWCY KRYPTOGRAFICZNEGO cryptographic_provider_name
Określa nazwę dostawcy zarządzania kluczami przedsiębiorstwa (EKM). Aby uzyskać więcej informacji na temat zarządzania kluczami, zobacz Extensible Key Management (EKM).
Uwagi
Gdy tożsamość jest użytkownikiem systemu Windows, wpis tajny może być hasłem. Wpis tajny jest szyfrowany przy użyciu klucza głównego usługi. Jeśli klucz główny usługi zostanie ponownie wygenerowany, wpis tajny zostanie ponownie zaszyfrowany przy użyciu nowego klucza głównego usługi.
Po utworzeniu poświadczeń można mapować je na identyfikator logowania programu SQL Server przy użyciu CREATE LOGIN lub ALTER LOGIN. Identyfikator logowania programu SQL Server można zamapować tylko na jedno poświadczenia, ale jedno poświadczenie można zamapować na wiele logowań programu SQL Server. Aby uzyskać więcej informacji, zobacz Credentials (Aparat bazy danych). Poświadczenia na poziomie serwera można zamapować tylko na dane logowania, a nie na użytkownika bazy danych.
Informacje o poświadczeniach są widoczne w widoku katalogu sys.credentials.
Jeśli dostawca nie ma zamapowanego poświadczenia logowania, używane jest poświadczenie mapowane na konto usługi programu SQL Server.
Identyfikator logowania może mieć wiele poświadczeń zamapowanych na nie tak długo, jak są one używane z charakterystycznymi dostawcami. Na logowanie musi istnieć tylko jedno zamapowane poświadczenia na dostawcę. To samo poświadczenie można mapować na inne identyfikatory logowania.
Uprawnienia
Wymaga UPRAWNIENIA ALTER ANY CREDENTIAL.
Przykłady
A. Tworzenie poświadczeń dla tożsamości systemu Windows
Poniższy przykład tworzy poświadczenie o nazwie AlterEgo
. Poświadczenie zawiera Mary5
użytkownika systemu Windows i hasło.
CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'Mary5',
SECRET = '<EnterStrongPasswordHere>';
GO
B. Tworzenie poświadczeń dla EKM
W poniższym przykładzie użyto wcześniej utworzonego konta o nazwie User1OnEKM
w module EKM za pomocą narzędzi do zarządzania EKM z podstawowym typem konta i hasłem. Konto sysadmin na serwerze tworzy poświadczenia używane do nawiązywania połączenia z kontem EKM i przypisuje je do konta programu User1
SQL Server:
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. Tworzenie poświadczeń dla EKM przy użyciu usługi Azure Key Vault
Poniższy przykład tworzy poświadczenia programu SQL Server dla aparatu bazy danych do użycia podczas uzyskiwania dostępu do usługi Azure Key Vault przy użyciu łącznika SQL Server Connector dla usługi Microsoft Azure Key Vault. Pełny przykład użycia łącznika programu SQL Server można znaleźć w temacie Extensible Key Management Using Azure Key Vault (SQL Server).
Ważny
Argument IDENTITYCREATE CREDENTIAL wymaga nazwy magazynu kluczy. Argument
W poniższym przykładzie identyfikator klienta (00001111-aaaa-2222-bbbb-3333cccc4444
) jest pozbawiony łączników i wprowadzony jako ciąg 11111111222233334444555555555555
, a Tajny jest reprezentowany przez ciąg SECRET_DBEngine
.
USE master;
CREATE CREDENTIAL Azure_EKM_TDE_cred
WITH IDENTITY = 'ContosoKeyVault',
SECRET = '11111111222233334444555555555555SECRET_DBEngine'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;
Poniższy przykład tworzy te same poświadczenia przy użyciu zmiennych dla identyfikatora 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. Tworzenie poświadczeń przy użyciu tokenu SAS
Dotyczy: SQL Server 2014 (12.x) do bieżącej wersji i usługi Azure SQL Managed Instance.
Poniższy przykład tworzy poświadczenia sygnatury dostępu współdzielonego przy użyciu tokenu SAS. Aby zapoznać się z samouczkiem dotyczącym tworzenia przechowywanych zasad dostępu i sygnatury dostępu współdzielonego w kontenerze platformy Azure, a następnie tworzenia poświadczeń przy użyciu sygnatury dostępu współdzielonego, zobacz Samouczek: używanie usługi Microsoft Azure Blob Storage z bazami danych programu SQL Server.
Ważny
Argument CREDENTIAL NAME wymaga, aby nazwa odpowiadała ścieżce kontenera, zaczynać się od https i nie zawierać ukośnika końcowego. Argument IDENTITY
Wpis tajny sygnatury dostępu współdzielonego nie powinien mieć wiodących ?.
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. Tworzenie poświadczeń dla tożsamości zarządzanej
Poniższy przykład tworzy poświadczenia reprezentujące tożsamość zarządzaną usługi Azure SQL lub Azure Synapse. Hasło i wpis tajny nie mają zastosowania w tym przypadku.
CREATE CREDENTIAL ServiceIdentity WITH IDENTITY = 'Managed Identity';
GO
F. Tworzenie poświadczeń na potrzeby tworzenia kopii zapasowej/przywracania do magazynu zgodnego z usługą S3
Dotyczy: SQL Server 2022 (16.x) i nowsze wersje
Otwarty standard zgodny ze standardem S3 zapewnia ścieżki magazynu i szczegóły, które mogą się różnić w zależności od platformy magazynu. Aby uzyskać więcej informacji, zobacz tworzenie kopii zapasowej programu SQL Server pod adresem URL dla magazynu obiektów zgodnego z usługą S3.
W przypadku większości magazynu zgodnego z usługą S3 ten przykład tworzy poświadczenia na poziomie serwera i wykonuje 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;
Jednak usługa AWS S3 obsługuje dwa różne standardy adresu URL.
-
S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>
(ustawienie domyślne) S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
Istnieje wiele metod pomyślnego utworzenia poświadczeń dla usługi AWS S3:
Podaj nazwę zasobnika i ścieżkę i region w nazwie poświadczeń.
-- 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
Lub
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
Możesz też podać nazwę zasobnika i ścieżkę w nazwie poświadczeń, ale sparametryzować region w każdym
BACKUP
/RESTORE
polecenia. Użyj ciągu regionu specyficznego dla usługi S3 wBACKUP_OPTIONS
iRESTORE_OPTIONS
, na przykład'{"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
Powiązana zawartość
- poświadczeń
(aparatu bazy danych) - ALTER CREDENTIAL (Transact-SQL)
- DROP CREDENTIAL (Transact-SQL)
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- ALTER LOGIN (Transact-SQL)
- sys.credentials (Transact-SQL)
- Lekcja 2. Tworzenie poświadczeń programu SQL Server przy użyciu sygnatury dostępu współdzielonego
- sygnatury dostępu współdzielonego