Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Databaseの新機能 Blockchain Tableのご紹介

4b09160b087e45103b210ef95079cee4?s=47 gakumura
January 28, 2021

Oracle Databaseの新機能 Blockchain Tableのご紹介

2021/1/28 Oracle Database Technology Nightで喋った内容
エンタープライズ領域でのブロックチェーン技術活用の文脈の中で、耐改ざん性、監査性を備えたデータベースが登場してきた背景と、そのようなデータベースを実現するOracle DatabaseのBlockchain Table機能について解説

4b09160b087e45103b210ef95079cee4?s=128

gakumura

January 28, 2021
Tweet

Transcript

  1. Oracle Database新機能 Blockchain Tableのご紹介 中村 岳 日本オラクル株式会社 2021/1/28

  2. Safe harbor statement The following is intended to outline our

    general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. Copyright © 2021 Oracle and/or its affiliates 2
  3. 中村 岳 Twitter @gakumura はてなブログ @gakumura …主にHyperledger Fabric関連 • 現職:ソリューションエンジニア@日本オラクル

    • 担当:Oracle Blockchain Platform、Blockchain Table • 前職:金融決済系SIerでパッケージ開発 • 好きなOS:AIX • 最近おすすめのマンガ:チェンソーマン(単行本派) Copyright © 2021 Oracle and/or its affiliates 3
  4. • Blockchain Table登場の背景 • Blockchain Tableのご紹介 本日の内容 Copyright © 2021

    Oracle and/or its affiliates 4
  5. Copyright © 2021 Oracle and/or its affiliates 5 Blockchain Table登場の背景

    ~エンタープライズ領域での「ブロックチェーン」の活用
  6. • • • Copyright © 2021 Oracle and/or its affiliates

    6 Copyright © 2021 Oracle and/or its affiliates 6
  7. 仮想通貨(暗号資産)の基盤として始まり、適用領域を拡大 ブロックチェーン/DLTの活用 Copyright © 2021 Oracle and/or its affiliates •

    2008年にサトシ・ナカモトを名乗る人物が特定の管理者がいないネット ワーク上に分散した台帳上で管理されるビットコインという新たな通貨 (を実現するシステム)に係る論文をネット上に発表 • 仮想通貨を実現する基盤の特長に徐々に注目が集まり、 より一般的な用途への応用が進み、 「ブロックチェーン/DLT」の適用領域が拡大 • エンタープライズ領域では「データ活用のための信頼できる企業間デー タ共有基盤」、「ビジネスプロセス効率化のための企業間ワークフロー 基盤」としてユースケースが続々 7
  8. ブロックチェーンの利用形態(ネットワーク)の分類 Copyright © 2021 Oracle and/or its affiliates パブリック 公開制のネットワークを

    不特定多数で運用 コンソーシアム 許可制のネットワークを 複数組織で運用 プライベート 許可制のネットワークを 単一組織で運用 パーミッションレス← →パーミッションド エンタープライズ領域ではこちらが主 8
  9. 「耐改ざん性、証跡性を持ったデータ」という特性のみを活用している Copyright © 2021 Oracle and/or its affiliates • •

    • Copyright © 2021 Oracle and/or its affiliates 9 単一の組織内に閉じている 分散/分権が前提 9
  10. ブロックチェーンの利用形態(ネットワーク)の分類 Copyright © 2021 Oracle and/or its affiliates パブリック 公開制のネットワークを

    不特定多数で運用 コンソーシアム 許可制のネットワークを 複数組織で運用 プライベート 許可制のネットワークを 単一組織で運用 パーミッションレス← →パーミッションド フォーカスは • データの持ち主でも改ざんできないこと • 改ざんされていないことを証明できること これらが実現できれば、使うのは「ブロックチェーン」/ 分散台帳技術でなくてもよい ⇨ブロックチェーンにインスパイアされた技術を 備えた中央集権型データベースの活用にシフト 10
  11. 11 Copyright © 2021 Oracle and/or its affiliates 「分権」「分散」を実現するためのダウンサイドが伴う ブロックチェーン/DLTがDBと比較して一般に不得意としていること

    複雑な構造 高度な検索 • ブロックチェーンは、複雑な構造を持ったデータをリレーショナルデータ ベース(RDB)のようにうまく扱えるわけではない • 高度な検索や集計、分析などの処理も苦手としており、これらのために台 帳データを外部のRDBに複製する必要が生じる場合が多い パフォーマンス • 「データベース」と比較した場合には「ブロックチェーン」の処理性能は 数桁ほど違うレベルで遅い • 大量のトランザクション処理、高速なレスポンスが求められるユースケー スでは性能限界への留意と、設計の工夫が必要 サイズの大きな データ • 同一データを複数ノードで持つためストレージ効率が悪い • ネットワークでやり取りしてコンセンサスを取ってから書き込む仕組み上、 サイズの大きなデータを扱うと、大きな処理性能劣化が起こる
  12. Oracleのソリューション Copyright © 2021 Oracle and/or its affiliates パブリック 公開制のネットワークを

    不特定多数で運用 コンソーシアム 許可制のネットワークを 複数組織で運用 プライベート 許可制のネットワークを 単一組織で運用 パーミッションレス← →パーミッションド Oracle Database Blockchain Table BLOCKCHAIN Oracle Blockchain Platform 12
  13. Hyperledger Fabricをベースにエンタープライズ利用向けPaaSとオンプレミスで提供 • GUI • • • Oracle • State

    DB Berkeley DB Hyperledger Fabric Phantom Read • REST API • RDB Oracle Blockchain Platform Copyright © 2021 Oracle and/or its affiliates DC 13
  14. 耐改ざん性を追加、監査性を強化した特別なデータベース・テーブル データベース上のレコードに耐改ざん性と監査性を付与 • 追記オンリーの不変なデータ…テーブル所有者も特権ユーザも改ざん不能 • ハッシュチェーンで行をリンク…整合性の検証、改ざんされていないことの証明が可能 Oracle Databaseの一部として高度で多彩な機能とともに容易に利用可能 • 他のテーブルと組み合わせたトランザクション

    • 容易にデータ統合、多様なBIツールを用いての分析 • データベーストリガー、PL/SQLプログラムを利用したロジック表現 • レプリケーション、バックアップなどの耐障害性/高可用性機能、 アクセスコントロールなどのセキュリティ保護機能も併用可能 ※19cではRU19.10アップデートおよび個別パッチ32431413を適用することで利用可能に。 データベースの基本機能として含まれており追加ライセンスは不要(SE2でも利用可能)。 Blockchain Table:Oracle Database 21c&19cで利用可能(※) Copyright © 2021 Oracle and/or its affiliates 14 BLOCKCHAIN
  15. Blockchain PlatformとBlockchain Table:それぞれの用途 Copyright © 2021 Oracle and/or its affiliates

    対応する 主要な ニーズ 例となる ユースケース ▪ 複数の企業間で水平に確実かつリアルタ イムにデータを持ち寄り共有したい ▪ 企業をまたいだワークフローを信頼でき るかたちで実行したい ▪ 原材料~製造~輸送~小売までの一貫し たデータ持ち寄りによるサプライチェー ンの全体最適化 ▪ スマートコントラクトによる取引約定~ 決済までの企業間ワークフローの 自動化、効率化、迅速化 ▪ 台帳上での価値交換 分権/分散 Oracle Blockchain Platform ▪ 法律上確実な保存が要求される契約情報 や会計、財務データの保持 ▪ 重要なアクセス情報や操作履歴などの システムログを監査証跡として保存 ▪ データを外部犯行、内部犯行両面から保 護し、セキュリティ確保 ▪ 保存して以降、誰にも変更・削除できな いようデータを保持したい ▪ 監督機関、監査法人などに対し、改ざん されていないことを証明したい 中央集権 Oracle Database Blockchain Table 15
  16. Copyright © 2021 Oracle and/or its affiliates 16 Oracle DatabaseのBlockchain

    Table機能
  17. 耐改ざん性を追加、監査性を強化した特別なデータベース・テーブル データベース上のレコードに耐改ざん性と監査性を付与 • 追記オンリーの不変なデータ…テーブル所有者も特権ユーザも改ざん不能 • ハッシュチェーンで行をリンク…整合性の検証、改ざんされていないことの証明が可能 Oracle Databaseの一部として高度で多彩な機能とともに容易に利用可能 • 他のテーブルと組み合わせたトランザクション

    • 容易にデータ統合、多様なBIツールを用いての分析 • データベーストリガー、PL/SQLプログラムを利用したロジック表現 • レプリケーション、バックアップなどの耐障害性/高可用性機能、 アクセスコントロールなどのセキュリティ保護機能も併用可能 ※19cではRU19.10アップデートおよび個別パッチ32431413を適用することで利用可能に。 データベースの基本機能として含まれており追加ライセンスは不要(SE2でも利用可能)。 Blockchain Table:Oracle Database 21c&19cで利用可能(※) Copyright © 2021 Oracle and/or its affiliates 17 BLOCKCHAIN
  18. データの完全性の担保、証明が求められるところ • セキュリティ上重要な記録の保存: • アプリケーションのアクセスログや監査ログ • 高セキュリティエリアへの入退室記録 • 法律上確実な保存が要求される情報: •

    従業員の出退勤記録 • 企業の会計、財務のデータ • 見積、契約、請求や支払のやり取りに係るドキュメント • 内外からの攻撃に対してデータを保護: • 勘定系システム、決済系システムなどのトランザクションログ • 証券や各種アセットの所有権を管理する原簿 • 種々の認定、証明のエビデンス保存: • 原産地証明、検査証、品質認証、etc. Blockchain Tableのユースケースの一例 Copyright © 2021 Oracle and/or its affiliates 18
  19. 開発と分析に最高の生産性を 統合された マイクロサービス、イベント、REST, SaaS, 機械学習, CI/CD, ローコード あらゆるワークロードをサポート トランザクション, 分析,

    機械学習, IoT, ストリーミング, ブロックチェーン あらゆるデータをサポート Relational, JSON, グラフ, 地理空間, テキスト, OLAP, XML, マルチメディア 世界で唯一のコンバージドデータベース - インクラウドとオンプレミスの両方に対応 オラクルデータベースのビジョン Copyright © 2021 Oracle and/or its affiliates 19 19
  20. ブロックチェーン/DLT基盤や専用データベースと比較して…… 利用のハードルが低い • 一般的なOracle Databaseのスキルで十分使いこなせるため、学習コストが低い • 通常のテーブルとの使い勝手の差異が小さく、アプリケーション透過的な利用が可能 • 通常テーブルからの乗り換えに必要な改修はゼロ~最小限 アプリケーション側の負担が小さい

    • ふつうアプリケーションはイミュータブル(変更/削除しない)データのみを扱うわけではない • イミュータブルデータ専用のデータベースを使う場合、 アプリケーションは少なくともふたつのデータベースを扱わなくてはならない • 同一DB上で通常のテーブルとBlockchain Tableを扱えるためトランザクション、整合性担保が容易 データ分析、データ統合が容易 • Blockchain Table上でそのまま集計、分析が可能 • 他テーブル上のデータとのJOINやVIEW、多様なデータ統合ツールやBIツールも利用可能 処理性能 • Oracle Databaseの様々な処理性能向上手段を適用可能(例:Exadataを利用) Oracle Databaseの1テーブルとして使えることのメリット Copyright © 2021 Oracle and/or its affiliates 20
  21. アプリケーションの負担を減らし、分析のための余分な手間も削減 単一用途データベース vs Oracle Database Copyright © 2021 Oracle and/or

    its affiliates 21 App BI DIツール イミュータブル データ専用DB (又はブロックチェーン/DLT) 通常データ用 DB トランザクション トランザクション 複製 複製 分析 分析用 DB 整合性担保は アプリの責任 単一用途データベースの場合 Oracle Databaseの場合 App BI 分析のための データ統合に 余分な手間 トランザクション Oracle Database 分析 DB機能で 整合性担保 同一DB上で 容易に分析
  22. CREATE BLOCKCHAIN TABLE + 3つの必須句 Blockchain Tableの作成 Copyright © 2021

    Oracle and/or its affiliates 22 CREATE BLOCKCHAIN TABLE table_name(columns,constraints) NO DROP [ UNTIL number DAYS IDLE ] NO DELETE [ LOCKED ] | NO DELETE UNTIL number DAYS AFTER INSERT [LOCKED] HASHING USING sha2_512 VERSION v1 テーブルのDROPに対しての制約を記述する句。 • UNTIL n DAYS IDLEを付けておいた場合、テーブル上の最新の行がINSERT後n日経っていないと DROPできない(→付けない場合は常にDROP不可)。nの最小は0(16以上の指定を推奨)。 • 後からALTER TABLEでUNTIL~~は付けられない&nを減らせない(制約を緩められない)。 行のDELETEに対しての制約を記述する句。 • UNTIL n DAYS AFTER INSERTを付けておいた場合、INSERT後n日経っていないとDELETEできない (→付けない場合は常にDELETE不可)。nの最小は16。 • 後からALTER TABLEでUNTIL~~は付けられない&nを減らせない(制約を緩められない)。 • LOCKEDを付けておくとnを増やすことも不能。 利用するハッシュアルゴリズムとデータフォーマットを記述する句。現状、値は固定。
  23. シンプルなCREATE BLOCKCHAIN TABLEの例 Copyright © 2021 Oracle and/or its affiliates

    23 CREATE BLOCKCHAIN TABLE bank_ledger (bank VARCHAR2(128), deposit_date DATE, deposit_amount NUMBER) NO DROP UNTIL 31 DAYS IDLE NO DELETE LOCKED HASHING USING "SHA2_512" VERSION "v1"; • NO DROP UNTIL 31 DAYS IDLE …テーブル上の最新の行がINSERT後31日経っていないとDROPできない • NO DELETE LOCKED …行はDELETEできない
  24. 追記オンリーのテーブルで、イミュータブル/不変なデータを保持 • テーブルのDROPの制約(前述の通りn日~無制限の保護期間を設定可能) • テーブルDROPは行のINSERT前なら常に可能(誤ってテーブル作成した場合すぐなら消せる) • 行のDELETEの制約(前述の通りn日~無制限の保持期間を設定可能) • データ量を削減したい場合、適切な保持期間を設定しておいたうえで、 保持期間を過ぎた行を整合性を検証した上で(必要に応じて外部にアーカイブしつつ)削除する

    • 保持期間を過ぎた行の一括削除用PL/SQLパッケージファンクション DBMS_BLOCKCHAIN_TABLE.delete_expired_rows() • 行のUPDATEとMERGEが不可 • テーブルのTRUNCATEが不可 • パーティションのDROPが不可 • カラムの追加、削除および名前変更が不可 • データ型の変更や一部の長さ、精度の変更、NULL制約変更も不可 • Blockchain Tableの通常のテーブルへの変換、およびその逆の変換は不可 Blockchain Tableの特性①:データの削除、変更を制約 Copyright © 2021 Oracle and/or its affiliates 24 BLOCKCHAIN
  25. ハッシュ値によるデータの検証可能性により、テーブルの中で完結した証跡性を提供 Blockchain Tableの特性②:ハッシュチェーン Copyright © 2021 Oracle and/or its affiliates

    25 • 行のINSERT時、自動的に {行データ+前の行のハッシュ値} に対して計算したハッシュ値を隠しカラムに保持 • ある行のハッシュ値はその前の行のハッシュ値に依存 し、その前の行のハッシュ値はその前の前の行のハッ シュ値に依存し… →ハッシュチェーンのつながりで改ざんが検知可能に • ハッシュチェーンと行データを突合しながら辿ってい くことで、整合性(INSERT以降、行データが変更、削 除されていないこと)の検証が可能 • 検証用PL/SQLパッケージファンクション DBMS_BLOCKCHAIN_TABLE.verify_rows() ID User Value 1 Tom 500 2 Carol 176 3 Steve 500 4 John 176 5 Mike 332 6 Sarah 632 7 Eve 25 8 Prisha 850 Hash ADSJS %SHS SH@1 DHD3 *EGG AH11 LIO$ SHS4
  26. データのライフサイクル全体をカバーするための大がかりな仕掛けが必要 テーブル所有者も特権ユーザーも変更不能な追記オンリーのテーブル • Database Vaultで特権ユーザーを含めた全ユーザーのデータ更新、削除を禁止することは可能 • Database Vaultの設定変更の権限管理も重要 • データベース運用全体への影響がある

    INSERT以降、データが変更も削除もされていないことを証明 • 上述の追記オンリーの方法を確実に運用していることを記録する方法がひとつ • Unified Auditにより確実に記録される監査ログを用いる方法もアリ • 「やってない」ことを証明するためにはログ全量の保管が必要 • 監査ログはAudit Vaultを利用し、改ざん、削除されないよう確実に保全 • 監査ログをアーカイブする際には誰にも改ざんできないところに保管する • いずれの方法でも証明するには記録方法が適切か、記録の保管方法が適切かまでを含めた全体の監査 が必要になる →Blockchain Tableはこれらを実現するにはシンプルで容易な選択肢 既存の機能でBlockchain Tableと同等の特性を実現しようとすると… Copyright © 2021 Oracle and/or its affiliates 26
  27. • Blockchain Tableはシンプルで強力だが、セキュリティの中でカバーする領域はごく限定的 • データセキュリティのCIAのうち、完全性(Integrity)のみにフォーカス • 機密性(Confidentiality)、可用性(Availability)は他の機能でカバー • 組み合わせることでより効果を発揮 •

    例:Blockchain Tableで不正な変更、削除を防ぎつつ • Database Vaultで、参照アクセスも最低限のユーザーに限定する • Audit Vaultで、参照アクセスの監査ログを確実に取得し、不正がないかチェックする • Integrityについても、要求によっては他の機能のほうが向いている場合も • コマンドごと、ユーザーごとの制約をより細かい粒度で管理したい→Database Vault • テーブル単位ではなく行や列ごとに制約をかけたい→Virtual Private Database(VPD) 他のセキュリティ機能との組み合わせ、使い分け Copyright © 2021 Oracle and/or its affiliates 27
  28. • セキュリティ担保や監査上、証跡として利用 するログ(例:入退室ログ、アクセスログ) に耐改ざん性を付与 • 保存先を変えるだけで活用可能 • ログファイル→Blockchain Table •

    通常のテーブル→Blockchain Table • アプリケーション側の変更はゼロ~最小限 • 元々データベースに保存している場合は保 存先のテーブルをBlockchain Tableとして 作り直すだけでOK • 参照、検索、分析も通常のテーブルにある レコードの場合と同様の使い勝手 • コンプライアンスに関わる様々な業務データ の保存にも活用可能(例:会計や財務、契約 などの情報) • ブロックチェーン台帳と違い、大きなデー タサイズ、複雑なデータモデルにも対応可 • JSON形式で業務データを保存 • あとからのカラムの追加削除が不能なた め、JSON形式を上手に使うのが実践的 • (21cバージョン以降では)21cで追加され たJSON形式カラムを利用可能 • CLOB、BLOB形式でドキュメントファイルや 画像ファイルを保存 • 紙原本保存の慣行を不要に Blockchain Tableを活用する際の実装イメージ Copyright © 2021 Oracle and/or its affiliates 28 重要なログの保存先をBC Tableに変更 様々な業務データ、ドキュメントを保存
  29. 利用できないデータ型 • ROWID、UROWID、LONG、object type、REF、varray、nested table、 TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH

    LOCAL TIME ZONE 利用できない機能 • UPDATEイベントで発動するBEFORE ROWトリガーの定義 • ダイレクトパスロード • パラレルDMLでのデータインサート • Oracle Virtual Private Database(VPD)ポリシーの作成 • XAトランザクションの使用 Blockchain Tableのその他の制約 Copyright © 2021 Oracle and/or its affiliates 29
  30. • 【公式ブログ】Blockchain TableによるOracle Databaseのコンバージドデータベースの拡張 …Blockchain Tableの技術的な特長およびユースケースの紹介記事 https://blogs.oracle.com/oracle4engineer/blockchain-table • 【公式ドキュメント】 Oracle

    Database 21cドキュメントのBlockchain Tableについての箇所 https://docs.oracle.com/en/database/oracle/oracle-database/21/admin/managing-tables.html#GUID- 43470B0C-DE4A-4640-9278-B066901C3926 • 【ブログ】Oracle CloudでOracle Database 20c(プレビュー)のBlockchain Tableを使ってみた話 …Blockchain Tableを作成し、基本的な操作をテスト https://miyacle.com/2020/07/oracle-cloud%E3%81%A7oracle-database- 20c%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%AEblockchain- table%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E8%A9%B1/ • 【ブログ】Oracle CloudのAlways FreeのATPのAPEXを使って作った我が家の体重管理アプリを、Blockchain Tablesで改ざんできないようにした…Blockchain Tableを作成し、APEXで操作 https://qiita.com/maato/items/4a43841132074aa35d81 • 【ブログ】21cのブロックチェーン 表を使ってみる …Blockchain TableにネイティブJSON型(21cで追加)でデータを保存し、APEXから表示 https://apexugj.blogspot.com/2020/12/blockchain-table-with-json.html Blockchain Tableについての参考Webサイト Copyright © 2021 Oracle and/or its affiliates 30
  31. None