Udostępnij za pośrednictwem


CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Baza danych SQL w usłudze Microsoft Fabric (wersja zapoznawcza)

Tworzy poświadczenie bazy danych. Poświadczenie bazy danych nie jest mapowane na nazwę logowania serwera lub użytkownika bazy danych. Poświadczenie jest używane przez bazę danych do uzyskiwania dostępu do lokalizacji zewnętrznej za każdym razem, gdy baza danych wykonuje operację, która wymaga dostępu.

Transact-SQL konwencje składni

Syntax

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]
[ ; ]

Arguments

credential_name

Określa nazwę tworzonego poświadczenia o zakresie bazy danych. credential_name nie można rozpocząć od znaku numeru (#). Poświadczenia systemowe zaczynają się od ##. Maksymalna długość credential_name wynosi 128 znaków.

IDENTITY = 'identity_name'

Określa nazwę konta, które ma być używane podczas nawiązywania połączenia poza serwerem.

  • Aby zaimportować plik z usługi Azure Blob Storage lub Azure Data Lake Storage przy użyciu klucza współużytkowanego, nazwa tożsamości musi mieć wartość SHARED ACCESS SIGNATURE. Aby uzyskać więcej informacji na temat sygnatur dostępu współdzielonego, zobacz Używanie sygnatur dostępu współdzielonego (SAS). Użyj IDENTITY = SHARED ACCESS SIGNATURE tylko dla sygnatury dostępu współdzielonego.
  • Aby zaimportować plik z usługi Azure Blob Storage przy użyciu tożsamości zarządzanej, nazwa tożsamości musi mieć wartość MANAGED IDENTITY.
  • W przypadku korzystania z protokołu Kerberos (Windows Active Directory lub MIT KDC) nie należy używać nazwy domeny w argumencie IDENTITY . Powinna to być tylko nazwa konta.
  • W wystąpieniu programu SQL Server, jeśli utworzenie poświadczeń w zakresie bazy danych przy użyciu klucza dostępu do magazynu używanego SECRETjako , IDENTITY jest ignorowane.
  • WITH IDENTITY nie jest wymagane, jeśli kontener w usłudze Azure Blob Storage jest włączony na potrzeby dostępu anonimowego. Aby zapoznać się z przykładem wykonywania zapytań dotyczących usługi Azure Blob Storage za pomocą OPENROWSET BULKpolecenia , zobacz Importowanie do tabeli z pliku przechowywanego w usłudze Azure Blob Storage.
  • W programie SQL Server 2022 (16.x) i nowszych wersjach łącznik REST-API zastępuje usługę HADOOP. W przypadku usług Azure Blob Storage i Azure Data Lake Gen 2 jedyną obsługiwaną metodą uwierzytelniania jest sygnatura dostępu współdzielonego. Aby uzyskać więcej informacji, zobacz CREATE EXTERNAL DATA SOURCE (Transact-SQL).
  • W programie SQL Server 2019 (15.x) jedynym zewnętrznym źródłem danych polyBase obsługującym uwierzytelnianie Kerberos jest usługa Hadoop. Wszystkie inne zewnętrzne źródła danych (SQL Server, Oracle, Teradata, MongoDB, generic ODBC) obsługują tylko uwierzytelnianie podstawowe.
  • Pule SQL w usłudze Azure Synapse Analytics zawierają następujące uwagi:
    • Aby załadować dane do usługi Azure Synapse Analytics, można użyć dowolnej prawidłowej wartości dla elementu IDENTITY.
    • W bezserwerowej puli SQL usługi Azure Synapse Analytics poświadczenia o zakresie bazy danych mogą określać tożsamość zarządzaną obszaru roboczego, nazwę główną usługi lub token sygnatury dostępu współdzielonego (SAS). Dostęp za pośrednictwem tożsamości użytkownika, włączonej przez uwierzytelnianie przekazywane firmy Microsoft, jest również możliwy przy użyciu poświadczeń o zakresie bazy danych, ponieważ jest to anonimowy dostęp do publicznie dostępnego magazynu. Aby uzyskać więcej informacji, zobacz Obsługiwane typy autoryzacji magazynu.
    • W dedykowanej puli SQL usługi Azure Synapse Analytics poświadczenia o zakresie bazy danych mogą określać token sygnatury dostępu współdzielonego (SAS), niestandardową tożsamość aplikacji, tożsamość zarządzaną obszaru roboczego lub klucz dostępu do magazynu.
Authentication T-SQL Supported Notes
Sygnatura dostępu współdzielonego CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022, Azure SQL Managed Instance, Azure Synapse Analytics, Azure SQL Database
Managed Identity CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Azure SQL Database, tożsamość zarządzana SQL
Uwierzytelnianie przekazywane przez firmę Microsoft Entra za pośrednictwem tożsamości użytkownika CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database W usłudze Azure Synapse zobacz Microsoft Entra Connect: uwierzytelnianie przekazywane
Uwierzytelnianie podstawowe klucza dostępu S3 CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022
Kerberos (Windows Active Directory lub MIT KDC) lub dla źródeł danych ODBC CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; Wersje sql tylko w usłudze Hadoop

SECRET = 'secret'

Określa wpis tajny wymagany do uwierzytelniania wychodzącego. SECRET program jest wymagany do zaimportowania pliku z usługi Azure Blob Storage. Aby załadować usługę Azure Blob Storage do usługi Azure Synapse Analytics lub parallel Data Warehouse, wpis tajny musi być kluczem usługi Azure Storage.

Warning

Wartość klucza sygnatury dostępu współdzielonego może zaczynać się od "?". (znak zapytania). Jeśli używasz klucza sygnatury dostępu współdzielonego, musisz usunąć wiodący element "?". W przeciwnym razie twoje wysiłki mogą zostać zablokowane.

Remarks

Poświadczenie o zakresie bazy danych 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.

Aby chronić poufne informacje wewnątrz poświadczeń o zakresie bazy danych, wymagany jest klucz główny bazy danych (DMK). Klucz DMK to klucz symetryczny, który szyfruje wpis tajny w poświadczeniu o zakresie bazy danych. Baza danych musi mieć klucz DMK, aby można było utworzyć poświadczenia o określonym zakresie bazy danych. Klucz DMK powinien być szyfrowany przy użyciu silnego hasła. Usługa Azure SQL Database utworzy zestaw DMK z silnym, losowo wybranym hasłem w ramach tworzenia poświadczeń o określonym zakresie bazy danych lub w ramach tworzenia inspekcji serwera. Użytkownicy nie mogą utworzyć zestawu DMK w logicznej master bazie danych. Hasło klucza głównego jest nieznane firmie Microsoft i nie można go odnaleźć po utworzeniu. Z tego powodu zaleca się utworzenie zestawu DMK przed utworzeniem poświadczeń o określonym zakresie bazy danych. Aby uzyskać więcej informacji, zobacz CREATE MASTER KEY (Transact-SQL).

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 (SMK). Jeśli klucz SMK zostanie ponownie wygenerowany, wpis tajny zostanie ponownie zaszyfrowany przy użyciu nowego klucza SMK.

Podczas udzielania uprawnień do sygnatur dostępu współdzielonego (SAS) do użycia z zewnętrzną tabelą polyBase wybierz zarówno kontener , jak i obiekt jako dozwolone typy zasobów. Jeśli nie zostanie udzielona, podczas próby uzyskania dostępu do tabeli zewnętrznej może wystąpić błąd 16535 lub 16561.

Informacje o poświadczeniach o zakresie bazy danych są widoczne w widoku katalogu sys.database_scoped_credentials .

Oto niektóre aplikacje poświadczeń o zakresie bazy danych:

Permissions

Wymaga uprawnień CONTROL w bazie danych.

Examples

A. Tworzenie poświadczeń o zakresie bazy danych dla aplikacji

Poniższy przykład tworzy poświadczenie o zakresie bazy danych o nazwie AppCred. Poświadczenie o zakresie bazy danych zawiera użytkownika Mary5 systemu Windows i hasło.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';

B. Tworzenie poświadczeń o zakresie bazy danych dla sygnatury dostępu współdzielonego

Poniższy przykład tworzy poświadczenie o zakresie bazy danych, które może służyć do utworzenia zewnętrznego źródła danych, które może wykonywać operacje zbiorcze, takie jak BULK INSERT (Transact-SQL) i OPENROWSET (Transact-SQL).

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

C. Tworzenie poświadczeń o zakresie bazy danych dla łączności polyBase z usługą Azure Data Lake Store

Poniższy przykład tworzy poświadczenie o zakresie bazy danych, które można użyć do utworzenia zewnętrznego źródła danych, które może być używane przez program PolyBase w usłudze Azure Synapse Analytics.

Usługa Azure Data Lake Store używa aplikacji Firmy Microsoft Entra do uwierzytelniania usługi.

Utwórz aplikację Firmy Microsoft Entra i udokumentuj client_id, OAuth_2.0_Token_EndPoint i Klucz przed podjęciem próby utworzenia poświadczeń o zakresie bazy danych.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
    IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
    SECRET = '<key>'
;