適用対象:
Azure SQL データベース
注
- データベース レベルの TDE CMK が Azure SQL Database (すべての SQL Database エディション) で使用できます。 Azure SQL Managed Instance、オンプレミスの SQL Server、Azure VM、Azure Synapse Analytics (専用 SQL プール (以前の SQL DW) では使用できません。
- 同じガイドを適用して、フェデレーション クライアント ID パラメーターを除外することで、同じテナントでデータベース レベルのカスタマー マネージド キーを構成できます。 データベース レベルのカスタマー マネージド キーの詳細については、「データベース レベルのカスタマー マネージド キーを使用した Transparent Data Encryption (TDE)」を参照してください。
このガイドでは、データベース レベルの Transparent Data Encryption (TDE) とカスタマー マネージド キー (CMK) を使用して Azure SQL Database を作成、更新、取得するステップについて説明します。Azure Key Vault へのアクセスにはユーザー割り当てマネージド ID を使用します。 Azure Key Vault は、Azure SQL Database とは異なる Microsoft Entra テナントにあります。 詳しくは、「Transparent Data Encryption でのクロステナント カスタマー マネージド キー」をご覧ください。
前提条件
- このガイドでは、2 つの Microsoft Entra テナントがあることを前提としています。
- 1 つ目は、Azure SQL Database リソース、マルチテナント Microsoft Entra アプリケーション、およびユーザー割り当てマネージド ID で構成されます。
- 2 つ目のテナントは、Azure Key Vault を格納します。
- Microsoft Entra アプリケーションと Azure Key Vault の構成に必要なテナント間 CMK および RBAC アクセス許可のセットアップに関する包括的な手順については、次のいずれかのガイドを参照してください。
- Azure CLI バージョン 2.52.0 以降。
- Az PowerShell モジュール バージョン 10.3.0 以降。
- データベース レベルの CMK に必要な RBAC アクセス許可は、サーバー レベルの CMK に必要なアクセス許可と同じです。 具体的には、サーバー レベルで Azure Key Vault、 マネージド ID、および クロステナント CMK for TDE を使用する場合に適用できるのと同じ RBAC アクセス許可が、データベース レベルで適用されます。 キー管理とアクセス ポリシーの詳細については、「キー管理」に関する記事を参照してください。
1 つ目のテナントで必要なリソース
このチュートリアルでは、1 つ目のテナントは独立系ソフトウェア ベンダー (ISV) に属し、2 つ目のテナントはクライアントのものであると仮定します。 このシナリオについて詳しくは、「Transparent Data Encryption でのクロステナント カスタマー マネージド キー」をご覧ください。
テナント間 CMK を使用して Azure SQL Database の TDE を構成する前に、アプリケーションのフェデレーション ID 資格情報として割り当てられたユーザー割り当てマネージド ID で構成されたマルチテナント Microsoft Entra アプリケーションが必要です。 前提条件のガイドのいずれかに従って行います。
Azure SQL Database を作成する最初のテナントで、 マルチテナント Microsoft Entra アプリケーションを作成して構成します。
ユーザー割り当てマネージド ID を作成する。
マルチテナント アプリケーションのフェデレーション ID クレデンシャルとして、ユーザーに割り当てられたマネージド ID を構成します。
アプリケーション名とアプリケーション ID を記録しておきます。 この情報はAzureポータル>Microsoft Entra ID>Enterpriseアプリケーションで見つけ、作成したアプリケーションを検索してください。
2 つ目のテナントで必要なリソース
注
Azure AD および MSOnline PowerShell モジュールは、2024 年 3 月 30 日の時点で非推奨となります。 詳細については、非推奨の最新情報を参照してください。 この日以降、これらのモジュールのサポートは、Microsoft Graph PowerShell SDK への移行支援とセキュリティ修正プログラムに限定されます。 非推奨になるモジュールは、2025 年 3 月 30 日まで引き続き機能します。
Microsoft Entra ID (旧称 Azure AD) を使用するには、Microsoft Graph PowerShell に移行することをお勧めします。 移行に関する一般的な質問については、「移行に関する FAQ」を参照してください。
ノート: バージョン 1.0.x の MSOnline では、2024 年 6 月 30 日以降に使用障害が発生する可能性があります。
Azure Key Vaultが所在する2つ目のテナントでは、登録されたアプリケーションのアプリケーションIDを使ってサービスプリンシパル(アプリケーション)を作成します。 以下はマルチテナント申請の登録方法の例です。
<TenantID> と <ApplicationID> は、それぞれ Microsoft Entra ID からのクライアント テナント ID とマルチテナント アプリケーションからの アプリケーション ID に置き換えます。
Azure portal>[Microsoft Entra ID]>[エンタープライズ アプリケーション] に移動し、作成したアプリケーションを検索します。
Azure Key Vault を持っていなければ作成し、キーを作成します。
アクセス ポリシーを作成または設定します。
- アクセス ポリシーを作成するときに、[キーのアクセス許可] で、[キーの取得、キーのラップ、キーのアンラップ] のアクセス許可を選択します。
- アクセス ポリシーを作成するときに、 プリンシパル オプションの最初の手順で作成したマルチテナント アプリケーションを選択します。
アクセスポリシーとキーを作成したら、Azure Key Vaultからキーを取得し、キー識別子を記録します。
データベース レベルのカスタマー マネージド キーを使用して新しい Azure SQL Database を作成する
以下の例は、ユーザー割り当てのマネージデンティティを用いてAzure SQL Database上でデータベースを作成する方法と、データベースレベルでクロステナントの顧客管理キーを設定する方法を示しています。 データベース作成段階で透過的なデータ暗号化のために、ユーザー割り当てのマネージドIDを設定する必要があります。
aka.ms/azuresqlhub の Azure SQL ハブに移動します。
リソース メニューで、[ Azure SQL Database ] を展開し、[ SQL データベース] を選択します。
+作成ドロップダウンリストからSQLデータベースを選択します。
[SQL データベースの作成] フォームの [基本] タブにある [プロジェクトの詳細] で、データベースの Azure [サブスクリプション]、[リソース グループ]、[サーバー] を選びます。 次に、[データベース名] に一意の名前を指定します。 Azure SQL Database 用の論理サーバーを作成していない場合は、「TDE とテナント間カスタマー マネージド キー (CMK) を使用して構成されたサーバーを作成する」をご覧ください。
[セキュリティ] タブに移動したら、[データベース レベル キーの透過的なデータ暗号化の構成] を選択します。
[Transparent Data Encryption ] のメニューで、[Database level customer managed key (CMK)] (データベース レベルのカスタマー マネージド キー) を選びます。
ユーザー割り当てマネージド ID の場合、データベース ID を有効にするには 構成 を選択し、目的の ID が ID メニューに表示されていない場合は、追加 を選択してリソースにユーザー割り当てマネージド ID を追加してください。 次に、[適用] を選択します。
[Transparent Data Encryption] のメニューで、[Change key] (鍵変更) を選びます。 TDE に使用するカスタマー マネージド キーの目的のサブスクリプション、キー コンテナー、キー、バージョンを選択します。
[選択] ボタンを選択します。 キーを選んだら、必要に応じて、[Transparent Data Encryption] メニューで Azure Key Vault の URI (オブジェクト識別子) を使ってデータベース キーを追加することもできます。
データベースレベルで自動キー回転を有効にするには、透過的なデータ暗号化メニューのAuto-rotate keyチェックボックスを使用することもできます。
[適用] を選んで、データベースの作成を続けます。
[Next:追加設定] を選択します。
[次へ: タグ] を選択します。
Azure タグの使用を検討します。 たとえば、リソースを作成したユーザーを識別する "所有者" タグまたは "CreatedBy" タグ、このリソースが運用、開発などにあるかどうかを識別する Environment タグなどです。詳細については、「 Azure リソースの名前付けおよびタグ付け戦略を開発する」を参照してください。
[Review + create](レビュー + 作成) を選択します。
[確認と作成] ページで、確認後、 [作成] を選択します。
Azure CLI の現在のリリースのインストールについては、Azure CLI のインストールに関する記事を参照してください。
az sql db create コマンドを使って、ユーザー割り当てマネージド ID とテナント間カスタマー マネージド TDE で構成されたデータベースを作成します。
フィールドでは、2 つ目のテナントの encryption-protector を使用できます。 マルチテナント アプリケーションの アプリケーション ID は、federated-client-id フィールドで使用できます。 この --encryption-protector-auto-rotation パラメーターを使用すると、データベース レベルでキーの自動ローテーションを有効にすることができます。
ユーザー割り当てマネージド ID のリソース ID を取得するには、Azure portal でマネージド ID を検索します。 マネージド ID を見つけて、[プロパティ] に移動します。 UMI リソース ID の例は、/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> のようになります
az sql db create --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --encryption-protector-auto-rotation True
PowerShell を使って、ユーザー割り当てマネージド ID とデータベース レベルのテナント間カスタマー マネージド TDE で構成されたデータベースを作成します。
Az PowerShell モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。
New-AzSqlDatabase コマンドレットを使用します。
この例では次の値を置き換えます。
-
<ResourceGroupName>: Azure SQL 論理サーバーのリソース グループの名前
-
<DatabaseName>: 一意の Azure SQL データベース名を使用します
-
<ServerName>: 一意の Azure SQL 論理サーバー名を使用します
-
<UserAssignedIdentityId>: サーバーに割り当てるユーザー割り当てマネージド ID の一覧 (1 つ以上を指定できます)
-
<CustomerManagedKeyId>: 2 番目のテナントの Azure Key Vault からのキー識別子
-
<FederatedClientId>: マルチテナント アプリケーションの アプリケーション ID
-
-EncryptionProtectorAutoRotation: データベース レベルでキーの自動ローテーションを有効にすることができます。
ユーザー割り当てマネージド ID のリソース ID を取得するには、Azure portal でマネージド ID を検索します。 マネージド ID を見つけて、[プロパティ] に移動します。 UMI リソース ID の例は、/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> のようになります
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
ユーザー割り当てマネージド ID とデータベース レベルのカスタマー マネージド TDE を持つ Azure SQL Database を作成する ARM テンプレートの例を次に示します。 テナント間 CMK の場合は、2 番目のテナントの Azure Key Vault の キー識別子 と、マルチテナント アプリケーションの アプリケーション ID を 使用します。
詳細と ARM テンプレートについては、 Azure SQL Database 用の Azure Resource Manager テンプレートに関するページを参照してください。
Azure portal のカスタム デプロイを使用し、エディターで独自のテンプレートを作成します。 次に、例に貼り付けたら、構成を保存します。
ユーザー割り当てマネージド ID のリソース ID を取得するには、Azure portal でマネージド ID を検索します。 マネージド ID を見つけて、[プロパティ] に移動します。 UMI リソース ID の例は、/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> のようになります。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"server_name": {
"type": "String"
},
"database_name": {
"type": "String"
},
"user_assigned_identity": {
"type": "String"
},
"encryption_protector": {
"type": "String"
},
"federated_client_id": {
"type": "String"
},
"location": {
"type": "String"
},
"encryption_protector_auto_rotation": {
"type": "bool"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Sql/servers/databases",
"apiVersion": "2023-02-01-preview",
"name": "[concat(parameters('server_name'), concat('/',parameters('database_name')))]",
"location": "[parameters('location')]",
"sku": {
"name": "Basic",
"tier": "Basic",
"capacity": 5
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[parameters('user_assigned_identity')]": {}
}
},
"properties": {
"collation": "SQL_Latin1_General_CP1_CI_AS",
"maxSizeBytes": 104857600,
"catalogCollation": "SQL_Latin1_General_CP1_CI_AS",
"zoneRedundant": false,
"readScale": "Disabled",
"requestedBackupStorageRedundancy": "Geo",
"maintenanceConfigurationId": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default",
"isLedgerOn": false,
"encryptionProtector": "[parameters('encryption_protector')]",
"federatedClientId": "[parameters('federated_client_id')]",
"encryptionProtectorAutoRotation": "[parameters('encryption_protector_auto_rotation')]"
}
}
]
}
データベース レベルのカスタマー マネージド キーを使用して既存の Azure SQL Database を更新する
以下の例は、Azure SQL Database上の既存データベースをユーザー割り当てのマネージデンティティで更新する方法と、データベースレベルでクロステナントの顧客管理キーを設定する方法を示しています。 顧客管理キーを透過的なデータ暗号化に設定するには、ユーザー割り当てのマネージドアイデンティティが必要です。
Azure CLI の現在のリリースのインストールについては、Azure CLI のインストールに関する記事を参照してください。
az sql db create コマンドを使って、ユーザー割り当てマネージド ID とテナント間カスタマー マネージド TDE で構成されたデータベースを更新します。
フィールドでは、2 つ目のテナントの encryption-protector を使用できます。 マルチテナント アプリケーションの アプリケーション ID は、federated-client-id フィールドで使用できます。
ユーザー割り当てマネージド ID のリソース ID を取得するには、Azure portal でマネージド ID を検索します。 マネージド ID を見つけて、[プロパティ] に移動します。 UMI リソース ID の例は、/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> のようになります。 この --encryption-protector-auto-rotation パラメーターを使用すると、データベース レベルでキーの自動ローテーションを有効にすることができます。
az sql db update --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --sample-name AdventureWorksLT --edition GeneralPurpose --compute-model Serverless --family Gen5 --capacity 2 --assign-identity --user-assigned-identity-id $identityid --encryption-protector $keyid --federated-client-id $federatedclientid --keys $keys --keys-to-remove $keysToRemove --encryption-protector-auto-rotation True
リスト $keys はデータベースに追加するキーのスペース区切りリストであり、$keysToRemove はデータベースから削除する必要があるキーのスペース区切りリストです
$keys = '"https://yourvault.vault.azure.net/keys/yourkey1/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey2/ fd021f84a0d94d43b8ef33154bca0000"'
$keysToRemove = '"https://yourvault.vault.azure.net/keys/yourkey3/6638b3667e384aefa31364f94d230000" "https://yourvault.vault.azure.net/keys/yourkey4/fd021f84a0d94d43b8ef33154bca0000"'
PowerShell を使って、ユーザー割り当てマネージド ID とデータベース レベルのテナント間カスタマー マネージド TDE で構成されたデータベースを更新します。
Az PowerShell モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。
Set-AzSqlDatabase コマンドレットを使用します。
この例では次の値を置き換えます。
-
<ResourceGroupName>: Azure SQL 論理サーバーのリソース グループの名前
-
<DatabaseName>: 一意の Azure SQL データベース名を使用します
-
<ServerName>: 一意の Azure SQL 論理サーバー名を使用します
-
<UserAssignedIdentityId>: サーバーに割り当てるユーザー割り当てマネージド ID の一覧 (1 つ以上を指定できます)
-
<CustomerManagedKeyId>: 2 番目のテナントの Azure Key Vault からのキー識別子
-
<FederatedClientId>: マルチテナント アプリケーションの アプリケーション ID
-
<ListOfKeys>: データベースに追加するデータベース レベルのカスタマー マネージド キーのコンマ区切りリスト
-
<ListOfKeysToRemove>: データベースから削除するデータベース レベルのカスタマー マネージド キーのコンマ区切りリスト
-
-EncryptionProtectorAutoRotation: データベース レベルでキーの自動ローテーションを有効にすることができます。
ユーザー割り当てマネージド ID のリソース ID を取得するには、Azure portal でマネージド ID を検索します。 マネージド ID を見つけて、[プロパティ] に移動します。 UMI リソース ID の例は、/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> のようになります。
$params = @{
ResourceGroupName = "<ResourceGroupName>"
ServerName = "<ServerName>"
DatabaseName = "<DatabaseName>"
AssignIdentity = $true
UserAssignedIdentityId = "<UserAssignedIdentityId>"
EncryptionProtector = "<CustomerManagedKeyId>"
FederatedClientId = "<FederatedClientId>"
KeyList = "<ListOfKeys>"
KeysToRemove = "<ListOfKeysToRemove>"
EncryptionProtectorAutoRotation = $true
}
Set-AzSqlDatabase @params
-KeyList と -KeysToRemove の例を次に示します。
$keysToAdd = "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000","https://yourvault.vault.azure.net/keys/yourkey2/fd021f84a0d94d43b8ef33154bca0000"
$keysToRemove = "https://yourvault.vault.azure.net/keys/yourkey3/fd021f84a0d94d43b8ef33154bca0000"
ユーザー割り当てマネージド ID とデータベース レベルのカスタマー マネージド TDE を持つ Azure SQL Database を更新する ARM テンプレートの例を次に示します。 テナント間 CMK の場合は、2 番目のテナントの Azure Key Vault の キー識別子 と、マルチテナント アプリケーションの アプリケーション ID を 使用します。
詳細と ARM テンプレートについては、 Azure SQL Database 用の Azure Resource Manager テンプレートに関するページを参照してください。
Azure portal のカスタム デプロイを使用し、エディターで独自のテンプレートを作成します。 次に、例に貼り付けたら、構成を保存します。
ユーザー割り当てマネージド ID のリソース ID を取得するには、Azure portal でマネージド ID を検索します。 マネージド ID を見つけて、[プロパティ] に移動します。 UMI リソース ID の例は、/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity> のようになります。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"server_name": {
"type": "String"
},
"database_name": {
"type": "String"
},
"user_assigned_identity": {
"type": "String"
},
"encryption_protector": {
"type": "String"
},
"location": {
"type": "String"
},
"federated_client_id": {
"type": "String"
},
"keys_to_add": {
"type": "Object"
},
"encryption_protector_auto_rotation": {
"type": "bool"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Sql/servers/databases",
"apiVersion": "2023-02-01-preview",
"name": "[concat(parameters('server_name'), concat('/',parameters('database_name')))]",
"location": "[parameters('location')]",
"sku": {
"name": "Basic",
"tier": "Basic",
"capacity": 5
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[parameters('user_assigned_identity')]": {}
}
},
"properties": {
"collation": "SQL_Latin1_General_CP1_CI_AS",
"maxSizeBytes": 104857600,
"catalogCollation": "SQL_Latin1_General_CP1_CI_AS",
"zoneRedundant": false,
"readScale": "Disabled",
"requestedBackupStorageRedundancy": "Geo",
"maintenanceConfigurationId": "/subscriptions/e1775f9f-a286-474d-b6f0-29c42ac74554/providers/Microsoft.Maintenance/publicMaintenanceConfigurations/SQL_Default",
"isLedgerOn": false,
"encryptionProtector": "[parameters('encryption_protector')]",
"keys": "[parameters('keys_to_add')]",
"federatedClientId": "[parameters('federated_client_id')]",
"encryptionProtectorAutoRotation": "[parameters('encryption_protector_auto_rotation')]"
}
}
]
}
encryption_protector と keys_to_add のパラメーターの例を次に示します。
"keys_to_add": {
"value": {
"https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": {},
"https://yourvault.vault.azure.net/keys/yourkey2/fd021f84a0d94d43b8ef33154bca0000": {}
}
},
"encryption_protector": {
"value": "https://yourvault.vault.azure.net/keys/yourkey2/fd021f84a0d94d43b8ef33154bca0000"
}
重要
データベースからキーを削除するには、特定のキーのキー ディクショナリ値を null として渡す必要があります。 たとえば、「 "https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null 」のように入力します。
Azure SQL Database のデータベース レベルのカスタマー マネージド キー設定を表示する
次に、データベースのデータベース レベルのカスタマー マネージド キーを取得する例を示します。 ARM リソース Microsoft.Sql/servers/databases には、既定では、データベースで構成された TDE 保護機能とマネージド ID のみが表示されます。 キーの完全なリストを展開するには、-ExpandKeyList パラメーターを使用します。 さらに、-KeysFilter "current" や特定の時点の値 (たとえば 2023-01-01) などのフィルターを使用して、現在使用されているキーと過去の特定の時点で使用されたキーを取得できます。 これらのフィルターは、個々のデータベース クエリでのみサポートされ、サーバー レベルのクエリではサポートされません。
Azure CLI の現在のリリースのインストールについては、Azure CLI のインストールに関する記事を参照してください。
# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName
Az PowerShell モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。
Get-AzSqlDatabase コマンドレットを使用します。
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
2022-08-01-preview の Azure SQL Database 用 REST API を使用します。
データベースから基本的なデータベース レベルのカスタマー マネージド キー設定を取得します。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
データベースから基本的なデータベース レベルのカスタマー マネージド キー設定と、これまでに追加されたすべてのキーを取得します
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
データベースから基本的なデータベース レベルのカスタマー マネージド キー設定と、現在使用されているキーを取得します
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
データベースから基本的なデータベース レベルのカスタマー マネージド キー設定と、特定の時点で使用されていたキーを取得します
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('2023-02-04T01:57:42.49Z'))
論理サーバー内のすべてのキーを一覧表示する
サーバーの下の各データベースで使用されるすべてのキー (単なるプライマリ保護機能ではない) のリストをフェッチするには、キー フィルターを使用して個別にクエリを実行する必要があります。 論理サーバーの下の各キーを一覧表示する PowerShell クエリの例を次に示します。
Get-AzSqlDatabase コマンドレットを使用します。
$dbs = Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName>
foreach ($db in $dbs)
{
Get-AzSqlDatabase -DatabaseName $db.DatabaseName -ServerName $db.ServerName -ResourceGroupName $db.ResourceGroupName -ExpandKeyList
}
Azure SQL Database のデータベース レベルのカスタマー マネージド キーを再検証する
Azure SQLの顧客管理キーによる透過的なデータ暗号化で説明されているように、TDEプロテクターがアクセス不能の場合、データベースはアクセス不能になります。 鍵アクセスを修正した後は、再検証キー操作を使ってデータベースを再びアクセス可能にします。 以下のコマンドは例を示しています。
Azure CLI の現在のリリースのインストールについては、Azure CLI のインストールに関する記事を参照してください。
az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase
2022-08-01-preview の Azure SQL Database 用 REST API を使用します。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
Azure SQL Database のデータベース レベルのカスタマー マネージド キーを元に戻す
次のコマンドを使用してサーバーにサービス マネージド キーが構成されている場合、データベース レベルの CMK が構成されたデータベースをサーバー レベルの暗号化に戻すことができます。
Azure CLI の現在のリリースのインストールについては、Azure CLI のインストールに関する記事を参照してください。
az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
2022-08-01-preview の Azure SQL Database 用 REST API を使用します。
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
関連コンテンツ