Sdílet prostřednictvím


Správa digestů

platí pro: SQL Server 2022 (16.x) azure SQL Databaseazure SQL Managed Instance

Databázové souhrny

Hash hodnota nejnovějšího bloku v databázovém registru se nazývá souhrn databáze . Představuje stav všech tabulek registru v databázi v době, kdy se blok vygeneroval. Generování hash souhrnu databáze je efektivní, protože zahrnuje výpočet pouze hash bloků, které byly nedávno přidány.

Databázové výpisy mohou být generovány buď automaticky systémem, nebo ručně uživatelem. Později je můžete použít k ověření integrity databáze.

Databázové rekapitulace se generují ve formě dokumentu JSON, který obsahuje hash nejnovějšího bloku spolu s metadaty pro ID bloku. Metadata zahrnují čas vygenerování digestu a časové razítko poslední transakce v tomto bloku.

Proces ověřování a integrita databáze závisí na integritě vstupních digestů. Za tímto účelem musí být hodnoty hash databáze extrahované z databáze uloženy v důvěryhodném úložišti, se kterým nemůžou manipulovat uživatelé s vysokými oprávněními nebo útočníci databáze.

Automatické generování a ukládání shrnutí databáze

Poznámka

Automatické generování a ukládání hodnot hash databáze v SQL Serveru podporuje pouze účty Azure Storage.

Registr se integruje s funkcí neměnného úložiště služby Azure Blob Storage a s Azure Důvěrným Registrem. Tato integrace poskytuje zabezpečené služby úložiště v Azure, které pomáhají chránit souhrny databáze před možnými manipulacemi. Tato integrace poskytuje uživatelům jednoduchý a nákladově efektivní způsob, jak automatizovat správu digestů, aniž by se museli starat o jejich dostupnost a geografickou replikaci. Azure Confidential Ledger má silnější záruku integrity pro zákazníky, kteří by se mohli zabývat přístupem privilegovaných správců k přehledu. Tato tabulka porovnává neměnnou funkci úložiště služby Azure Blob Storage s důvěrným registrem Azure.

Automatické generování a ukládání hodnot hash databáze můžete nakonfigurovat prostřednictvím webu Azure Portal, PowerShellu nebo Azure CLI. Další informace naleznete v tématu Povolení automatického ukládání souhrnů. Při konfiguraci automatického generování a úložiště se shrnutí databáze generují v předdefinovaných intervalech 30 sekund a nahrávají do vybrané úložné služby. Pokud v systému v 30sekundovém intervalu nedojde k žádným transakcím, souhrn databáze nebude vygenerován a nahrán. Tento mechanismus zajišťuje, aby se vygenerovaly přehledy databáze pouze v případě, že se data v databázi aktualizovala. Pokud je koncovým bodem Azure Blob Storage, logický server pro službu Azure SQL Database nebo Azure SQL Managed Instance vytvoří nový kontejner s názvem sqldbledgerdigests a používá vzor pojmenování, například: ServerName/DatabaseName/CreationTime. Čas vytvoření je nutný, protože databázi se stejným názvem lze vynechat a znovu vytvořit nebo obnovit, což umožňuje různé inkarnace databáze pod stejným názvem. Další informace najdete v tématu Důležité informace o správě digest.

Poznámka

Pro SQL Server je potřeba kontejner vytvořit ručně uživatelem.

Zásady neměnnosti účtu služby Azure Storage

Pokud pro ukládání hodnot hash databáze používáte účet služby Azure Storage, nakonfigurujte zásady neměnnosti v kontejneru po zřízení, aby se zajistilo, že jsou hodnoty hash databáze chráněné před manipulací. Ujistěte se, že zásada neměnnosti umožňuje zapisovat chráněné přidávací zápisy do doplňovacích objektů blob a že je zásada uzamčená.

Oprávnění účtu služby Azure Storage

Pokud používáte Azure SQL Database nebo Azure SQL Managed Instance, ujistěte se, že váš logický server nebo spravovaná instance (systémová identita) má dostatečná oprávnění řízení přístupu na základě role (RBAC) k zápisu souborů digest tím, že ji přidáte do role Storage Blob Data Contributor . Pokud používáte aktivní geografickou replikaci nebo skupiny automatického převzetí služeb při selhání, ujistěte se, že sekundární repliky mají stejné oprávnění RBAC k účtu Azure Storage.

Pokud používáte SQL Server, musíte v kontejneru digest vytvořit sdílený přístupový podpis (SAS), aby se SQL Server mohl připojit k účtu Azure Storage a ověřit ho.

  • Vytvořte kontejner v účtu služby Azure Storage s názvem sqldbledgerdigests.
  • Vytvořte zásadu pro kontejner s oprávněními čtení , přidání , vytvoření , zápis a seznam a vygenerujte klíč sdíleného přístupového podpisu.
  • Pro kontejner sqldbledgerdigests, který se používá pro ukládání souborů digest, vytvořte přihlašovací údaje SQL Serveru, jehož název odpovídá cestě ke kontejneru.

Následující příklad předpokládá, že byl vytvořen kontejner Azure Storage, zásady a klíč SAS. Sql Server to potřebuje pro přístup k souborům digest v kontejneru.

V následujícím fragmentu kódu nahraďte <your SAS key> klíčem SAS. Klíč SAS vypadá jako 'sr=c&si=<MYPOLICYNAME>&sig=<THESHAREDACCESSSIGNATURE>'.

