Azure SQL Database Ledger の概要
ブロックチェーンのパワーを SQL Server に
Jiayi Yang
Azure SQL Database ledger – SQL 内のブロックチェーン パワー
暗号化を通じたSQL デー
タの改ざん防止
暗号化証明による検証
を通じたすべての変更履
歴記録を提供可能
Azure と オンプレミスでお
なじみの SQL
What is a blockchain and how do they work?
SQL Server 2022 Ledger
参
考
What is a blockchain and how do they work?
データ
ハッシュ
一つ前のブロックのハッシュ
SQL Server 2022 Ledger
参
考
What is a blockchain and how do they work?
データ
From
To
Amount
SQL Server 2022 Ledger
参
考
What is a blockchain and how do they work?
ハッシュ
・・・9bc34549d565d9505b287de0cd20ac77be1d3f2c・・・
SQL Server 2022 Ledger
参
考
What is a blockchain and how do they work?
一つ前のブロックのハッシュ
前後関係性を安全に保つ
SQL Server 2022 Ledger
参
考
What is a blockchain and how do they work?
① ② ③
ハッシュ:
1Z8F
一つ前ハッシュ:0000
ハッシュ:
6BQ1
一つ前ハッシュ: 1Z8F
ハッシュ:
3H4Q
一つ前ハッシュ: 6BQ1
SQL Server 2022 Ledger
参
考
What is a blockchain and how do they work?
① ② ③
ハッシュ:
1Z8F
一つ前ハッシュ:0000
ハッシュ:
6BQ1
一つ前ハッシュ: 1Z8F
ハッシュ:
3H4Q
一つ前ハッシュ: 6BQ1
H62Y
SQL Server 2022 Ledger
参
考
SQL Server 2022 Ledger works
トランザクション1 (n) トランザクション2 (n) トランザクション3 (n)
Tran1の暗号化されたハッシュ
値がTran2と関連付け
+
Tran1の暗号化されたハッシュ
Tran2の暗号化されたハッシュ
値がTran3と関連付け
+
Tran2の暗号化されたハッシュ
データベースダイジェスト
不変ストレージ (Azure
Blob Storage) Or
Azure Confidential
Ledger
1ブロックに1Tranではなくて、
(n) Tranが含まれる。
データベースの検証
自動または手動
ダイジェスト比較
SQL Server 2022 Ledger
参
考
Ledger テーブル - 更新可能 と 追記専用
o 更新可能なLedgerテーブルは、更新と削除を可能にする標準の SQL テーブル
です
o 更新または削除された行の履歴は、履歴テーブルおよび照会しやすいLedger
ビューに保持されます
o 更新可能テーブルと履歴テーブルの整合性は、データベースLedgerからの暗号リ
ンクを通じて維持されます
o システムは定期的にデジタルレシートを、お客様が構成した信頼できるストレージ
サービスにアップロードします
o お客様はデジタルレシートを使用してデータの整合性を検証できます
o 追記専用Ledgerテーブルは、API での UPDATE/DELETE をブロックし、履歴
テーブルが必要なくなります
追加専用Ledger
テーブル
信頼できる
ストレージ
データベース Ledger
ブロック N ブロック N-1 ブロックN-2
更新可能な
Ledgerテーブル
履歴テーブル
Ledgerビュー
データベース ダイジェスト用の記憶域
不変 BLOB ストレージ (Azure SQL Database & SQL Server 2022)
• ポリシーに基づいて、一回の書き込み、読み取り可能
状態でデータを保存
• 作成されたデータ BLOB は、ユーザー指定の間隔で
読み取り専用モードに設定可能
• ポリシーに基づいてデータが機能的にロックまたは保
持
• 監査ログのサポートを提供可能だが、ログの作成者
を信頼する必要あり
• マイクロソフトは信頼できるコンピューティング ベース
Azure Confidential Ledger (ACL) (Azure SQL Database)
• データを一回書き込み、永続的に読み取り可能な状
態に
• Ledgerに書き込まれたデータ BLOB は変更不可
• 改ざん防止保証を提供する機密エンクレーブで実行
• お客様が検証できる暗号構造を含むトランザクション レシー
トと、シリアル化された Ledger ファイルを作成
• マイクロソフトは TCB の外にあります。Ledger ソースコードは
オープンソース (CCF)
例
更新可能な Ledger テーブル
勘定残高の更新可能な Ledger テーブルの作成
CREATE TABLE [Account].[Balance]
(
[CustomerID] INT NOT NULL PRIMARY KEY CLUSTERED,
[LastName] VARCHAR (50) NOT NULL,
[FirstName] VARCHAR (50) NOT NULL,
[Balance] DECIMAL (10,2) NOT NULL
)
WITH
(
SYSTEM_VERSIONING = ON,
LEDGER = ON
);
GO
2 つの個別トランザクションに 4 つのアカウントを追加
Tx1: 初期残高 $50 で Nick を追加
Tx2: John、 Joe 、Mary を追加
1. 各トランザクションは固有のトランザクショ
ン ID を持つ
2. Tx2 は 3 行を修正し、それぞれが
Ledger シーケンス番号で追跡
更新可能な Ledger テーブル
Nick の残高を $50 から $100 に更新
更新可能な Ledger テーブル ー Nick の残高は現在 $100
履歴テーブル ー Nick の期首残高を含む行の履歴値を表示
Ledger ビュー ー Nick の削除は更新として扱われ、その後に挿入として表示される
データベース Ledger
sys.database_ledger_transactions ー データベース内の各トランザクションのテーブル・ハッシュと、トラン
ザクションを発行したユーザーを記録
sys.database_ledger_blocks ー データベースに作成された各ブロックのハッシュと、ブロック内のトランザク
ションの数を記録
実際のデプロイ UI
Azure ポータルでの作成と管理の
エクスペリエンス
[作成] ペインに新たに[セキュリティ] タブが表示
Ledger 構成は既定で無効
すべてのテーブルが更新可能な Ledger テーブル
にする「Ledger データベース」が有効になっている
ことを確認
• 選択されていない場合でも、ユーザーは T-SQL でLedger
テーブルを作成可能
ダイジェストを自動的に生成し、Azure ストレージ
または ACL にアップロードする
• 選択しない場合、顧客は手動でダイジェストを生成して保存
する必要あり
ダイジェストは不変ポリシーによって保護されるべき
である警告表示
Ledger は管理エクスペリエンスの [セキュリティ]
セクションにあります
作成後に Ledger データベースを無効にすることは
できません
• 作成中に有効化しなかった場合、後で有効にすることはでき
ません
• ユーザーは T-SQL を使用して Ledger テーブルを作成できます
ダイジェストストレージに ACL を選択した場合、プ
レビューでは無料ですが、GA (価格未定) で課金
されることに注意
データベース検証を実行する T-SQL スクリ
プトがデータベースによって生成される
クエリ エディター、Azure Data Studio また
は SQL Server Management Studio で
実行する T-SQL をコピーします
実行すると、ダイジェストストレージの
場所と結果が表示されます
digest_locations が開かれ、検証が
ダイジェストを抽出した場所が表示さ
れます
"false" は、ダイジェストストレージの以
前の構成を示す
"true" は、ダイジェスト ストレージの現
在の構成を示す
SQL Server 2022 エディション単位の新機能比較表
SQL Server 2022 新機能 Express Standard Enterprise
コンピューティングと
ストレージ
最大コア数 4 24 OS Max
インスタンスあたりの最大メモリ使用量 1.41 GB 128 GB OS Max
最大ディスクサイズ 10 GB 524 PB 524 PB
Azure 対応
Synapse Link
SQL Ledger
Link feature for Azure SQL Managed Instance Link
Link feature for Azure SQL Managed Instance Link (基本的な可用性グループ)
Microsoft Purview ポリシー
言語と
プラットフォームの選択
JSON T-SQL 強化
モダン T-SQL 機能拡張
業界をリードする
パフォーマンスと
可用性
Query Store by default for new databases
組み込みのクエリ インテリジェンス: CE Feedback
組み込みのクエリ インテリジェンス: Parameter Sensitive Plan (PSP) Optimization
組み込みのクエリ インテリジェンス: DOP feedback
クエリストア:リードレプリカのサポート
バッファプールの並列スキャン
(2スレッドに制
限、64GBを超える
メモリのみ)
Peer to peer LWW レプリケーション
Intel QATバックアップの機能強化
(ソフトウェアのみ
)
(ハードウェア +
ソフトウェア)
時系列のサポート
安全性と
信頼性
セキュリティで保護されたエンクレーブが設定された Always Encrypted- 新機能
動的データマスキングの詳細な権限
SQL Server 2022
パフォーマンスとセキュリティのイノベーションを継続する Azure 対応の SQL Server
TPC データはすべて 2022 年 11 月 10 日現在のものである。
1米国国立標準技術研究所 (NIST) Comprehensive Vulnerability Database 2 http://www.tpc.org/4087; 3 http://www.tpc.org/3374; 4 http://www.tpc.org/3380; 5 https://tpc.org/3383; 6 http://www.tpc.org/3364; 7 https://tpc.org/3382;
オンプレミスのオペレーショナル
データに対するシームレスな分析
過去 10 年間にわたり
最も安全1
業界をリードする
パフォーマンスと可用性
データ資産全体の
可視性
Azure による
ビジネス継続性
No. 1 の OLTP パフォーマンス2
No. 1 の非クラスター化 DW の
パフォーマンス (1 TB3、3 TB4、
10 TB5、30 TB6、100 TB7)
Azure SQL Managed
Instance のリンク機能
Azure Synapse Link Microsoft Purview の統合 組み込みのクエリ インテリジェンス
SQL Server Ledger
Azure Arc 対応データ サービス Azure SQL
エッジからクラウド
Azure SQL Edge
主な機能
+
最も一貫性のあるデータ プラットフォーム
0
50
100
150
200
250
300
350
400
450
500
脆弱性
(2010
~
2020)
ポリシー
インサイト
Microsoft Purview
系列
SQL Server Ledger (台帳)の使用方法
台帳履歴の表示 台帳の確認
台帳テーブルを作成する
変更を加える
ダイジェストを保存する
更新可能タイプ
または追加のみタイプ
INSERT / UPDATE / DELETE
(更新可能タイプのみ)
手動または自動
* 台帳データベースも作成できます
SQL Server Ledger (台帳)
自動ダイジェストの作成方法と自動ダイジェストを使ったデータ信頼性の確認
Azure Blob ストレージか、ADLS Gen2を作成する
sqldbledgerdigests という container を作成する
SQL Server 2022に、Azure Blob ストレージにアクセス
する資格情報を作成する
自動ダイジェストのエンドポイントを指定する
データを変更する
ダイジェストで信頼性を確認する
ALTER DATABASE SCOPED CONFIGURATION
SET LEDGER_DIGEST_STORAGE_ENDPOINT = 'your
endpoint'
GO
DECLARE @digest_locations NVARCHAR (MAX) =
(SELECT * FROM sys.database_ledger_digest_locations
FOR JSON AUTO, INCLUDE_NULL_VALUES)
SELECT @digest_locations as digest_locations
BEGIN TRY
EXEC
sys.sp_verify_database_ledger_from_digest_storage
@digest_locations;
SELECT 'Ledger verification succeeded.' AS Result
END TRY
BEGIN CATCH
THROW
END CATCH
デモ (データ改ざん)
SQL Server 2022 Ledger
N
o
-
R
e
c
o
r
d
i
n
g
Ledgerテーブルのシナリオ
監査の合理化
暗号化を用いた証明データは、外部または内部 (監査人または規制当局) を問わず、他の当
事者に改ざんされていないことを証明できます
マルチパーティ ビジネスプロセス
ソリューションを中心とした一元化されたシステムのブロックチェーンに代替可能(信頼するが検証も
する)
ブロックチェーン向け信頼済みオフチェーンストア
ブロックチェーンソリューションは通常、チェーンデータを従来のデータベースに「オフチェーン」で複
製します。Ledger テーブルはブロックチェーンデータの整合性を維持します
リソース
アナウンス ブログ
https://aka.ms/sql-ledger-blog
Azure SQL Database Ledger のドキュメント
https://aka.ms/sql-ledger-docs
ホワイトペーパー
https://aka.ms/sql-ledger-whitepaper

