PowerShell と Azure CLI: Azure Key Vault のユーザー管理キーを使用して Transparent Data Encryption を有効にする
適用対象:Azure SQL データベース
Azure SQL Managed Instance
Azure Synapse Analytics
この記事では、Azure SQL Database または Azure Synapse Analytics で、Transparent Data Encryption (TDE) に Azure Key Vault のキーを使用する方法について説明します。 Bring Your Own Key (BYOK) のサポートのため、Azure Key Vault と統合される TDE の詳細については、Azure Key Vault のユーザー管理キーを使用する TDE に関するページを参照してください。 Azure Key Vault のカスタマー マネージド キーを使用して TDE を有効にする方法に関する Azure portal の手順をお探しの場合は、「ユーザー割り当てマネージド ID とカスタマー マネージド TDE で構成されたサーバーを作成する」を参照してください。
この記事は、Azure SQL Database、Azure SQL Managed Instance、Azure Synapse Analytics 専用 SQL プールに適用されます。 Synapse ワークスペース内の専用 SQL プールの Transparent Data Encryption に関するドキュメントについては、Azure Synapse Analytics の暗号化に関する記事を参照してください。
Note
Azure SQL では、マネージド HSM に格納されている RSA キーを TDE 保護機能として使用できるようになりました。 Azure Key Vault Managed HSM は、フル マネージド、高可用性、シングル テナント、標準準拠を特徴とするクラウド サービスで、FIPS 140-2 レベル 3 適合の HSM を使用してクラウド アプリケーションの暗号化キーを保護することができます。 マネージド HSM の詳細を参照してください。
Note
Microsoft Entra ID の、旧称は Azure Active Directory(Azure AD)です。
PowerShell の前提条件
- Azure サブスクリプションがあり、そのサブスクリプションの管理者である必要があります。
- [推奨されますが、必須ではありません] TDE 保護機能のキー マテリアルのローカル コピーを作成するためのハードウェア セキュリティ モジュール (HSM) またはローカル キー ストアを用意します。
- Azure PowerShell がインストールされ、実行されている必要があります。
- TDE に使用する Azure Key Vault とキーを作成します。
- ハードウェア セキュリティ モジュール (HSM) と Key Vault の使用手順
- TDE に使用するには、キー コンテナーに次のプロパティが必要です。
- 論理的な削除と消去保護
- ハードウェア セキュリティ モジュール (HSM) と Key Vault の使用手順
- TDE に使用するには、キーには次の属性が必要です。
- アクティブ化された日時(設定された場合)は、過去の日付と時刻である必要があります。
- 有効期限 (設定する場合) は、将来の日付と時刻にする必要があります
- キーは、有効状態になっている必要があります
- "取得"、"キーのラップ"、"キーのラップ解除" の各操作を実行できる
- Managed HSM キーを使用するには、こちらの指示に従って、Azure CLI を使用して Managed HSM を作成およびアクティブ化します
Az PowerShell モジュールのインストール手順については、Azure PowerShell のインストールに関する記事を参照してください。
Key Vault の詳細については、「PowerShell を使用した Key Vault の操作」と「PowerShell で Key Vault の論理的な削除を使用する方法」を参照してください。
Microsoft Entra ID をサーバーに割り当てる
既存のサーバーがある場合、次のコマンドを使用して Microsoft Entra ID をサーバーに追加します。
$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity
サーバーを作成する場合は、サーバーの作成時に、-Identity タグを指定して New-AzSqlServer コマンドレットを使用して、Microsoft Entra ID を追加します。
$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
-ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity
Key Vault アクセス許可をサーバーに付与する
キー コンテナーのキーを TDE に使用する前に、Set-AzKeyVaultAccessPolicy コマンドレットを使用して、キー コンテナーへのアクセス権をサーバーに付与します。
Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
-ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey
Managed HSM 上のサーバーにアクセス許可を追加するには、"Managed HSM 暗号化サービスの暗号化ユーザー"のローカル RBAC ロールをサーバーに追加します。 これにより、サーバーは Managed HSM のキーに対して、キーの取得、ラップ、ラップ解除の操作を実行できます。 詳細については、「マネージド HSM のロール管理」を参照してください
Key Vault キーをサーバーに追加し、TDE 保護機能を設定する
- Get-AzKeyVaultKey コマンドレットを使用して、Key Vault からキー ID を取得します。
- Add-AzSqlServerKeyVaultKey コマンドレットを使用して、Key Vault のキーをサーバーに追加します。
- Set-AzSqlServerTransparentDataEncryptionProtector コマンドレットを使用して、キーをすべてのサーバー リソースの TDE 保護機能として設定します。
- Get-AzSqlServerTransparentDataEncryptionProtector コマンドレットを使用して、TDE 保護機能が意図したとおりに構成されていることを確認します。
Note
Managed HSM キーには、Az.Sql 2.11.1 バージョンの PowerShell を使用します。
Note
キー コンテナー名とキー名を組み合わせた長さは 94 文字以下である必要があります。
ヒント
Key Vault の KeyId の例: https://contosokeyvault.vault.azure.net/keys/Key1/<key-id>
Managed HSM の KeyId の例:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey
# add the key from 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"
データベースまたはデータ ウェアハウスで、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"
サーバーに追加された Key Vault キーのリストを取得するには、Get-AzSqlServerKeyVaultKey コマンドレットを使用します。
# KeyId is an optional parameter, to return a specific key version Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
サーバーから Key Vault キーを削除するには、Remove-AzSqlServerKeyVaultKey を使用します。
# the key set as the TDE Protector cannot be removed Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
トラブルシューティング
キー コンテナーが見つからない場合は、適切なサブスクリプションを使用していることを確認します。
Get-AzSubscription -SubscriptionId <SubscriptionId>
新しいキーをサーバーに追加できない場合、または新しいキーを TDE 保護機能として更新できない場合は、次の項目を確認してください。
- キーに有効期限を設定しないでください。
- キーで、"取得"、"キーのラップ"、"キーのラップ解除" の各操作が有効になっている必要があります。
関連コンテンツ
- セキュリティ要件に準拠するためにサーバーの TDE 保護機能をローテーションする方法を確認する:PowerShell を使用して Transparent Data Encryption (TDE) 保護機能をローテーションする
- 侵害された可能性のある TDE 保護機能を削除する方法について説明します。侵害された可能性のあるキーを削除します。