CREATE CREDENTIAL (Transact-SQL)
Dotyczy:programu SQL Server
Azure 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 zewnętrznych platform danych, takich jak 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 |
Azure Key Vault | <keyvaultname>.vault.azure.net |
przykład H |
Zarządzany sprzętowy moduł zabezpieczeń usługi Azure Key Vault (HSM) | <akv-name>.managedhsm.azure.net |
przykład H |
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
Aby zapoznać się z przykładem tworzenia poświadczeń przy użyciu tożsamości zarządzanej dla programu SQL Server na maszynie wirtualnej platformy Azure, zobacz Przykładowe G i Przykład H. Tożsamość zarządzana na poziomie serwera nie jest obsługiwana w systemie Linux.
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
G. Tworzenie poświadczeń w celu uzyskania dostępu do usługi Azure Blob Storage przy użyciu tożsamości zarządzanej
Począwszy od programu SQL Server 2022 CU17, można użyć tożsamości zarządzanych z poświadczeniami programu SQL Server, aby utworzyć kopię zapasową i przywrócić program SQL Server w bazach danych maszyn wirtualnych platformy Azure z usługi Azure Blob Storage. Aby uzyskać więcej informacji, zobacz Tworzenie kopii zapasowej i przywracanie do adresu URL przy użyciu tożsamości zarządzanych.
Aby utworzyć poświadczenia z tożsamością zarządzaną do użycia z operacjami BACKUP
i RESTORE
, użyj następującego przykładu:
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<container-name>]
WITH IDENTITY = 'Managed Identity';
flaga śledzenia 4675 może służyć do sprawdzania poświadczeń utworzonych przy użyciu tożsamości zarządzanej. Jeśli instrukcja CREATE CREDENTIAL
została wykonana bez włączonej flagi śledzenia 4675, nie zostanie wyświetlony komunikat o błędzie, jeśli podstawowa tożsamość zarządzana nie jest ustawiona dla serwera. Aby rozwiązać ten scenariusz, po włączeniu flagi śledzenia należy je usunąć i ponownie utworzyć ponownie.
H. Tworzenie poświadczeń tożsamości zarządzanej na potrzeby rozszerzonego zarządzania kluczami za pomocą usługi Azure Key Vault
Począwszy od programu SQL Server 2022 CU17, można również używać tożsamości zarządzanych w programie SQL Server na maszynach wirtualnych platformy Azure na potrzeby rozszerzonego zarządzania kluczami (EKM) za pomocą usługi Azure Key Vault (AKV). Aby uzyskać więcej informacji, zobacz obsługa tożsamości zarządzanej na potrzeby rozszerzalnego zarządzania kluczami za pomocą usługi Azure Key Vault.
Aby utworzyć poświadczenia tożsamości zarządzanej do użycia z usługą EKM z usługą AKV, użyj następującego przykładu:
CREATE CREDENTIAL [<akv-name>.vault.azure.net]
WITH IDENTITY = 'Managed Identity'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov
Na przykład:
CREATE CREDENTIAL [contoso.vault.azure.net] -- for Azure Key Vault
WITH IDENTITY = 'Managed Identity'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov
CREATE CREDENTIAL [contoso.managedhsm.azure.net] -- for Azure Key Vault Managed HSM
WITH IDENTITY = 'Managed Identity'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov
flaga śledzenia 4675 może służyć do sprawdzania poświadczeń utworzonych przy użyciu tożsamości zarządzanej. Jeśli instrukcja CREATE CREDENTIAL
została wykonana bez włączonej flagi śledzenia 4675, nie zostanie wyświetlony komunikat o błędzie, jeśli podstawowa tożsamość zarządzana nie jest ustawiona dla serwera. Aby rozwiązać ten scenariusz, po włączeniu flagi śledzenia należy je usunąć i ponownie utworzyć ponownie.
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