Azure SQL Managed Instanceでのカスタマーマネージドキーによるデータ暗号化設定
このブログシリーズ 「クラウドセキュリティ 実践集」 では、一般的なセキュリティ課題を取り上げ、「なぜ危険なのか?」 というリスクの解説から、「どうやって直すのか?」 という具体的な修復手順(コンソール、Azure CLI、Terraformなど)まで、分かりやすく解説します。
この記事では、Azure SQL Managed Instanceにおけるカスタマーマネージドキー(CMK)による透過的データ暗号化(TDE)の実装について、セキュリティリスクの詳細分析と、エンタープライズレベルの実装方法を解説します。
ポリシーの説明
Azure SQL Managed Instanceにおいて、カスタマーマネージドキー(CMK)による透過的データ暗号化(TDE)を実装することで、暗号化キーのライフサイクル全体を組織が完全に制御し、規制コンプライアンス要件を満たしながら、最高レベルのデータ保護を実現する必要があります。
修復方法
前提条件と準備
実装前に以下の要件を確認してください:
- 権限要件
- Azure SQL Managed Instance Contributor
- Key Vault Contributor
- User Access Administrator(ロール割り当て用)
- 技術要件
- Azure Key Vault(Premium SKU推奨)
- SQL Managed Instance(Business CriticalまたはGeneral Purpose)
- Azure Private Endpointの構成(推奨)
- ネットワーク要件
- Key VaultとSQL Managed Instance間の通信経路
- ファイアウォール規則の適切な設定
Azure Portalでの詳細実装手順
Phase 1: Azure Key Vaultの高セキュリティ設定
- Key Vaultの作成と強化設定
- Azure Portal → 「リソースの作成」 → 「セキュリティ」 → 「Key Vault」
- 基本設定
- 名前: kv-sqlmi-prod-<region>-<unique>
- サブスクリプション: <production-subscription>
- リソースグループ: rg-sqlmi-security-prod
- リージョン: <SQL MIと同一リージョン>
- 価格レベル: Premium(HSMサポート)
- アクセス構成(重要)
- 権限モデル: Azure ロールベースのアクセス制御(RBAC)
- 削除保護を有効にする(必須)をチェック
- 消去保護を有効にする(必須)をチェック
- 保持日数: 90日
- ネットワーク設定
- ネットワーク接続: プライベートエンドポイント
- ファイアウォール例外: 以下をチェック
- 信頼されたMicrosoftサービスを許可
- 監視設定
- 診断設定: 有効
- ログの送信先: Log Analytics Workspace
- 監視対象: 以下をチェック
- AuditEvent
- AllMetrics
Phase 2: 暗号化キーの作成と管理
- Key Vaultでの暗号化キー作成
- Key Vault → 「キー」 → 「生成/インポート」
- キー設定の詳細
- オプション: 生成
- 名前: sqlmi-tde-key-prod-<date>
- キーの種類: RSA-HSM(HSM保護)
- RSAキーサイズ: 3072(推奨)または4096(最高セキュリティ)
- 有効化日: <現在の日時>
- 有効期限: <1年後>(定期ローテーション用)
- 操作の許可: 以下をチェック
- Encrypt
- Decrypt
- Wrap Key
- Unwrap Key
- Sign
- Verify
- キーローテーションポリシーの設定
- 自動ローテーション: 有効
- ローテーション間隔: 90日
- 有効期限前の通知: 30日
Phase 3: SQL Managed Instanceのセキュリティ設定
- マネージドIDの有効化

- SQL Managed Instance → 「ID」 → 「システム割り当て」
- 状態: オン
- 「保存」をクリック
- オブジェクトIDをメモ(重要)
- ユーザー割り当てマネージドIDの作成(オプション・推奨)

- 「リソースの作成」 → 「ID」 → 「ユーザー割り当てマネージド ID」
- 名前: id-sqlmi-tde-prod
- SQL Managed Instance → 「ID」 → 「ユーザー割り当て」
- 「追加」 → 作成したIDを選択
Phase 4: アクセス権限の設定(RBAC)
- Key Vaultへのロール割り当て
- Key Vault → 「アクセス制御 (IAM)」 → 「ロールの割り当てを追加」


- ロール: Key Vault Crypto Service Encryption User
- アクセスの割り当て先: マネージド ID
- 選択:
- SQL Managed Instance(システム割り当て)
- id-sqlmi-tde-prod(ユーザー割り当て)
- 追加のセキュリティロール(監査用)
- ロール: Key Vault Reader
- アクセスの割り当て先: セキュリティチーム/監査者グループ
Phase 5: TDE with CMKの設定
- SQL Managed InstanceでのTDE設定
- SQL Managed Instance → 「透過的なデータ暗号化」
- カスタマーマネージドキーの設定

- 暗号化の種類: カスタマーマネージド キー
- 「キーの選択」をクリック
- Key Vault: kv-sqlmi-prod-<region>
- キー: sqlmi-tde-key-prod-<date>
- バージョン: 「現在のバージョンを自動的に使用」(推奨)
- 「選択」 → 「保存」
- 暗号化状態の確認
- 暗号化の状態: 暗号化済み
- 暗号化の進行状況: 100%
- 最終更新日時: <確認>
まとめ
Azure SQL Managed InstanceにおけるカスタマーマネージドキーによるTDEの実装は、規制コンプライアンス要件を満たし、データセキュリティを最高レベルに引き上げる重要な対策です。
適切な実装により、暗号化キーの完全な制御、包括的な監査証跡、職務分離の実現が可能となり、最も厳格なセキュリティ要件にも対応できます。
この問題の検出と継続的な監視は、弊社が提供するSecurifyのCSPM機能で自動化できます。設定の不備を即座に検出し、コンプライアンス状態をリアルタイムで可視化することで、セキュリティ運用の効率化を実現します。
最後までお読みいただきありがとうございました。この記事が皆さんのクラウドセキュリティ強化の一助となれば幸いです。