Azure SQL Database Ledger & SQL Server 2022 Ledger

  • 1.
    Azure SQL DatabaseLedger の概要 ブロックチェーンのパワーを SQL Server に Jiayi Yang
  • 2.
    Azure SQL Databaseledger – SQL 内のブロックチェーン パワー 暗号化を通じたSQL デー タの改ざん防止 暗号化証明による検証 を通じたすべての変更履 歴記録を提供可能 Azure と オンプレミスでお なじみの SQL
  • 3.
    What is ablockchain and how do they work? SQL Server 2022 Ledger 参 考
  • 4.
    What is ablockchain and how do they work? データ ハッシュ 一つ前のブロックのハッシュ SQL Server 2022 Ledger 参 考
  • 5.
    What is ablockchain and how do they work? データ From To Amount SQL Server 2022 Ledger 参 考
  • 6.
    What is ablockchain and how do they work? ハッシュ ・・・9bc34549d565d9505b287de0cd20ac77be1d3f2c・・・ SQL Server 2022 Ledger 参 考
  • 7.
    What is ablockchain and how do they work? 一つ前のブロックのハッシュ 前後関係性を安全に保つ SQL Server 2022 Ledger 参 考
  • 8.
    What is ablockchain and how do they work? ① ② ③ ハッシュ: 1Z8F 一つ前ハッシュ:0000 ハッシュ: 6BQ1 一つ前ハッシュ: 1Z8F ハッシュ: 3H4Q 一つ前ハッシュ: 6BQ1 SQL Server 2022 Ledger 参 考
  • 9.
    What is ablockchain and how do they work? ① ② ③ ハッシュ: 1Z8F 一つ前ハッシュ:0000 ハッシュ: 6BQ1 一つ前ハッシュ: 1Z8F ハッシュ: 3H4Q 一つ前ハッシュ: 6BQ1 H62Y SQL Server 2022 Ledger 参 考
  • 10.
    SQL Server 2022Ledger works トランザクション1 (n) トランザクション2 (n) トランザクション3 (n) Tran1の暗号化されたハッシュ 値がTran2と関連付け + Tran1の暗号化されたハッシュ Tran2の暗号化されたハッシュ 値がTran3と関連付け + Tran2の暗号化されたハッシュ データベースダイジェスト 不変ストレージ (Azure Blob Storage) Or Azure Confidential Ledger 1ブロックに1Tranではなくて、 (n) Tranが含まれる。 データベースの検証 自動または手動 ダイジェスト比較 SQL Server 2022 Ledger 参 考
  • 11.
    Ledger テーブル -更新可能 と 追記専用 o 更新可能なLedgerテーブルは、更新と削除を可能にする標準の SQL テーブル です o 更新または削除された行の履歴は、履歴テーブルおよび照会しやすいLedger ビューに保持されます o 更新可能テーブルと履歴テーブルの整合性は、データベースLedgerからの暗号リ ンクを通じて維持されます o システムは定期的にデジタルレシートを、お客様が構成した信頼できるストレージ サービスにアップロードします o お客様はデジタルレシートを使用してデータの整合性を検証できます o 追記専用Ledgerテーブルは、API での UPDATE/DELETE をブロックし、履歴 テーブルが必要なくなります 追加専用Ledger テーブル 信頼できる ストレージ データベース Ledger ブロック N ブロック N-1 ブロックN-2 更新可能な Ledgerテーブル 履歴テーブル Ledgerビュー
  • 12.
    データベース ダイジェスト用の記憶域 不変 BLOBストレージ (Azure SQL Database & SQL Server 2022) • ポリシーに基づいて、一回の書き込み、読み取り可能 状態でデータを保存 • 作成されたデータ BLOB は、ユーザー指定の間隔で 読み取り専用モードに設定可能 • ポリシーに基づいてデータが機能的にロックまたは保 持 • 監査ログのサポートを提供可能だが、ログの作成者 を信頼する必要あり • マイクロソフトは信頼できるコンピューティング ベース Azure Confidential Ledger (ACL) (Azure SQL Database) • データを一回書き込み、永続的に読み取り可能な状 態に • Ledgerに書き込まれたデータ BLOB は変更不可 • 改ざん防止保証を提供する機密エンクレーブで実行 • お客様が検証できる暗号構造を含むトランザクション レシー トと、シリアル化された Ledger ファイルを作成 • マイクロソフトは TCB の外にあります。Ledger ソースコードは オープンソース (CCF)
  • 13.
  • 14.
    勘定残高の更新可能な Ledger テーブルの作成 CREATETABLE [Account].[Balance] ( [CustomerID] INT NOT NULL PRIMARY KEY CLUSTERED, [LastName] VARCHAR (50) NOT NULL, [FirstName] VARCHAR (50) NOT NULL, [Balance] DECIMAL (10,2) NOT NULL ) WITH ( SYSTEM_VERSIONING = ON, LEDGER = ON ); GO
  • 15.
    2 つの個別トランザクションに 4つのアカウントを追加 Tx1: 初期残高 $50 で Nick を追加 Tx2: John、 Joe 、Mary を追加 1. 各トランザクションは固有のトランザクショ ン ID を持つ 2. Tx2 は 3 行を修正し、それぞれが Ledger シーケンス番号で追跡 更新可能な Ledger テーブル
  • 16.
    Nick の残高を $50から $100 に更新 更新可能な Ledger テーブル ー Nick の残高は現在 $100 履歴テーブル ー Nick の期首残高を含む行の履歴値を表示 Ledger ビュー ー Nick の削除は更新として扱われ、その後に挿入として表示される
  • 17.
    データベース Ledger sys.database_ledger_transactions ーデータベース内の各トランザクションのテーブル・ハッシュと、トラン ザクションを発行したユーザーを記録 sys.database_ledger_blocks ー データベースに作成された各ブロックのハッシュと、ブロック内のトランザク ションの数を記録
  • 18.
  • 19.
  • 20.
    すべてのテーブルが更新可能な Ledger テーブル にする「Ledgerデータベース」が有効になっている ことを確認 • 選択されていない場合でも、ユーザーは T-SQL でLedger テーブルを作成可能 ダイジェストを自動的に生成し、Azure ストレージ または ACL にアップロードする • 選択しない場合、顧客は手動でダイジェストを生成して保存 する必要あり ダイジェストは不変ポリシーによって保護されるべき である警告表示
  • 21.
    Ledger は管理エクスペリエンスの [セキュリティ] セクションにあります 作成後にLedger データベースを無効にすることは できません • 作成中に有効化しなかった場合、後で有効にすることはでき ません • ユーザーは T-SQL を使用して Ledger テーブルを作成できます ダイジェストストレージに ACL を選択した場合、プ レビューでは無料ですが、GA (価格未定) で課金 されることに注意
  • 22.
  • 23.
    クエリ エディター、Azure DataStudio また は SQL Server Management Studio で 実行する T-SQL をコピーします
  • 24.
  • 25.
  • 26.
    SQL Server 2022エディション単位の新機能比較表 SQL Server 2022 新機能 Express Standard Enterprise コンピューティングと ストレージ 最大コア数 4 24 OS Max インスタンスあたりの最大メモリ使用量 1.41 GB 128 GB OS Max 最大ディスクサイズ 10 GB 524 PB 524 PB Azure 対応 Synapse Link SQL Ledger Link feature for Azure SQL Managed Instance Link Link feature for Azure SQL Managed Instance Link (基本的な可用性グループ) Microsoft Purview ポリシー 言語と プラットフォームの選択 JSON T-SQL 強化 モダン T-SQL 機能拡張 業界をリードする パフォーマンスと 可用性 Query Store by default for new databases 組み込みのクエリ インテリジェンス: CE Feedback 組み込みのクエリ インテリジェンス: Parameter Sensitive Plan (PSP) Optimization 組み込みのクエリ インテリジェンス: DOP feedback クエリストア:リードレプリカのサポート バッファプールの並列スキャン (2スレッドに制 限、64GBを超える メモリのみ) Peer to peer LWW レプリケーション Intel QATバックアップの機能強化 (ソフトウェアのみ ) (ハードウェア + ソフトウェア) 時系列のサポート 安全性と 信頼性 セキュリティで保護されたエンクレーブが設定された Always Encrypted- 新機能 動的データマスキングの詳細な権限
  • 27.
    SQL Server 2022 パフォーマンスとセキュリティのイノベーションを継続するAzure 対応の SQL Server TPC データはすべて 2022 年 11 月 10 日現在のものである。 1米国国立標準技術研究所 (NIST) Comprehensive Vulnerability Database 2 http://www.tpc.org/4087; 3 http://www.tpc.org/3374; 4 http://www.tpc.org/3380; 5 https://tpc.org/3383; 6 http://www.tpc.org/3364; 7 https://tpc.org/3382; オンプレミスのオペレーショナル データに対するシームレスな分析 過去 10 年間にわたり 最も安全1 業界をリードする パフォーマンスと可用性 データ資産全体の 可視性 Azure による ビジネス継続性 No. 1 の OLTP パフォーマンス2 No. 1 の非クラスター化 DW の パフォーマンス (1 TB3、3 TB4、 10 TB5、30 TB6、100 TB7) Azure SQL Managed Instance のリンク機能 Azure Synapse Link Microsoft Purview の統合 組み込みのクエリ インテリジェンス SQL Server Ledger Azure Arc 対応データ サービス Azure SQL エッジからクラウド Azure SQL Edge 主な機能 + 最も一貫性のあるデータ プラットフォーム 0 50 100 150 200 250 300 350 400 450 500 脆弱性 (2010 ~ 2020) ポリシー インサイト Microsoft Purview 系列
  • 28.
    SQL Server Ledger(台帳)の使用方法 台帳履歴の表示 台帳の確認 台帳テーブルを作成する 変更を加える ダイジェストを保存する 更新可能タイプ または追加のみタイプ INSERT / UPDATE / DELETE (更新可能タイプのみ) 手動または自動 * 台帳データベースも作成できます
  • 29.
    SQL Server Ledger(台帳) 自動ダイジェストの作成方法と自動ダイジェストを使ったデータ信頼性の確認 Azure Blob ストレージか、ADLS Gen2を作成する sqldbledgerdigests という container を作成する SQL Server 2022に、Azure Blob ストレージにアクセス する資格情報を作成する 自動ダイジェストのエンドポイントを指定する データを変更する ダイジェストで信頼性を確認する ALTER DATABASE SCOPED CONFIGURATION SET LEDGER_DIGEST_STORAGE_ENDPOINT = 'your endpoint' GO DECLARE @digest_locations NVARCHAR (MAX) = (SELECT * FROM sys.database_ledger_digest_locations FOR JSON AUTO, INCLUDE_NULL_VALUES) SELECT @digest_locations as digest_locations BEGIN TRY EXEC sys.sp_verify_database_ledger_from_digest_storage @digest_locations; SELECT 'Ledger verification succeeded.' AS Result END TRY BEGIN CATCH THROW END CATCH
  • 30.
    デモ (データ改ざん) SQL Server2022 Ledger N o - R e c o r d i n g
  • 31.
    Ledgerテーブルのシナリオ 監査の合理化 暗号化を用いた証明データは、外部または内部 (監査人または規制当局) を問わず、他の当 事者に改ざんされていないことを証明できます マルチパーティビジネスプロセス ソリューションを中心とした一元化されたシステムのブロックチェーンに代替可能(信頼するが検証も する) ブロックチェーン向け信頼済みオフチェーンストア ブロックチェーンソリューションは通常、チェーンデータを従来のデータベースに「オフチェーン」で複 製します。Ledger テーブルはブロックチェーンデータの整合性を維持します
  • 32.
    リソース アナウンス ブログ https://aka.ms/sql-ledger-blog Azure SQLDatabase Ledger のドキュメント https://aka.ms/sql-ledger-docs ホワイトペーパー https://aka.ms/sql-ledger-whitepaper