Partilhar via


Visão geral do Ledger

Aplica-se a: SQL Server 2022 (16.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed Instance

Estabelecer confiança em torno da integridade dos dados armazenados em sistemas de banco de dados tem sido um problema de longa data para todas as organizações que gerenciam dados financeiros, médicos ou outros dados confidenciais. O recurso de contabilidade fornece recursos de prova de violação em seu banco de dados. Você pode atestar criptograficamente a outras partes, como auditores ou outras partes comerciais, que seus dados não foram adulterados.

O Ledger ajuda a proteger os dados de qualquer invasor ou usuário com privilégios elevados, incluindo administradores de banco de dados (DBAs), administradores de sistema e administradores de nuvem. Tal como acontece com um livro-razão tradicional, a funcionalidade preserva os dados históricos. Se uma linha for atualizada no banco de dados, seu valor anterior será mantido e protegido em uma tabela de histórico. O Ledger fornece uma crônica de todas as alterações feitas no banco de dados ao longo do tempo.

O livro razão e os dados históricos são gerenciados de forma transparente, oferecendo proteção sem alterações no aplicativo. O recurso mantém dados históricos em um formulário relacional para dar suporte a consultas SQL para auditoria, perícia forense e outras finalidades. Ele fornece garantias de integridade de dados criptográficos, mantendo o poder, a flexibilidade e o desempenho do banco de dados SQL.

Diagrama da arquitetura da tabela contábil.

Casos de uso para contabilidade

Vamos analisar algumas vantagens para usar o livro-razão.

Racionalização das auditorias

O valor de qualquer sistema de produção baseia-se na capacidade de confiar nos dados que o sistema está a consumir e a produzir. Se um usuário mal-intencionado tiver adulterado os dados em seu banco de dados, isso pode ter resultados desastrosos nos processos de negócios que dependem desses dados.

Manter a confiança em seus dados requer uma combinação de habilitar os controles de segurança adequados para reduzir possíveis ataques, práticas de backup e restauração e procedimentos completos de recuperação de desastres. As auditorias realizadas por entidades externas garantem a aplicação destas práticas.

Os processos de auditoria são atividades altamente demoradas. A auditoria requer inspeção no local das práticas implementadas, como a revisão de logs de auditoria, a inspeção da autenticação e a inspeção de controles de acesso. Embora esses processos manuais possam expor possíveis lacunas na segurança, eles não podem fornecer provas atestáveis de que os dados não foram alterados maliciosamente.

O Ledger fornece a prova criptográfica da integridade dos dados aos auditores. Esta prova pode ajudar a simplificar o processo de auditoria. Também garante o não repúdio em relação à integridade dos dados do sistema.

Processos de negócios de várias partes

Em alguns sistemas, como sistemas de gerenciamento da cadeia de suprimentos, várias organizações devem compartilhar o estado de um processo de negócios entre si. Esses sistemas lutam com o desafio de como compartilhar e confiar nos dados. Muitas organizações estão se voltando para blockchains tradicionais, como Ethereum ou Hyperledger Fabric, para transformar digitalmente seus processos de negócios de várias partes.

Blockchain é uma ótima solução para redes de várias partes onde a confiança é baixa entre as partes que participam da rede. Muitas dessas redes são fundamentalmente soluções centralizadas onde a confiança é importante, mas uma infraestrutura totalmente descentralizada é uma solução pesada.

O Ledger fornece uma solução para essas redes. Os participantes podem verificar a integridade dos dados armazenados centralmente, sem a complexidade e as implicações de desempenho que o consenso de rede introduz em uma rede blockchain.

Sucesso do cliente

Armazenamento off-chain confiável para blockchain

Quando uma rede blockchain é necessária para um processo de negócios de várias partes, a capacidade de consultar os dados no blockchain sem sacrificar o desempenho é um desafio.

Os padrões típicos para resolver esse problema envolvem a replicação de dados do blockchain para um armazenamento off-chain, como um banco de dados. Mas depois que os dados são replicados para o banco de dados a partir do blockchain, a integridade dos dados garante que uma oferta de blockchain seja perdida. O Ledger fornece integridade de dados para armazenamento off-chain de redes blockchain, o que ajuda a garantir a confiança completa dos dados em todo o sistema.

Como funciona

Todas as linhas modificadas por uma transação em uma tabela contábil são criptografadas com hash SHA-256 usando uma estrutura de dados de árvore Merkle que cria um hash raiz representando todas as linhas na transação. As transações que o banco de dados processa também são agrupadas utilizando hash SHA-256 por meio de uma estrutura de árvore de Merkle. O resultado é um hash raiz que forma um bloco. O bloco é então processado com SHA-256 utilizando o hash raiz do próprio bloco juntamente com o hash raiz do bloco anterior como entrada para a função hash. Esse hashing forma um blockchain.

Os hashes raiz no livro-razão do banco de dados, também chamados de resumos do banco de dados, contêm as transações com hash criptograficamente e representam o estado do banco de dados. Eles podem ser gerados e armazenados periodicamente fora do banco de dados em armazenamento à prova de violação, como o Armazenamento de Blobs do Azure configurado com políticas de imutabilidade, o Razão Confidencial do Azure ou dispositivos de armazenamento WORM (Write Once Read Many) local. Os resumos do banco de dados são usados posteriormente para verificar a integridade do banco de dados comparando o valor do hash no resumo com os hashes calculados no banco de dados.

A funcionalidade de contabilidade é introduzida nas tabelas de duas formas:

Tanto as tabelas de registros atualizáveis quanto as tabelas apenas de anexação fornecem recursos de prova de violação e de forense digital.

Tabelas contábeis atualizáveis

As tabelas contábeis atualizáveis são ideais para padrões de aplicativos que esperam emitir atualizações e exclusões para tabelas em seu banco de dados, como aplicativos de sistema de registro (SOR). Os padrões de dados existentes para seu aplicativo não precisam ser alterados para habilitar a funcionalidade do livro-razão.

As tabelas contábeis atualizáveis rastreiam o histórico de alterações em quaisquer linhas do banco de dados quando ocorrem transações que executam atualizações ou exclusões. Uma tabela contábil atualizável é uma tabela com versão do sistema que contém uma referência a outra tabela com um esquema espelhado.

A outra tabela é chamada de tabela de histórico. O sistema usa essa tabela para armazenar automaticamente a versão anterior da linha cada vez que uma linha na tabela contábil é atualizada ou excluída. A tabela de histórico é criada automaticamente quando você cria uma tabela contábil atualizável.

Os valores na tabela contábil atualizável e sua tabela de histórico correspondente fornecem uma crônica dos valores do seu banco de dados ao longo do tempo. Uma visualização contábil gerada pelo sistema une a tabela contábil atualizável e a tabela de histórico para que você possa consultar facilmente essa crônica do seu banco de dados.

Para obter mais informações sobre tabelas contábeis atualizáveis, consulte Criar e usar tabelas contábeis atualizáveis.

Tabelas de registos somente para acréscimo

As tabelas contábeis somente de acréscimo são ideais para padrões de aplicativos que são somente inserção, como aplicativos de gerenciamento de eventos e informações de segurança (SIEM). As tabelas contábeis somente de acréscimo bloqueiam atualizações e exclusões no nível da API. Esse bloqueio fornece mais proteção contra adulteração de usuários privilegiados, como administradores de sistema e DBAs.

Como apenas inserções são permitidas no sistema, as tabelas contábeis somente de acréscimo não têm uma tabela de histórico correspondente porque não há histórico para capturar. Assim como acontece com tabelas contábeis atualizáveis, uma exibição contábil fornece informações sobre a transação que inseriu linhas na tabela somente acréscimo e o usuário que executou a inserção.

Para obter mais informações sobre tabelas contábeis somente acréscimo, consulte Criar e usar tabelas contábeis somente acréscimo.

Base de dados contábil

Os bancos de dados contábeis fornecem uma solução fácil para aplicativos que exigem a integridade de todos os dados a serem protegidos durante toda a vida útil do banco de dados. Um banco de dados contábil só pode conter tabelas contábeis. Não há suporte para a criação de tabelas regulares (que não são tabelas contábeis). Cada tabela é, por padrão, criada como uma tabela contábil atualizável com configurações padrão, o que torna a criação dessas tabelas muito fácil. Configurar um banco de dados como um banco de dados contábil na criação. Uma vez criado, um banco de dados contábil não pode ser convertido em um banco de dados regular. Para obter mais informações, consulte Configurar um banco de dados contábil.

Resumos de bases de dados

O hash do bloco mais recente no livro-razão da base de dados é chamado de resumo do banco de dados . Ele representa o estado de todas as tabelas contábeis no banco de dados no momento em que o bloco foi gerado.

Quando um bloco é formado, seu resumo de banco de dados associado é publicado e armazenado fora do banco de dados em armazenamento à prova de violação. Como os resumos do banco de dados representam o estado do banco de dados no momento em que foram gerados, proteger os resumos contra adulterações é fundamental. Um invasor que tenha acesso para modificar os resumos seria capaz de:

  1. Adulterar os dados da base de dados.
  2. Gere os hashes que representam o banco de dados com essas alterações.
  3. Modifique os resumos para representar o hash atualizado das transações no bloco .

O Ledger fornece a capacidade de gerar e armazenar automaticamente os resumos do banco de dados no armazenamento imutável ou no Razão Confidencial do Azure, para evitar adulterações. Como alternativa, os usuários podem gerar manualmente resumos de banco de dados e armazená-los no local de sua escolha. Os resumos do banco de dados são usados para verificar posteriormente se os dados armazenados em tabelas contábeis não foram adulterados.

Verificação contábil

O recurso de contabilidade não permite modificar o conteúdo de exibições do sistema contábil, tabelas somente de acréscimo e tabelas de histórico. No entanto, um invasor ou administrador de sistema que tenha o controle da máquina pode ignorar todas as verificações do sistema e adulterar diretamente os dados. Por exemplo, um invasor ou administrador de sistema pode editar os arquivos de banco de dados no armazenamento. O Ledger não pode impedir tais ataques, mas garante que qualquer adulteração será detetada quando os dados do livro razão forem verificados.

O processo de verificação do livro-razão toma como entrada um ou mais resumos de banco de dados gerados anteriormente e recalcula os hashes armazenados no livro-razão do banco de dados com base no estado atual das tabelas contábeis. Se os hashes computados não corresponderem aos resumos de entrada, a verificação falhará, indicando que os dados foram adulterados. Em seguida, o Ledger relata todas as inconsistências detetadas.