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

OCI Vault 概要

OCI Vault 概要

ユーザーの暗号鍵・シークレットをセキュアに集中管理するOCI Vaultの機能概要と

oracle4engineer

November 18, 2024
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. OCI上での暗号化モデル 3 クライアントサイド・暗号化 ユーザーのデータはユーザー自身で事前に 暗号化しておき、OCIへ送信する Oracleマネージド・暗号化 デフォルトでは、OCIにあるユーザー・データ はOracleマネージドの暗号鍵で暗号化 されている ユーザーはその暗号鍵を自身で管理する

    ことはできない カスタマーマネージド・暗号化 暗号鍵をユーザー自身で管理することが可能 暗号鍵の作成・削除・ローテーション、 バックアップ、モニタリング等の運用管理 ユーザー自身で用意した暗号鍵をインポート して利用可能 暗号鍵は、FIPS140-2 Level 3に準拠した HSMに格納してセキュアに保護 PCIDSS等のコンプライアンス要件に対応 low high Copyright © 2024, Oracle and/or its affiliates
  2. ユーザーの暗号鍵・シークレットをセキュアに集中管理 OCIの各ストレージサービスはデフォルト暗号化 暗号鍵の管理をデフォルトのOracle管理からユーザー自身による管理を実現 • 対応する暗号鍵: AES, RSA, ECDSA • 暗号鍵の作成・削除、ローテーション、インポート、バージョン管理、モニタリング等

    • キー作成や署名等のオペレーションはOCIのAPIを使用 • OCIサービスの各サービスとシームレスに連携 • クロスリージョン・レプリケーション、バックアップ (※Virtual Private Vaultのみ) FIPS 140-2 Security Level 3 に準拠したHSMを利用 2種類のVault • Default Vault : 共有パーティション内で仮想的にユーザーのVaultを提供 • Virtual Private Vault : ユーザー専用に完全分離された専用パーティションとして提供 シークレット (パスワード、証明書、SSHキー、認証トークン)なども格納可能 新機能 External KMS、Dedicated KMSの提供 Vault 4 Block Volume Object Storage Key A Key B 暗号化 暗号化 ユーザー File Storage Secret A コード Vault Copyright © 2024, Oracle and/or its affiliates
  3. Vault の基本要素 5 Vault 暗号鍵 シークレット Virtual Private Vault Default

    Vault • ユーザー自身による暗号鍵の管理 (AES, RSA, ECDSA) • HSMまたはソフトウェアによるマスター暗号鍵の保護を選択 • BYOKのサポート • 高い信頼性と冗長化 • Vaultの暗号鍵によってシークレットのストレージを暗号化 • シークレットの安全な格納と取り出し • OCI CLI, REST API, 各種SDK, Terraformの幅広い利用 Block Storage Object Storage File Storage Streaming Kubernetes Database System HSM HSM Keys Software Keys HSM Keys Software Keys HSM Copyright © 2024, Oracle and/or its affiliates
  4. HSM マスター暗号鍵は、FIPS140-2 Level 3に準拠したHSMに格納 暗号化・復号はHSM内で処理され、鍵がHSM外に出ることはない マスター暗号鍵をエクスポートすることはできない Default Vault (共有HSMパーティション) -

    各テナントで共有され、トランザクションを最適化 - 無償、10Vaultまで、 1Vaultあたり最大100キー Virtual Private Vault (専用HSMパーティション) - 高い独立性と高速なトランザクションを保証(3K-5K) - 有償、1Vaultあたり最大1000キーの格納を保証 - バックアップ、クロスリージョン・レプリケーションのサポート ソフトウェア マスター暗号鍵は、Vaultサーバー内に暗号化され保管 暗号化・復号は、サーバーのCPU/メモリで処理実行される マスター暗号鍵のエクスポートが可能 無償 マスター暗号鍵の保護方式 6 Native OCI Storage Database Data Key1 TDE Data Key マスター 暗号鍵 Secrets Encrypts/ Decrypts Encrypts/ Decrypts Protected Copyright © 2024, Oracle and/or its affiliates
  5. 専用KMS 専用のHSMパーティションとユーザー自身での直接管理が可能 FIPS 140-2 Level 3に準拠したHSM 3つ以上のHSMパーティションから構成されたHSMクラスターで 高可用性とトランザクション性能を向上 PKCS#11 APIに対応したライブラリを提供

    - 暗号化/復号、署名/検証、ダイジェスト関数等 ユーザー管理機能 - Crypto Officer: ユーザーの作成、キーの検索・所有権の転送などの管理業務 - Crypto User: キーの生成、公開キーのエクスポートなどの実運用を行う アプリケーションの暗号化や署名機能に組み込んだ用途に対応 OCIのストレージ・サービスなどのネイティブ・サービスは対応しない 作成可能なキー数は最大3000 Dedicated KMS Copyright © 2024, Oracle and/or its affiliates 7 Dedicated KMS HSM Cluster HSM Partition ユーザー管理 ユーティリティ キー管理 ユーティリティ PKCS#11 Library Crypto Officer (暗号管理者) Crypto User (暗号ユーザー) HSM Partition HSM Partition 暗号化・復号 署名・検証
  6. 各Vaultの違い Copyright © 2024, Oracle and/or its affiliates 9 Default

    Vault Virtual Private Vault Dedicated KMS External KMS 特徴 無償でHSMを使用できる 基本のVaultサービス 専用パーティションによりセキュア かつ安定した暗号処理パフォー マンスを提供 Default Vaultでは不足する リソース確保、レプリケーションに よる可用性が必要な用途向け 専用パーティションによりセキュア かつ安定した暗号処理パフォー マンスを提供 PKCS#11の標準ライブラリを使 用したアプリケーションなど、より HSMネイティブの機能が必要な 用途向け 外部HSMの暗号鍵と連携した 暗号処理サービス 既存のHSMを有効活用する 用途向け 対応するOCIサービスの 暗号化 各Storage Service Database Cloud Service等 各Storage Service Database Cloud Service等 × 各Storage Service Database Cloud Service等 キーの制限 100 1000 3000 100 HSMパーティション 共有 占有 占有 外部HSMに依存 バックアップ × 〇 〇 外部HSMに依存 クロスリージョン・レプリケーション 〇 〇 × N/A HSM内のコントロール × × 〇 外部HSMに依存 API OCI CLI, SDK OCI CLI, SDK PKCS#11 OCI CLI, SDK 価格 最初の20キー・バージョン無料 以降1キー・バージョンあたり ¥83/月 1 Vaultあたり ¥577/時間 1 KMS(3パーティション)あたり ¥813/時間 1キー・バージョンあたり ¥465/月
  7. サポートする暗号アルゴリズム 10 共通鍵暗号: AES 128/196/256 公開鍵暗号: RSA 2048/3072/4096, ECDSA NIST

    P-256/NIST P-384/NIST P-521 暗号アルゴリズム 暗号 デジタル署名 AES Yes No RSA Yes Yes ECDSA No Yes Copyright © 2024, Oracle and/or its affiliates
  8. 公開鍵を用いた暗号及びデジタル署名のフロー 11 送信者 受信者 平文データ 暗号化 データ 平文データ 公開鍵 秘密鍵

    暗号化 復号 送信者 受信者 メッセージ ダイジェスト デジタル署名 秘密鍵 公開鍵 暗号化 復号 デジタル署名 で真正性を確認 暗号化・復号 デジタル署名 Copyright © 2024, Oracle and/or its affiliates
  9. 2階層で管理する暗号鍵 • データ暗号鍵 は実際のユーザーデータを暗号化する • マスター暗号鍵 はデータ暗号鍵を暗号化する • IAMポリシーはマスター暗号鍵のアクセスを制御する •

    OCI Auditは、マスター暗号鍵のアクセスを監視する 階層構造のメリット • 多数のデータ暗号鍵から、1つのマスター暗号鍵 に管理を集約 • 暗号鍵の漏洩時におけるリソースの影響範囲を制限 • 暗号鍵のローテーション時には、データ暗号鍵を再生成する必要が ない マスター暗号鍵とデータ暗号鍵の違い 12 Vault マスター 暗号鍵 Block Storage Object Storage File Storage Data Key1 Data Key2 Data Key3 Data Key1 Data Key2 Data Key3 Policies Auditing Copyright © 2024, Oracle and/or its affiliates
  10. 例)Object Storageにおける暗号化・復号のフロー 13 暗号化プロセス 復号プロセス Vault マスター 暗号鍵 Object Storage

    Object Storage Buckets Buckets ID & Access Management Policies 1 2 3 4 5 6 7 8 平文 データ 暗号化された データと暗号化 済み暗号化鍵を バケットに格納 データ暗号鍵のリクエスト 暗号化済み暗号化鍵 Data Key Data Key Data Key Data Key Data Key Data Key 平文データを 暗号鍵を使用 して暗号化する FIPS 140-2 Level 3 Vaultは データ暗号鍵と 暗号化された データ暗号鍵の 両方を送信 平文 データ マスター暗号鍵は 生成もしくはインポートする Copyright © 2024, Oracle and/or its affiliates
  11. Oracle Databaseの暗号化(TDE)のマスター暗号鍵のデフォルトは PKCS#12形式のキーストア・ファイルとしてストレージに格納されている キーストアからVaultに格納先を変更することが可能。逆はできない Autonomous Databases、BaseDB、ExaDB-Dに対応 Vault管理にすることのメリット - マスター暗号鍵の運用管理をオラクル管理からユーザー管理に -

    FIP140-2 Level3に準拠したセキュアな鍵管理 - コンプライアンス要件対応 ExaDB-Dの場合、PDB単位でマスター暗号鍵が異なる ADB-Dの場合、AD単位でマスター暗号鍵が異なる リストア時の運用要件を満たすかを要検討 - 別リージョンにリストアする場合は、クロスリージョン・レプリケーションが必要 データベース暗号化(TDE)のマスター暗号鍵を保管 15 マスター暗号鍵 表領域 表領域暗号鍵 Oracle Keystore 各表領域暗号鍵を 暗号化/復号 Vault Copyright © 2024, Oracle and/or its affiliates
  12. 暗号化 oci kms crypto encrypt --key-id マスター暗号鍵OCID --plaintext 平文データ(Base64, 最大4K)

    --endpoint 暗号エンドポイ ント --encryption-algorithm 暗号アルゴリズム(AES_256_GCM, RSA_OAEP_SHA_1, RSA_OAEP_SHA_256) 復号 oci kms crypto decrypt –-key-id マスター暗号鍵OCID –-ciphertext 暗号データ –-endpoint 暗号エンドポイント --encryption-algorithm 暗号アルゴリズム(AES_256_GCM, RSA_OAEP_SHA_1, RSA_OAEP_SHA_256) マスター暗号鍵からデータ暗号鍵の生成 (AESのみ) oci kms crypto generate-data-encryption-key --key-id マスター暗号鍵OCID --include-plaintext-key (true/false) --endpoint Vaultの暗号エンドポイント --key-shape 暗号アルゴリズム マスタ暗号鍵のインポート oci kms management key import --wrapped-import-key RSAで暗号化したマスター暗号鍵 --compartment-id コンパートメ ントOCID --display-name マスター鍵名 --endpoint 暗号エンドポイント --key-shape キーの暗号アルゴリズム OCI CLI コマンド例 18 Copyright © 2024, Oracle and/or its affiliates
  13. デジタル署名 oci kms crypto signed-data sign --key-id マスター暗号鍵OCID --message メッセージダイジェスト

    --signing-algorithm 署名アルゴリズム --endpoint 暗号エンドポイント デジタル署名検証 oci kms crypto verified-data verify --key-id マスター暗号鍵OCID --message メッセージダイジェスト --signing-algorithm 署名アルゴリズム --endpoint 暗号エンドポイント –signature デジタル署名(デジタル署名時に生成される) --key-version-id 暗号鍵OCID (デジタル署名時に生成される) OCI CLI コマンド例 19 Copyright © 2024, Oracle and/or its affiliates
  14. データ暗号鍵の作成~使用~監視 Oracle Cloudだけでなく暗号鍵ソリューションとしてVaultを利用 20 • データ暗号鍵の作成 oci kms crypto generate-data-encryption-key

    --key-id マスター暗号鍵OCID --include-plaintext-key true --endpoint Vaultの暗号エンドポ イント --key-shape 暗号アルゴリズム(2020/12時点ではAESのみ) • AES 256bit データ暗号鍵の作成 oci kms crypto generate-data-encryption-key ¥ --key-id ocid1.key.oc1.iad.bbpadvkaaacuu.abuwcljts3naex25mzgigkabghvlf45paa65hssuibn7p67zlzfhtui5lxxx ¥ --include-plaintext-key false ¥ --endpoint https://bbpadvkaaacuu-crypto.kms.us-ashburn-1.oraclecloud.com ¥ --key-shape "{¥"algorithm¥": ¥"AES¥", ¥"length¥": 32}" 実行結果 "data": { “ciphertext”: “IUjJ6Oknos1iAN6wCOkAux8JrO4SiWWI8++VGV6ugAAAAA=xxxxxxxxxx”, -->データ暗号鍵(マスタ暗号鍵で暗号済み) “plaintext”: “UL9uLGEjfEaxPbiQHCCf8i5O5+4//uXsRKz9vrrm2xxx ”, --> データ暗号鍵(平文) ※暗号処理で使用し、使用後に破棄 "plaintext-checksum": "599189376" } Copyright © 2024, Oracle and/or its affiliates
  15. 21 • OpenSSLで作成したファイルを暗号化する場合 暗号化にはデータ暗号鍵(平文)を使用する openssl aes-256-cbc -e -in test.txt -out

    enctest.txt -pass pass: UL9uLGEjfEaxPbiQHCCf8i5O5+4//uXsRKz9vrrm2xxx 暗号化した後は、暗号化ファイルとデータ暗号鍵(マスタ暗号鍵で暗号済み)の両方を保存しておく。データ暗号鍵(平文)は保存しない • OpenSSLで作成したファイルを復号する場合 復号には、データ暗号鍵(マスタ暗号鍵で暗号済み) をデータ暗号鍵(平文)に戻す必要がある。そのために、Vaultのマスター暗号鍵を使って復号する oci kms crypto decrypt --key-id マスター暗号鍵ID -- ciphertext データ暗号鍵 --endpoint Vaultの暗号エンドポイント oci kms crypto decrypt ¥ --key-id ocid1.key.oc1.iad.bbpadvkaaacuu.abuwcljts3naex25mzgigkabghvlf45paa65hssuibn7p67zlzfhtui5lqta ¥ --ciphertext " IUjJ6Oknos1iAN6wCOkAux8JrO4SiWWI8++VGV6ugAAAAA=xxxxxxxxxx " ¥ --endpoint https://bbpadvkaaacuu-crypto.kms.us-ashburn-1.oraclecloud.com • OpenSSLで暗号化ファイルを復号する openssl aes-256-cbc -d -in enctest.txt -out dectest.txt -pass pass:UL9uLGEjfEaxPbiQHCCf8i5O5+4//uXsRKz9vrrm2xxx データ暗号鍵の作成~使用~監視 Oracle Cloudだけでなく暗号鍵ソリューションとしてVaultを利用 Copyright © 2024, Oracle and/or its affiliates
  16. 可用性: SLA 99.9%, SLO 99.99% Vaultは、リージョナルサービスとして提供。内部的に各ADに複製が作成される On-PやDB on IaaSのOracle DatabaseでHSMに格納したい場合は、Oracle

    Key Vault(オンプレミス製品)を使用する マスター暗号鍵のローテーションは、バージョンとして過去の鍵も保管されるため、既に暗号されたデータへの影響はない また、ローテーション後は、最新の鍵が暗号/復号処理に使用される マスター暗号鍵が危殆化してしまった場合、強制的にデータの再暗号を実施し、危殆化した鍵を削除しなければならない Vault及び暗号鍵の削除実行後は、デフォルト30日間 取り消しが可能 猶予期間を過ぎた削除プロセス完了後は、暗号化されたデータには永久にアクセスできない Default Vaultは、バックアップやクロスリージョン・レプリケーションを実行することはできない FAQ 26 Copyright © 2024, Oracle and/or its affiliates
  17. Vaultのシークレット管理 28 セキュア • シークレットはHSMで管理されたセ キュアなデータベースに暗号化され 格納 • TLS通信の強制 •

    IAMによる粒度の細かい アクセスコントール • OCI Monitoringによる ログの集約とモニタリング 自動化 • スケーラブル • 自動化のプログラムために CLI , SDK, Terafformを提供 • バージョン管理の自動化 手軽さ • 一元化されたロケーションと管理 APIの提供 • どこにシークレットを 保存しているか覚える必要は ない • 25KBまでのデータを格納 • 無償 Copyright © 2024, Oracle and/or its affiliates
  18. アプリケーションでのシークレット利用例 29 Application Secrets Database 1. Secret OCIDからシークレットを取得 2. データベースの認証情報

    3. 取得した認証情報を使って接続し、クエリー実行 4. クエリーの結果 アプリケーションは、Vaultに アクセスし、シークレットID(Secret OCID)からシー クレットを取得 シークレット(例えば、ユーザ名・パスワード・接続文 字列等)を使い、データベースにアクセスする いつ・だれが・どこからシークレットにアクセスしたかは、 OCI Monitoringで モニタリング可能 DBのパスワードを変更する場合、シークレットの値 も変更が必要 (シェルスクリプト、Functions、SDK 等で自動化可) Copyright © 2024, Oracle and/or its affiliates
  19. OCI CLI コマンド例 30 シークレット作成 oci vault secret create-base64 --compartment-id

    コンパートメントID --secret-name シークレット名 --vault-id ボールトID -- key-id キーID --secret-content-content シークレット値 シークレット値の取得 oci secrets secret-bundle get --secret-id シークレットID --query 'data."secret-bundle-content".content' --raw-output シークレット更新 (新規バージョン作成) oci vault secret update-base64 --secret-id シークレットID --secret-content-contentシークレット値 シークレット削除 oci vault secret schedule-secret-deletion --secret-id シークレットID ※シークレット値は、Base64エンコードを事前にしておくことが必要 Copyright © 2024, Oracle and/or its affiliates
  20. ユース・ケース 31 暗号鍵 シークレット • コンプライアンス要件上、データ暗号化の暗号鍵の管理 をサービスベンダーでなく、ユーザー自身で管理することが 必須、または推奨されている • コンプライアンス要件上、定期的な暗号鍵の変更が求め

    られている • コンプライアンス要件上、暗号鍵はHSMに格納 することを推奨事項として明記されている • HSMの利用の場合、FIPS140-2 Level3準拠することが 金融や公共・ヘルスケアといったシステムではデファクトスタ ンダートとして求められる • データの暗号化やデジタル署名のクラウド基盤 • バッチやアプリケーション内でデータベースの ユーザー名・パスワード、接続文字列といった 接続情報を直接ハードコーディングすることを 禁止したい • クラウドリソースのユーザー名やパスワード、 SSHキーなどをメールやチャットツールなどで 気軽に共有してしまう運用を辞めたい • Terraformやコンテナ等のインフラの自動化管理ジョブの中 にできる限り機微な情報を含めたくない • だれが、いつ、どこからシークレットにアクセスしたのか、特定す るための監視手段が必要 • シークレットの有効期限を設定したい Copyright © 2024, Oracle and/or its affiliates
  21. 価格 32 暗号鍵 シークレット Default Vault デフォルト 共有パーティションとして提供 10Vaultまで使用可 テナントあたり20キー・バージョンまで無償、以降1キー・バージョン

    ごとに(¥83) ※新規キー作成は、1キー・バージョンとしてカウント キーのローテーションは、1キー・バージョンとしてカウント Virtual Private Vault HSM内にユーザー専用のパーティションを提供し、仮想HSM と同等の分離レベルを提供 1 Vaultあたり最大 1000キーまで格納可能 1 Vaultあたり: (¥577/hour) ※上記のVaultではなく、ソフトウェア保護キーの場合は制限なく無償 無償 5,000 シークレット 1シークレット 最大50バージョン 1シークレット 最大25KB 100000 Write APIコール/月 無制限 Read APIコール/月 Copyright © 2024, Oracle and/or its affiliates