適用対象:Azure SQL データベース
Azure SQL Managed Instance
この記事では、Azure SQL Database上でAzure Key Vaultのキーを使って透過的なデータ暗号化(TDE)を行う方法を紹介します。 Bring Your Own Key (BYOK) のサポートのため、Azure Key Vault と統合される TDE の詳細については、Azure Key Vault のユーザー管理キーを使用する TDE に関するページを参照してください。 Azure Key Vault の顧客管理キーを使用して TDE を有効にする方法について Azure portal の手順を知りたい場合は、「ユーザー割り当てマネージド ID と顧客管理 TDE で構成されたサーバーを作成」をご覧ください。
注
Azure SQL Databaseは、設定に応じて顧客管理のTransparent Data Encryptionに対して非対称(RSA)鍵と対称鍵(AES)の両方をサポートしています。 対称 (AES) キーのサポートは現在パブリック プレビュー段階であり、Azure SQL Databaseに制限されています。 この機能は、地域やサービスの展開状況によって、順次表示される場合があります。 詳細については、顧客管理鍵を用いたTransparent Data Encryption(BYOK)を参照してください。
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
マネージド HSM 上のサーバーにアクセス許可を追加するには、マネージド 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 保護機能が意図したとおりに構成されていることを確認します。
注
Managed HSM キーの場合は、Az.Sql 2.11.1 バージョンの PowerShell 以降を使用します。
注
キーボールト名とキーネームの合計長さは94文字を超えてはなりません。
ヒント
TDE でのバージョン管理された Azure キー コンテナー キーとバージョン管理されていない Azure キー コンテナー キーの使用
TDEプロテクターを設定する際、特定のキーバージョンまたはバージョンレスキー識別子を使ってAzure Key Vaultキーを参照できます。
どちらの場合も、Azure SQL Database は常に、Azure Key Vault または Azure Key Vault Managed HSM の最新の有効なバージョンのキーを解決して使用します。 TDE 保護機能構成に特定のキー バージョンが埋め込まれるのを回避するには、バージョンレス キー識別子を使用します。
バージョンレス キー識別子は、現在、Azure SQL Database でのみサポートされています。
例:
特定のバージョンを含むキー識別子
https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>バージョンレス キー識別子
https://<key-vault-name>.vault.azure.net/keys/<key-name>
# 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 コマンドレット
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>
トラブルシューティング
キーボールトが見つからない場合は、正しいサブスクリプションを選択しているか確認してください。
Get-AzSubscription -SubscriptionId <SubscriptionId>
新しいキーをサーバーに追加できない場合や、TDEプロテクターとして新しいキーを更新できない場合は、以下の条件を確認してください:
- 鍵に有効期限があってはいけません。
- キーで、"取得"、"キーのラップ"、"キーのラップ解除" の各操作が有効になっている必要があります。
TDE BYOK Azure Synapse Analytics
Azure Synapse Analytics の TDE BYOK に関するドキュメントについては、Azure Synapse Analytics SQL のドキュメントをご覧ください。 Synapse ワークスペース内の専用 SQL プールの Transparent Data Encryption に関するドキュメントについては、「Azure Synapse Analytics の暗号化」を参照してください。