適用対象: Azure Synapse Analytics 専用 SQL プール (旧称 SQL DW)
Tip
Microsoft Fabric Data Warehouse は、将来のアーキテクチャ、組み込みの AI、および新機能を備えた、Data Lake 基盤上のエンタープライズ 規模のリレーショナル ウェアハウスです。 データ ウェアハウスを初めて使用する場合は、Fabric Data Warehouseから始めます。 既存の dedicated SQL プール ワークロードは、Fabric にアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。
- Fabric無料試用版を開始します。
- Fabric Data Warehouseの移行アシスタント。
この記事では、Azure Synapse AnalyticsでAzure Key Vaultの鍵を使って透明なデータ暗号化(TDE)を行う方法を解説します。 Bring Your Own Key (BYOK) のサポートのため、Azure Key Vault と統合される TDE の詳細については、Azure Key Vault のユーザー管理キーを使用する TDE に関するページを参照してください。
Note
この記事では、スタンドアロン専用SQLプール(旧SQL DW)について扱っています。
- Azure Synapse Analytics専用SQLプール(旧SQL DW)については、TDEプロテクターをサーバーレベルで設定します。 そのサーバーに関連付けられたすべての暗号化データベースはTDEプロテクターを引き継ぎます。
- Synapseワークスペース内の専用SQLプールおよびサーバーレスSQLプールでデータを暗号化し、ワークスペースレベルで設定された顧客管理キーを使用します。 Synapse ワークスペース内の専用 SQL プールの透過的なデータ暗号化の詳細については、 Azure Synapse Analytics の暗号化に関するページを参照してください。
PowerShell の前提条件
- Azure サブスクリプションがあり、そのサブスクリプションの管理者である必要があります。
- [推奨されますが、必須ではありません] TDE 保護機能のキー マテリアルのローカル コピーを作成するためのハードウェア セキュリティ モジュール (HSM) またはローカル キー ストアを用意します。
- Azure PowerShell がインストールされ、実行されている必要があります。
- TDE に使用する Azure Key Vault とキーを作成します。
-
ハードウェア セキュリティ モジュール (HSM) と Azure Key Vault を使用する手順
- TDE に使用するには、キー コンテナーに次のプロパティが必要です。
- 論理的な削除と消去保護
-
ハードウェア セキュリティ モジュール (HSM) と Azure Key Vault を使用する手順
- TDE に使用するには、キーには次の属性が必要です。
- アクティブ化された日時(設定された場合)は、過去の日付と時刻である必要があります。
- 有効期限(設定された場合)は、将来の日付と時刻である必要があります。
- キーは有効状態になっている必要があります。
- "取得"、"キーのラップ"、"キーのラップ解除" の各操作を実行できる
- Azure Key Vault Managed HSM キーを使用するには、Azure CLIを使用して Managed HSM を作成してアクティブ化する手順に従います。
Az PowerShell モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。
Azure Key Vault の詳細については、Azure Key Vault の PowerShell の手順 と、 PowerShell で Azure Key Vault の論理的な削除を使用する方法に関するページを参照してください。
Microsoft Entra ID をサーバーに割り当てる
既存のサーバーがある場合は、以下の手順を使ってMicrosoft Entraのアイデンティティをサーバーに追加してください:
$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity
サーバーを作成する場合は、-Identity コマンドレットで タグを使用して、サーバーの作成時に Microsoft Entra ID を追加してください:
$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
-ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity
Azure Key Vault にサーバーへのアクセス許可を付与する
キー コンテナーのキーを TDE に使用する前に、Set-AzKeyVaultAccessPolicy コマンドレットを使用して、キー コンテナーへのアクセス権をサーバーに付与します。
Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
-ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey
Managed HSM 上のサーバーにアクセス許可を追加するには、Managed HSM 暗号化サービスの暗号化ユーザー のローカル RBAC ロールをサーバーに追加します。 この役割により、サーバーはマネージド HSM 内の鍵に対してget、wrap key、unwrap keyの操作を実行できます。 詳細については、「 マネージド HSM ロール管理」を参照してください。
Azure Key Vault キーをサーバーに追加し、TDE 保護機能を設定する
- Get-AzKeyVaultKey コマンドレットを使用して、キー コンテナーからキー ID を取得します。
- Add-AzSqlServerKeyVaultKey コマンドレットを使用して、Azure Key Vault からサーバーにキーを追加します。
- Set-AzSqlServerTransparentDataEncryptionProtector コマンドレットを使用して、キーをすべてのサーバー リソースの TDE 保護機能として設定します。
- Get-AzSqlServerTransparentDataEncryptionProtector コマンドレットを使用して、TDE 保護機能が意図したとおりに構成されていることを確認します。
Note
Managed HSM キーの場合は、Az.Sql 2.11.1 バージョンの PowerShell 以降を使用します。
Note
キーボールト名とキーネームの合計長さは94文字を超えてはなりません。
Tip
TDE にバージョン管理された Azure Key Vault キーを使用する
TDEプロテクターを設定する際は、特定のキーバージョンを使ってAzure Key Vaultキーを参照してください。
Example:
特定のバージョンを含むキー識別子
https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>
# add the key from Azure Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>
# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
-Type AzureKeyVault -KeyId <KeyVaultKeyId>
# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>
TDE を有効にする
Set-AzSqlDatabaseTransparentDataEncryption コマンドレットを使用して、TDE を有効にします。
Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
-ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"
これで、データベースまたはデータ ウェアハウスで、Azure Key Vault の暗号化キーで TDE が有効になりました。
暗号化の状態と暗号化アクティビティを確認する
Get-AzSqlDatabaseTransparentDataEncryption を使用して、データベースまたはデータ ウェアハウスの暗号化の状態を取得します。
# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
-ServerName <LogicalServerName> -DatabaseName <DatabaseName> `
便利な PowerShell コマンドレット
- PowerShell
- Azure CLI
TDE を無効にするには、Set-AzSqlDatabaseTransparentDataEncryption コマンドレットを使用します。
Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> ` -DatabaseName <DatabaseName> -State "Disabled"Get-AzSqlServerKeyVaultKey コマンドレットを使用して、サーバーに追加された Azure Key Vault キーの一覧を返します。
# KeyId is an optional parameter, to return a specific key version Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>Remove-AzSqlServerKeyVaultKey を使用して、サーバーから Azure Key Vault キーを削除します。
# the key set as the TDE Protector cannot be removed Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
Troubleshooting
キーボールトが見つからない場合は、正しいサブスクリプションを選択しているか確認してください。
- PowerShell
- Azure CLI
Get-AzSubscription -SubscriptionId <SubscriptionId>
新しいキーをサーバーに追加できない場合や、TDEプロテクターとして新しいキーを更新できない場合は、以下の条件を確認してください:
- 鍵に有効期限があってはいけません。
- キーで、"取得"、"キーのラップ"、"キーのラップ解除" の各操作が有効になっている必要があります。
関連するコンテンツ
- サーバーのTDE Protectorをセキュリティ要件に適合させるためにローテーションする方法については、「PowerShell を使用して Transparent Data Encryption Protector をローテーションする」をご覧ください。
- セキュリティ上の問題が生じている可能性がある TDE プロテクターを削除する方法については、セキュリティ上の問題が生じている可能性があるキーの削除を参照してください。