CREATE CREDENTIAL [https://ledgerstorage.blob.core.windows.net/sqldbledgerdigests]  
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = '<your SAS key>'   

Oprávnění k důvěrnému registru Azure

Pokud používáte Azure SQL Database nebo Azure SQL Managed Instance, ujistěte se, že váš logický server nebo spravovaná instance (systémová identita) mají dostatečná oprávnění k zápisu digestů tím, že je přidáte do role Přispěvatele . Chcete-li to provést, postupujte podle kroků pro správu uživatelů Azure Confidential Ledger.

Poznámka

Automatické generování a ukládání hodnot hash databáze v SQL Serveru podporuje pouze účty Azure Storage.

Konfigurace pravidel NSG spravované instance Azure SQL pro práci s důvěrnými registru Azure

Pokud používáte azure SQL Managed Instance, ujistěte se, že jste nakonfigurovali pravidla virtuální sítě spravované instance Azure SQL pro komunikaci se službou Azure Confidential Ledger. Pro více informací viz Konfigurace pravidel NSG pro Azure SQL Managed Instance tak, aby fungovala s Azure Confidential Ledger.

Ruční generování a ukládání shrnutí databáze

Můžete také vygenerovat přehled databáze na vyžádání, abyste mohli digest uložit ručně do libovolné služby nebo zařízení, které považujete za důvěryhodného cíle úložiště. Například si můžete zvolit zařízení s principem "zapsat jednou, číst mnohokrát" (WORM) umístěné on-premise jako cíl. Ručně vygenerujete digest databáze spuštěním sys.sp_generate_database_ledger_digest uložené procedury v SQL Server Management Studio nebo azure Data Studio.

EXECUTE sp_generate_database_ledger_digest;

Vrácená sada výsledků je jeden řádek dat. Mělo by se uložit do důvěryhodného umístění úložiště jako dokument JSON následujícím způsobem:

    {
        "database_name":  "ledgerdb",
        "block_id":  0,
        "hash":  "0xDC160697D823C51377F97020796486A59047EBDBF77C3E8F94EEE0FFF7B38A6A",
        "last_transaction_commit_time":  "2020-11-12T18:01:56.6200000",
        "digest_time":  "2020-11-12T18:39:27.7385724"
    }

Dovolení

Generování databázových přehledů vyžaduje oprávnění GENERATE LEDGER DIGEST. Podrobnosti o oprávněních souvisejících s tabulkami registru najdete v tématu Oprávnění.

Zohlednění správy digestů

Obnovení databáze

Obnovení databáze do dřívějšího bodu v čase, známé také jako Obnovení do určitého boduv čase, je operace často používaná při chybách, kdy uživatelé potřebují rychle vrátit stav databáze do dřívějšího bodu v čase. Při nahrávání vygenerovaných souhrnů do služby Azure Storage nebo do důvěrného registru Azure se zaznamená čas vytvoření databáze, ke které se tyto souhrny vztahují. Při každém obnovení databáze je označena novým vytvořit čas a tato technika nám umožňuje ukládat hodnoty hash v různých "inkarnacích" databáze. Pro SQL Server je čas vytvoření aktuálním časem UTC v okamžiku, kdy je poprvé povoleno nahrávání souhrnu. Knihování uchovává informace o tom, kdy došlo k operaci obnovení, což umožňuje procesu ověření používat všechny příslušné souhrny v různých verzích databáze. Kromě toho mohou uživatelé kontrolovat všechny digesty pro různé časy vytvoření, aby zjistili, kdy byla databáze obnovena, a kam až byla obnovena. Vzhledem k tomu, že tato data jsou zapsaná v neměnném úložišti, jsou tyto informace také chráněné.

Poznámka

Pokud provádíte nativní obnovení zálohy databáze ve službě Azure SQL Managed Instance, musíte cestu digestu změnit ručně pomocí webu Azure Portal, PowerShellu nebo Azure CLI.

Aktivní geografická replikace a skupiny dostupnosti AlwaysOn

Aktivní geografickou replikaci nebo skupiny automatického selhání je možné nakonfigurovat pro Azure SQL Database nebo Azure SQL Managed Instance. Replikace napříč geografickými oblastmi je z důvodů výkonu asynchronní, takže sekundární databáze může být poněkud za sebou v porovnání s primární databází. V případě geografického selhání se ztratí veškerá nejnovější data, která ještě nebyla replikována. Účetní kniha vydá výpisy z databáze pouze pro data, která byla replikována do geografických sekundárních oblastí, aby nikdy neobsahovaly odkazy na data, která by mohla být ztracena v případě geografického převzetí služeb při selhání. To platí jenom pro automatické generování a ukládání výstupů z databáze. Ve skupině pro převzetí služeb při selhání bude mít jak primární, tak sekundární databáze stejnou cestu pro kontrolní součty. I když provedete převzetí při selhání, cesta shrnutí se pro primární ani sekundární databázi nezmění.

Pokud dojde k odstranění skupiny převzetí služeb při selhání nebo odstranění odkazu, budou se obě databáze chovat jako primární databáze. V tomto okamžiku se změní digestová trasa předchozí sekundární databáze a do této trasy přidáme složku RemovedSecondaryReplica.

Pokud je vaše databáze součástí skupiny dostupnosti AlwaysOn nebo propojení spravované instance v SQL Serveru, použije se stejný princip jako aktivní geografická replikace. Nahrání souhrnů se provádí pouze v případě, že byly všechny transakce replikovány do sekundárních replik.