次の方法で共有


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

適用対象:Azure SQL データベースAzure SQL Managed InstanceAzure 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 とキーを作成します。
  • 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 保護機能を設定する

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 保護機能として更新できない場合は、次の項目を確認してください。

    • キーに有効期限を設定しないでください。
    • キーで、"取得"、"キーのラップ"、"キーのラップ解除" の各操作が有効になっている必要があります。