BLOB ストレージを暗号化する機能をご紹介します。
現時点で、二つの暗号化方法が提供されていますので、比較してみましょう!!
Azure Storage Service Encryption (SSE)
【特徴】
SSE は暗号化有効化後に、書き込まれたデータだけを暗号化する。
※シャローコピーされた「VHD」は暗号化されません
無効にしても、暗号化されたデータは復号化されない。
既存データはコピーする事で暗号化できる。
暗号化、復号化は自動で行われる。
直接HDDからデータを複製された場合のみ保護される。
暗号化範囲:ストレージアカウント単位
暗号化テクノロジー:AES256
暗号化キーの管理:Microsoft
【サポート対象】
ページ BLOB/ブロック BLOB ※OS用ディスク、追加ディスクも対象
Standard Storage/Premium Storage
LRS/ZRS/GRS/RA-GRS
【サポート対象外】
マーケットプレースから展開した仮想マシンのOSデータ (シャローコピーのため)
クラシック ストレージアカウント
クラシックからマイグレーションされたストレージ
テーブル/キュー/ファイル のデータ
【暗号化手順】
(ストレージアカウント)ー[暗号化]ー[有効]を選択
以上、ちょーかんたん!
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ボリュームの暗号化ができると言う事がわかります。
①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スクリプト]を実行して作成します。
スクリプトの実行が完了した状態。※暗号化処理自体はバックグラウンドで行わています。
ディスクの暗号化が「有効」となっているのが確認できます。
Cドライブに「鍵」アイコンが! ※[Bek Volume]が確認できます。
ためしに、[Bek Volume] をフォーマットして再起動してみました。
BEKキーが無いので、起動ができません。
(割り当て解除)を行うと、Key Vault からBEKキーを取ってきてくれます。
ちなみに、
※別のホストに[再デプロイ]すると、[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
暗号化完了!!
暗号化中にデバイスの順序が変わるので、UUIDでマウントされてます。
「/dev/sdc」が追加されています。※Windows の[Bek Volume]ですね。
「/dev/sdc」をフォーマットすると、、、やはり起動できません。
同じく、(割り当て解除)を行うと、Key Vault からBEKキーを取ってきてくれます。