Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Managed Instance
Dodaje lub odrzuca poświadczenia zawierające hasło potrzebne do otwarcia klucza głównego bazy danych (DMK).
Transact-SQL konwencje składni
Składnia
sp_control_dbmasterkey_password @db_name = 'db_name'
, @password = 'password'
, @action = { N'add' | N'drop' }
Argumenty
Ważny
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
@db_name = N'db_name'
Określa nazwę bazy danych skojarzonej z tym poświadczeniu. Nie można być systemową bazą danych. @db_name to nvarchar.
@password = N'password'
Określa hasło zestawu DMK. @password to nvarchar.
@action = { N'add' | N'drop' }
Określa akcję poświadczenia dla określonej bazy danych w magazynie poświadczeń. Wartość przekazana do @action to nvarchar.
Akcja | Opis |
---|---|
add |
Określa, że poświadczenia dla określonej bazy danych zostaną dodane do magazynu poświadczeń. Poświadczenie zawiera hasło klucza DMK. |
drop |
Określa, że poświadczenie dla określonej bazy danych zostanie usunięte z magazynu poświadczeń. |
Uwagi
Gdy program SQL Server potrzebuje klucza DMK do odszyfrowania lub zaszyfrowania klucza, program SQL Server próbuje odszyfrować klucz DMK przy użyciu klucza głównego usługi (SMK) wystąpienia. Jeśli odszyfrowywanie zakończy się niepowodzeniem, program SQL Server przeszukuje magazyn poświadczeń dla poświadczeń, które mają ten sam identyfikator GUID rodziny co baza danych, dla której potrzebuje klucza. Następnie program SQL Server próbuje odszyfrować klucz DMK z każdym pasującym poświadczeniem, dopóki odszyfrowanie nie powiedzie się lub nie będzie więcej poświadczeń.
Ostrożność
Nie należy tworzyć poświadczeń klucza głównego dla bazy danych, która musi być niedostępna do sa
i innych podmiotów zabezpieczeń serwera o wysokim poziomie uprawnień. Bazę danych można skonfigurować tak, aby jej hierarchia kluczy nie mogła zostać odszyfrowana przez protokół SMK. Ta opcja jest obsługiwana jako ochrona szczegółowa dla baz danych zawierających zaszyfrowane informacje, które nie powinny być dostępne dla sa
lub innych podmiotów z wysokimi uprawnieniami serwera. Utworzenie poświadczeń dla takiej bazy danych powoduje usunięcie tej ochrony w głębi systemu, umożliwiając sa
i inne podmioty z wysokimi uprawnieniami serwera w celu odszyfrowania bazy danych.
Poświadczenia tworzone przy użyciu sp_control_dbmasterkey_password
są widoczne w widoku wykazu sys.master_key_passwords. Nazwy poświadczeń utworzonych dla zestawów DMK mają następujący format: ##DBMKEY_<database_family_guid>_<random_password_guid>##
. Hasło jest przechowywane jako wpis tajny poświadczeń. Każde hasło dodane do magazynu poświadczeń ma pasujący wiersz w sys.credentials
.
Nie można użyć sp_control_dbmasterkey_password
do utworzenia poświadczeń dla następujących systemowych baz danych: master
, model
, msdb
lub tempdb
.
sp_control_dbmasterkey_password
nie sprawdza, czy hasło może otworzyć klucz DMK określonej bazy danych.
Jeśli określisz hasło, które jest już przechowywane w poświadczeniu dla określonej bazy danych, sp_control_dbmasterkey_password
zakończy się niepowodzeniem.
Dwie bazy danych z różnych wystąpień serwera mogą współdzielić ten sam identyfikator GUID rodziny. W takim przypadku bazy danych współdzielą te same rekordy DMK w magazynie poświadczeń.
Parametry przekazane do sp_control_dbmasterkey_password
nie są wyświetlane w śladach.
Gdy używasz poświadczeń, które zostały dodane przy użyciu sp_control_dbmasterkey_password
do otwierania zestawu DMK, klucz DMK jest ponownie szyfrowany przez protokół SMK. Jeśli baza danych jest w trybie tylko do odczytu, operacja ponownego szyfrowania zakończy się niepowodzeniem, a klucz DMK pozostanie niezaszyfrowany. Aby uzyskać kolejny dostęp do zestawu DMK, należy użyć instrukcji OPEN MASTER KEY
i hasła. Aby uniknąć używania hasła, utwórz poświadczenie przed przeniesieniem bazy danych do trybu tylko do odczytu.
Potencjalny problem ze zgodnością z poprzednimi wersjami
Obecnie procedura składowana nie sprawdza, czy klucz istnieje. Ta funkcja jest dozwolona w celu zapewnienia zgodności z poprzednimi wersjami, ale wyświetla ostrzeżenie. To zachowanie jest przestarzałe. W przyszłej wersji klucz musi istnieć, a hasło używane w procedurze składowanej sp_control_dbmasterkey_password
musi być tym samym hasłem co jedno z haseł używanych do szyfrowania klucza DMK.
Uprawnienia
Wymaga członkostwa w sysadmin stałej roli serwera lub wykonywania uprawnień bezpośrednio w tej procedurze składowanej.
Przykłady
Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2022
lub AdventureWorksDW2022
, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.
A. Tworzenie poświadczeń dla klucza głównego AdventureWorks
Poniższy przykład tworzy poświadczenie dla zestawu DMK AdventureWorks2022
i zapisuje hasło klucza głównego jako wpis tajny w poświadczeniu. Ponieważ wszystkie parametry przekazywane do sp_control_dbmasterkey_password
muszą być typu danych nvarchar, ciągi tekstowe są konwertowane za pomocą operatora rzutowania N
.
EXEC sp_control_dbmasterkey_password
@db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4',
@action = N'add';
GO
B. Usuwanie poświadczeń dla klucza głównego bazy danych
Poniższy przykład usuwa poświadczenia utworzone w przykładzie A. Wszystkie parametry są wymagane, w tym hasło.
EXEC sp_control_dbmasterkey_password
@db_name = N'AdventureWorks2022',
@password = N'sdfjlkj#mM00sdfdsf98093258jJlfdk4',
@action = N'drop';
GO