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

OCI Vault 機能概要と特徴

OCI Vault 機能概要と特徴

ユーザーの暗号鍵・シークレットをセキュアに集中管理することができるOCI Vaultの機能概要と特徴について

oracle4engineer

December 19, 2022
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 © 2022, Oracle and/or its affiliates
  2. ユーザーの暗号鍵・シークレットをセキュアに集中管理 OCIのストレージサービスはデフォルト暗号化 Vaultを利用することにより、暗号鍵の管理をデフォルトのOracle管理から ユーザー自身で管理することが可能 • 対応する暗号鍵: AES, RSA, ECDSA •

    暗号鍵の作成・削除・ローテーション、バージョン管理、バックアップ、モニタリング • OCIサービスの各サービスとシームレスに連携 • 鍵のインポート(BYOK)も可能 • クロスリージョン・レプリケーションによるDR対応 FIPS 140-2 Security Level 3 に準拠したHSMを利用 2種類の格納先 • Default Vault : 共有パーティション内で仮想的にユーザーのVaultを提供 • Virtual Private Vault : ユーザー専用に完全分離された専用パーティションとして提供 暗号鍵だけでなく、シークレット (パスワード、証明書、SSHキー、認証トークン)など もVault内で管理可能 Vault 4 Block Volume Object Storage Key A Key B 暗号化 暗号化 ユーザー File Storage Secret A コード Vault Copyright © 2022, Oracle and/or its affiliates
  3. Vault の基本要素 5 Vault 暗号鍵 シークレット Virtual Private Vault 専用HSM

    パーティション Default Vault 共有HSM パーティション • ユーザー自身による暗号鍵の管理 (AES, RSA, ECDSA) • BYOKのサポート • 高い信頼性と冗長化 • HSMまたはソフトウェアによるマスター暗号鍵の保護 • シークレットの安全な格納と取り出し • 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 ※ Databaseは、ExaCSとADB-Dのみ ※2021/10時点 Copyright © 2022, Oracle and/or its affiliates
  4. HSM • FIPS140-2 Level 3に準拠したHSMに格納 • 暗号化・復号はHSM内で処理実行される • マスター暗号鍵をエクスポートすることはできない •

    Default Vault (共有HSMパーティション) • 各テナントで共有され、トランザクションを最適化 • 無償、10Vaultまで、キーの制限なし • Virtual Private Vault (専用HSMパーティション) • 高い独立性と高速なトランザクションを保証(3K-5K) • 有償、1Vaultあたり最大3000キーの格納を保証 • バックアップ、クロスリージョン・レプリケーションのサポート ソフトウェア • サーバー内に暗号化され保管 • 暗号化・復号はサーバーメモリ内で処理実行される • マスター暗号鍵をエクスポートできる • 無償、キーの制限なし マスター暗号鍵の格納場所 6 Native OCI Storage Database Data Key1 TDE Data Key マスター 暗号鍵 Secrets Encrypts/ Decrypts Encrypts/ Decrypts Protected Copyright © 2022, Oracle and/or its affiliates
  5. サポートする暗号アルゴリズム 7 共通鍵暗号: 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 © 2022, Oracle and/or its affiliates
  6. 公開鍵を用いた暗号及びデジタル署名のフロー 8 送信者 受信者 平文データ 暗号化 データ 平文データ 公開鍵 秘密鍵

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

    OCI Auditは、マスター暗号鍵のアクセスを監視する 階層構造のメリット • 多数のデータ暗号鍵から、1つのマスター暗号鍵 に管理を集約 • 暗号鍵の漏洩時におけるリソースの影響範囲を制限 • 暗号鍵のローテーション時には、データ暗号鍵を再生成する必要が ない マスター暗号鍵とデータ暗号鍵の違い 9 Vault マスター 暗号鍵 Block Storage Object Storage File Storage Data Key1 Data Key2 Data Key3 Data Key1 Data Key2 Data Key3 Policies Auditing Copyright © 2022, Oracle and/or its affiliates
  8. 例)Object Storageにおける暗号化・復号のフロー 10 暗号化プロセス 復号プロセス 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 © 2022, Oracle and/or its affiliates
  9. Oracle Databaseの暗号化(TDE)のマスター暗号鍵のデフォルトは PKCS#12形式のキーストア・ファイルとしてストレージに格納されている キーストアからVaultに格納先を変更することが可能 Exadata Cloud Service、Autonomous Databases Dedicatedに対応 (2021/10現在)

    Vault管理にすることのメリット - マスター暗号鍵の運用管理をオラクル管理からユーザー管理に - FIP140-2 Level3に準拠したセキュアな鍵管理 - コンプライアンス要件対応 ExaCSの場合、PDB単位でマスター暗号鍵が異なる ADB-Dの場合、AD単位でマスター暗号鍵が異なる データベース暗号化(TDE)のマスター暗号鍵を保管 12 マスター暗号鍵 表領域 表領域暗号鍵 Oracle Keystore 各表領域暗号鍵を 暗号化/復号 Vault Copyright © 2022, Oracle and/or its affiliates
  10. 暗号化 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 コマンド例 14 Copyright © 2022, Oracle and/or its affiliates
  11. デジタル署名 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 コマンド例 15 Copyright © 2022, Oracle and/or its affiliates
  12. データ暗号鍵の作成~使用~監視 Oracle Cloudだけでなく暗号鍵ソリューションとしてVaultを利用 16 • データ暗号鍵の作成 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 © 2022, Oracle and/or its affiliates
  13. 17 • 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 © 2022, Oracle and/or its affiliates
  14. 可用性: SLA 99.9%, SLO 99.99% Vaultは、リージョナルサービスとして提供。内部的に各ADに複製が作成される TDE暗号鍵の格納は、ADB-D, ExaCS (2021/10時点)のみサポート。On-PやDB on

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

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

    3. 取得した認証情報を使って接続し、クエリー実行 4. クエリーの結果 アプリケーションは、Vaultに アクセスし、シークレットID(Secret OCID)からシー クレットを取得 シークレット(例えば、ユーザ名・パスワード・接続文 字列等)を使い、データベースにアクセスする いつ・だれが・どこからシークレットにアクセスしたかは、 OCI Monitoringで モニタリング可能 DBのパスワードを変更する場合、シークレットの値 も変更が必要 (シェルスクリプト、Functions、SDK 等で自動化可) Copyright © 2022, Oracle and/or its affiliates
  17. OCI CLI コマンド例 26 シークレット作成 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 © 2022, Oracle and/or its affiliates
  18. ユース・ケース 27 暗号鍵 シークレット • コンプライアンス要件上、データ暗号化の暗号鍵の管理 をサービスベンダーでなく、ユーザー自身で管理することが 必須、または推奨されている • コンプライアンス要件上、定期的な暗号鍵の変更が求め

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

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