4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OCI Vaultに暗号化キーをインポートする

Last updated at Posted at 2020-03-06

Oracle Cloud Infrastructureには、OCI Vaultという暗号化キーをHSMで管理することができるサービスがあります。
通常ではクラウド上で暗号化されるデータの暗号化キーはクラウドベンダーが管理していますが、ユーザー自身が暗号キーの管理を行うという要件も増えています。例えば、OCI上のオブジェクトストレージやブロックボリュームなどのストレージ領域をユーザー自身のキーで暗号化させる場合、キーをインポートする必要があります。

ここでは、OCI Vaultの特徴とキーのインポート手順について改めて整理してみます

OCI Vaultの主な特徴

  • FIPS 140-2 Level 3に対応
  • AES, RSA, ECDSAの3種類の暗号アルゴリズムに対応(2021/2時点)
  • 暗号鍵の作成・削除・ローテーション、バックアップ、モニタリング
  • OCIサービスの各サービスとシームレスに連携
  • 鍵のインポート(BYOK)も可能

2種類のVault

  • Default Vault

    • デフォルト。共有パーティションとして提供され、無料で利用可
    • ただし、キーのローテーションが20回を超えると課金
  • Virtual Private Vault

    • ユーザー専用のパーティションが提供され、排他的に利用可能。性能面でのアドバンテージあり
    • Vault単位での課金

##暗号化キーのインポート手順

  • OCIコンソールからセキュリティ -> キー管理
    image.png

  • 公開ラッピング・キーをコピーする
    image.png

以下のようにVaultにインポートする暗号鍵を作成する

Copyした公開ラッピング・キーを貼り付けて、パブリック・キーを作成する ※ファイルに貼り付けする際改行が入らないように注意
$ vi public.pem
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtGtYW61HvGLGZDBY0tEHs/5AuRYAV5Vdwm0U4T1ly5tAqZ8h2y/T85nibk/7jovGMx/kbVGxP82uD99H8oPVgHVD664TEG0MhRspa3GlAoTna6E2mvYcbqpKr9wwPfNEjl4kGS31IrcTYiTt9152ow+NtaVnaaFxOO+ysEBf2jYyhF630cSA0+8LNUdL4STX7/x47h/sK9n4koaTIBn0BP567gQru3rn+ggF4o9X8jpfnuioKWaExRKbn5MioxEsfX0PocNVZPp3L370da+wJV1IQF1BPjDgnQ8IyartbRWuiH+W4l1CWnMUMybH6vg8H/1Vi55KNb/q6zO4OTKcvf/yFJDJPGZWC/9yDX1OCSF3M1Umj2YYr2/zg+17zyoMU/K2O+5YgNLIyyHceoOcVtKivBVhkdVoql7WIE3ufOFWVM1l3F+n5f3nANuSonQNkEj45x8eP6Z3+T7ZHio3VFvODIGuNl/T2hMdOWfpF+PJVGk16JI0js1XP1R+KbJTzAWvJpiiyZHPPEpT9pdVw7A52SUgohPhiGlp7kCPCGMcPtzQyjWf0GbtDVNoY+3HW5iKtoLGd042sqfys2T+XCtLlcnpxujy+7ymKssRbmPQ9mRGmN404Hkhzb26hmMSxlFPTjywPSrE/GDj+E5ETc5YOq69bAsxDRjHvZmJm50CAwEAAQ==
-----END PUBLIC KEY-----

暗号鍵を作成 (256bit)
$ openssl rand 32 > aes_key.bin

作成した暗号鍵をパブリック・キーでラッピングする > wrappedkey.bin (インポート用の暗号鍵)が作成される
$ openssl pkeyutl -encrypt -in "aes_key.bin" -inkey "public.pem" -pubin -out "wrappedkey.bin" -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256
  • 作成した暗号鍵を外部キーとしてインポートする。キーのシェイプは256ビットを選択
    image.png

  • インポート完了
    image.png

  • ポリシーに各サービスがインポートした鍵にアクセスができるようにポリシーに追加する
    Allow service blockstorage,objectstorage-<リージョン名>, FssOc1Prod, oke to use keys in compartment コンパートメント名

  • Object Storageのバケットを作成する際に指定する
    image.png

キー管理のドキュメントはこちら

##OCI CLIを利用した暗号化キーのインポート手順

# AESキーの作成
$ openssl rand 32 >aeskey

# Vaultのラッピングキーをコピーしwrapping_key というファイルで保存する 
-----BEGIN PUBLIC KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END PUBLIC KEY-----

# AESキーをラッピングキーで暗号化
option) -in AESキーファイル -inkey ラッピングキー -pubin -out 暗号化ラッピングされたAESキーファイル名

openssl pkeyutl -encrypt -in aeskey -inkey wrapping_key -pubin -out rapped_aeskey -pkeyopt rsa_padding_mode:oaep -pkeyopt rsa_oaep_md:sha256 
 
# ラッピング(暗号化)されたAESキーファイルをBase64でエンコード
base64  ./rapped_aeskey 

# インポートするキーはJSONフォーマットが必要。なのでwrapped_import_key.jsonという名前でJsonファイルを作成する
{ “wrappingAlgorithm”: “RSA_OAEP_SHA256”, “keyMaterial”: “Base64でエンコードしたラッピングキーをここに貼り付ける" }

# 暗号アルゴリズムを指定するkey_shape.jsonファイルを作成
{"algorithm": "AES", "length": 32}

# インポートの実行
option) --wrapped-import-key インポートするキー(JSON) --key-shape 指定した暗号アルゴリズム(JSON)

oci kms management key import --wrapped-import-key file://./wrapped_import_key.json --compartment-id ocid1.compartment.oc1..aaaaaaaa6it5wsxbeoyxpbxmq5aupsag7jo4mxsot7hhuxvjp5uqnvuxgf4a --display-name AEStestKey3 --endpoint https://xxxxxxxxx-management.kms.us-ashburn-1.oraclecloud.com --key-shape file://./key_shape.json

参考になるスクリプトはこちら
OCI Vaultで電子署名を行う

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?