Sdílet prostřednictvím


VYTVOŘIT HLAVNÍ KLÍČ (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vytvoří v databázi hlavní klíč databáze.

Important

  • Hlavní klíč byste měli zálohovat pomocí hlavního klíče ZÁLOHOVÁNÍ a uložit zálohu do zabezpečeného umístění mimo lokalitu.
  • Na SQL Serveru byste také měli zálohovat hlavní klíč služby pomocí klíče MASTER SLUŽBY BACKUP a uložit zálohu do zabezpečeného umístění mimo lokalitu.

Transact-SQL konvence syntaxe

Syntax

CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]

Arguments

HESLO ='heslo'

Heslo, které se používá k šifrování hlavního klíče v databázi. Heslo musí splňovat požadavky na zásady hesel systému Windows počítače, na kterém je spuštěna instance SYSTÉMU SQL Server. Heslo je volitelné ve službě SQL Database a Azure Synapse Analytics.

Remarks

Hlavní klíč databáze je symetrický klíč, který slouží k ochraně privátních klíčů certifikátů a asymetrických klíčů, které jsou přítomné v databázi a tajných klíčích v přihlašovacích údajích v oboru databáze. Po vytvoření se hlavní klíč zašifruje pomocí algoritmu AES_256 a hesla zadaného uživatelem. V systému SQL Server 2008 (10.0.x) a SQL Server 2008 R2 (10.50.x) se používá algoritmus Triple DES. Chcete-li povolit automatické dešifrování hlavního klíče, je kopie klíče zašifrována pomocí hlavního klíče služby a uložena v databázi i v master. Kopie uložená v master se obvykle bezobslužně aktualizuje při každé změně hlavního klíče. Toto výchozí nastavení lze změnit pomocí možnosti DROP ENCRYPTION BY SERVICE MASTER KEY příkazu ALTER MASTER KEY. Hlavní klíč, který není šifrovaný hlavním klíčem služby, musí být otevřen pomocí příkazu OPEN MASTER KEY a hesla.

Sloupec is_master_key_encrypted_by_serversys.databases zobrazení katalogu v master indikuje, zda je hlavní klíč databáze šifrovaný hlavním klíčem služby.

Informace o hlavním klíči databáze jsou viditelné v sys.symmetric_keys zobrazení katalogu.

U SQL Serveru a paralelního datového skladu je hlavní klíč obvykle chráněn hlavním klíčem služby a alespoň jedním heslem. V případě fyzického přesunu databáze na jiný server (přesouvání protokolů, obnovení zálohy atd.) bude databáze obsahovat kopii hlavního klíče zašifrovaného původním klíčem hlavního serveru (pokud toto šifrování nebylo explicitně odebráno pomocí ALTER MASTER KEY DDL) a kopie zašifrovaná jednotlivými hesly zadanými během obou CREATE MASTER KEY operací nebo následných ALTER MASTER KEY DDL operací. Aby bylo možné obnovit hlavní klíč a všechna data zašifrovaná pomocí hlavního klíče jako kořenového klíče v hierarchii klíčů po přesunutí databáze, uživatel buď použije OPEN MASTER KEY příkaz pomocí jednoho z hesel použitých k ochraně hlavního klíče, obnovení zálohy hlavního klíče nebo obnovení zálohy původního hlavního klíče služby na novém serveru.

U SLUŽBY SQL Database a Azure Synapse Analytics se ochrana heslem nepovažuje za bezpečnostní mechanismus, který zabrání scénáři ztráty dat v situacích, kdy se databáze může přesunout z jednoho serveru do druhého, protože ochrana hlavního klíče hlavního klíče na hlavním klíči je spravovaná platformou Microsoft Azure. Proto je heslo hlavního klíče volitelné ve službě SQL Database a Azure Synapse Analytics.

Pro SLUŽBU SQL Database je možné hlavní klíč databáze vytvořit automaticky, aby bylo možné chránit tajné kódy v přihlašovacích údajích v oboru databáze používané k auditování a dalším funkcím, které vyžadují, aby se přihlašovací údaje s oborem databáze ověřovaly u externího prostředku, jako je účet Azure Storage. Hlavní klíč se vytvoří se silným náhodně vybraným heslem. Uživatelé nemůžou vytvořit hlavní klíč v logické master databázi. Heslo hlavního klíče je microsoftu neznámé a po vytvoření není zjistitelné. Z tohoto důvodu doporučujeme vytvořit hlavní klíč databáze před vytvořením přihlašovacích údajů s vymezeným oborem databáze.

Hlavní klíč služby a hlavní klíče databáze jsou chráněné pomocí algoritmu AES-256.

Permissions

Vyžaduje oprávnění CONTROL k databázi.

Examples

Pomocí následujícího příkladu vytvořte hlavní klíč databáze v databázi. Klíč je šifrovaný pomocí hesla.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
GO

Ověřte přítomnost nového klíče: ##MS_DatabaseMasterKey##

SELECT * FROM sys.symmetric_keys;
GO