ストレージデータの暗号化

BLOB ストレージを暗号化する機能をご紹介します。
現時点で、二つの暗号化方法が提供されていますので、比較してみましょう!!


Azure Storage Service Encryption (SSE)

【特徴】
SSE は暗号化有効化後に、書き込まれたデータだけを暗号化する。
※シャローコピーされた「VHD」は暗号化されません
無効にしても、暗号化されたデータは復号化されない。
既存データはコピーする事で暗号化できる。
暗号化、復号化は自動で行われる。
直接HDDからデータを複製された場合のみ保護される。

暗号化範囲:ストレージアカウント単位
暗号化テクノロジー:AES256
暗号化キーの管理:Microsoft

【サポート対象】
ページ BLOB/ブロック BLOB ※OS用ディスク、追加ディスクも対象
Standard Storage/Premium Storage
LRS/ZRS/GRS/RA-GRS

【サポート対象外】
マーケットプレースから展開した仮想マシンのOSデータ (シャローコピーのため)
クラシック ストレージアカウント
クラシックからマイグレーションされたストレージ
テーブル/キュー/ファイル のデータ

【暗号化手順】

(ストレージアカウント)ー[暗号化]ー[有効]を選択

blob015

以上、ちょーかんたん!


Azure Disk Encryption

【特徴】
既存データの暗号化が可能
※ADEを有効化すると、ディープコピーが実行される
暗号化する際は仮想マシンが起動している事
[AzureAD][Key Vault][認証用アプリケーション]が必要
ストレージアカウントから複製されたVHDファイルを保護します。

暗号化範囲:仮想マシン単位
暗号化テクノロジー:Windows=BitLocker/Linux=DM-Crypt ※KEK:RSA 2048
暗号化キーの管理:ユーザー (Azure Key Vault)
※暗号化対象となる、仮想マシンと同一リージョンであること

【サポート対象】
ページ BLOB ※OSディスク、追加ディスクも対象
Standard Storage/Premium Storage
LRS/ZRS/GRS/RA-GRS

【サポート対象外】
クラシック ストレージアカウント
仮想マシン ベーシック
ブロック/テーブル/キュー/ファイル のデータ

【しくみ】
[BitLocker のおさらい]
OSボリュームを暗号化すると起動時にPINを求められる。
OSボリュームを暗号化するには、TPMが必要。
もしものために回復パスワードor回復キーが用意されている。
回復パスワード(48桁):「ファイルに保存する」を選択すると、作成される。
回復キー(BEK):「USBに保存する」を選択すると、作成される。

自動ロック解除するには
OSボリューム:TPM or 回復キーが必要
データボリューム:OSボリュームも暗号化している必要がある。回復キーが必要

これらを踏まえると、「TPM」と「回復キー(BEK)」があれば、Azure上でもOSボリュームの暗号化ができると言う事がわかります。

blob016-1

①AADに接続し、AppのID/Secretを使いOAuth2.0認証を受ける
②AADよりトークンをもらう
③トークンを持って認証し、[シークレット]を書き込む。同時に[Bek Volume]内にも格納
④仮想マシン起動時に[Bek Volume]からBEKキーを読み出す。
※この図で言うと、[Key Vault=TPM][シークレット=BEK]に相当します。

Encryption extension:VM Agentに暗号化拡張機能が追加される。状態の取得。
Bek Volume:USBキーの役割(BEKを格納)。ローカルストレージ。
Client ID:Key Vaultへのアクセスポリシー登録時に必要
Client Secret:AADへのApp認証時に必要
キー:Key Encryption Key (KEK)
シークレット:Windows=BEK/Linux=パスフレーズ (共にKEKで暗号化済み)

【暗号化手順】
全体の流れ

Step1:「認証用アプリケーション」の作成 ※ポータルで作成可能
Step2:「Key Vault」「キー」の作成 ※ポータルで作成可能
Step3:「ディスク暗号化」の実行

【Windows OS編】
手順が多いので、[PowerShellスクリプト]を実行して作成します。

スクリプトの実行が完了した状態。※暗号化処理自体はバックグラウンドで行わています。

blob018

ディスクの暗号化が「有効」となっているのが確認できます。

blob017

Cドライブに「鍵」アイコンが! ※[Bek Volume]が確認できます。

blob019


ためしに、[Bek Volume] をフォーマットして再起動してみました。

BEKキーが無いので、起動ができません。

blob020

(割り当て解除)を行うと、Key Vault からBEKキーを取ってきてくれます。

blob021

ちなみに、
※別のホストに[再デプロイ]すると、[Bek Volume] も再作成されます。


【Linux OS編】

[Linuxサポート条件]
RHEL 7.2
CentOS 7.2(SKU7.2n)
Ubuntu 16.04
RAM (最小)4GB/(推奨)7GB
SELinuxを無効

Step3:「ディスク暗号化」の実行 ※Azure CLI にて実施

azure vm enable-disk-encryption –resource-group tushigami-group –name tushigami15 –aad-client-id 0b3ec69f707a76 –aad-client-secret 7e7510a9 –disk-encryption-key-vault-url https://tushigami-kv.vault.azure.net –disk-encryption-key-vault-id /subscriptions/06dc9afa-a1cvaults/tushigami-kv –volume-type OS

blob022

暗号化完了!!
暗号化中にデバイスの順序が変わるので、UUIDでマウントされてます。

blob024

「/dev/sdc」が追加されています。※Windows の[Bek Volume]ですね。

blob023

「/dev/sdc」をフォーマットすると、、、やはり起動できません。

blob025

同じく、(割り当て解除)を行うと、Key Vault からBEKキーを取ってきてくれます。