PowerShell と Azure CLI: Azure Key Vault のユーザー管理キーを使用して Transparent Data Encryption を有効にする

適用対象: Azure Synapse Analytics 専用 SQL プール (旧称 SQL DW)

Tip

Microsoft Fabric Data Warehouse は、将来のアーキテクチャ、組み込みの AI、および新機能を備えた、Data Lake 基盤上のエンタープライズ 規模のリレーショナル ウェアハウスです。 データ ウェアハウスを初めて使用する場合は、Fabric Data Warehouseから始めます。 既存の dedicated SQL プール ワークロードは、Fabric にアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。

この記事では、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 とキーを作成します。
  • 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 保護機能を設定する

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 コマンドレット

  • 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

  • キーボールトが見つからない場合は、正しいサブスクリプションを選択しているか確認してください。

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • 新しいキーをサーバーに追加できない場合や、TDEプロテクターとして新しいキーを更新できない場合は、以下の条件を確認してください:

    • 鍵に有効期限があってはいけません。
    • キーで、"取得"、"キーのラップ"、"キーのラップ解除" の各操作が有効になっている必要があります。