適用対象:
Azure SQL データベース
Note
- データベース レベルの 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、および TDE のクロステナント CMK を使用する場合に適用できるのと同じ RBAC アクセス許可が、データベース レベルで適用されます。 キー管理とアクセス ポリシーの詳細については、「キー管理」に関する記事を参照してください。
1 つ目のテナントで必要なリソース
このチュートリアルでは、1 つ目のテナントは独立系ソフトウェア ベンダー (ISV) に属し、2 つ目のテナントはクライアントのものであると仮定します。 このシナリオについて詳しくは、「Transparent Data Encryption でのクロステナント カスタマー マネージド キー」をご覧ください。
テナント間 CMK を使って Azure SQL Database 用に TDE を構成する前に、アプリケーションのフェデレーション ID 資格情報として割り当てられたユーザー割り当てマネージド ID を使って構成されたマルチテナント Microsoft Entra アプリケーションを用意する必要があります。 前提条件のガイドのいずれかに従って行います。
Azure SQL Database を作成する 1 つ目のテナントで、マルチテナント Microsoft Entra アプリケーションを作成して構成します。
「ユーザー割り当てマネージド ID を作成する」の手順を使用して、ユーザー割り当てマネージド ID を作成します。
マルチテナント アプリケーションのフェデレーション ID 資格情報として、ユーザー割り当てマネージド ID を構成します。
アプリケーション名とアプリケーション ID を記録しておきます。 これは、Azure portal>[Microsoft Entra ID]>[エンタープライズ アプリケーション] で作成されたアプリケーションを検索することで確認できます。
2 つ目のテナントで必要なリソース
Note
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 つ目のテナントでは、1 つ目のテナントの登録済みアプリケーションのアプリケーション ID を使ってサービス プリンシパル (アプリケーション) を作成します。 マルチテナント アプリケーションを登録する方法の例をいくつか次に示します。 <TenantID>
と <ApplicationID>
をそれぞれ、Microsoft Entra ID のクライアント テナント ID と、マルチテナント アプリケーションのアプリケーション ID に置き換えます。
Azure portal>[Microsoft Entra ID]>[エンタープライズ アプリケーション] に移動し、作成したアプリケーションを検索します。
Azure Key Vault を持っていなければ作成し、キーを作成します。
アクセス ポリシーを作成または設定します。
- アクセス ポリシーを作成するときに、[キーのアクセス許可] で [キーの取得、キーの折り返し、キーの折り返し解除] のアクセス許可を選択します。
- アクセス ポリシーを作成するときに、最初のステップで作成したマルチテナント アプリケーションを [プリンシパル] オプションで選択します。
アクセス ポリシーとキーが作成されたら、Key Vault からキーを取得して、キー識別子を記録します。
データベース レベルのカスタマー マネージド キーを使用して新しい Azure SQL Database を作成する
ユーザー割り当てマネージド ID を使用して Azure SQL Database にデータベースを作成する例と、データベース レベルでテナント間カスタマー マネージド キーを設定する方法を次に示します。 ユーザー割り当てマネージド ID は、データベース作成フェーズの間に Transparent Data Encryption 用にカスタマー マネージド キーを設定するために必要です。
Azure portal の [SQL デプロイ オプションの選択] ページを参照します。
まだ Azure portal にサインインしていない場合は、求められたらサインインします。
[SQL データベース] で、 [リソースの種類] を [単一データベース] に設定し、 [作成] を選択します。
[SQL データベースの作成] フォームの [基本] タブにある [プロジェクトの詳細] で、データベースの Azure [サブスクリプション]、[リソース グループ]、[サーバー] を選びます。 次に、[データベース名] に一意の名前を指定します。 Azure SQL Database 用の論理サーバーを作成していない場合は、「TDE とテナント間カスタマー マネージド キー (CMK) を使用して構成されたサーバーを作成する」をご覧ください。
[セキュリティ] タブに移動したら、[Transparent Data Encryption を構成する] を選びます。
[Transparent Data Encryption ] のメニューで、[Database level customer managed key (CMK)] (データベース レベルのカスタマー マネージド キー) を選びます。
[User-Assigned Managed Identity] (ユーザー割り当てマネージド ID) では、[Configure] (構成) を選択して[Database identity] (データベース ID) を有効にし、[Identity] (ID) メニューの一覧に目的の ID がない場合はユーザー割り当てマネージド ID をリソースに [Add] (追加) で設定します。 次に、[適用] を選択します。
[Transparent Data Encryption] のメニューで、[Change key] (鍵変更) を選びます。 TDE に使用するカスタマー マネージド キーの目的のサブスクリプション、キー コンテナー、キー、バージョンを選択します。 [選択] ボタンを選択します。 キーを選んだら、必要に応じて、[Transparent Data Encryption] メニューで Azure Key Vault の URI (オブジェクト識別子) を使ってデータベース キーを追加することもできます。
[Transparent data encryption] (透過的なデータ暗号化) メニューの [Auto-rotate key] (キーの自動ローテーション) チェック ボックスを使用して、データベース レベルでキーの[Automatic key rotation (自動ローテーション)] を有効にすることもできます。
[適用] を選んで、データベースの作成を続けます。
ページの下部にある [確認と作成] を選択します
[確認と作成] ページで、確認後、 [作成] を選択します。
Azure CLI の現在のリリースのインストールについては、Azure CLI のインストールに関する記事を参照してください。
az sql db create コマンドを使って、ユーザー割り当てマネージド ID とテナント間カスタマー マネージド TDE で構成されたデータベースを作成します。 フィールドは、2 つ目のテナントのencryption-protector
を使用できます。 フィールドでは、マルチテナント アプリケーションの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 つ目のテナントの 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 つ目のテナントのキー コンテナーのキー識別子と、マルチテナント アプリケーションのアプリケーション ID を使います。
ARM テンプレートの詳細については、「Azure SQL Database および SQL Managed Instance 用 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 を更新する
ユーザー割り当てマネージド ID を使用して Azure SQL Database の既存のデータベースを更新する例と、データベース レベルでテナント間カスタマー マネージド キーを設定する方法を次に示します。 ユーザー割り当てマネージド ID は、データベース作成フェーズの間に Transparent Data Encryption 用にカスタマー マネージド キーを設定するために必要です。
Azure portal で、データベース レベルのカスタマー マネージド キーで更新する SQL データベース リソースに移動します。
[セキュリティ] で [ID] を選択します。 このデータベースにユーザー割り当てマネージド ID を追加して、[保存] を選びます
次に、データベースの [セキュリティ] の下にある [データ暗号化] メニューに移動します。 [データベース レベルのカスタマー マネージド キー] を選びます。 最後のステップで ID を構成したので、データベースの [データベース ID] は既に [有効] になっているはずです。
[キーの変更] を選びます。 TDE に使用するカスタマー マネージド キーの目的のサブスクリプション、キー コンテナー、キー、バージョンを選択します。 [選択] ボタンを選択します。 キーを選んだら、必要に応じて、[Data Encryption] メニューで オブジェクト識別子 を使ってデータベース キーを追加することもできます。
データベース レベルでキーの自動ローテーションを有効にする場合は、[キーの自動ローテーション] チェック ボックスを選択します。
[保存] を選択します。
Azure CLI の現在のリリースのインストールについては、Azure CLI のインストールに関する記事を参照してください。
az sql db create コマンドを使って、ユーザー割り当てマネージド ID とテナント間カスタマー マネージド TDE で構成されたデータベースを更新します。 フィールドは、2 つ目のテナントのencryption-protector
を使用できます。 フィールドでは、マルチテナント アプリケーションの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 つ目のテナントの 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 つ目のテナントの Key Vault のキー識別子と、マルチテナント アプリケーションのアプリケーション ID を使います。
ARM テンプレートの詳細については、「Azure SQL Database および SQL Managed Instance 用 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 portal でデータベース レベルのカスタマー マネージド キーを表示するには、SQL データベース リソースの [データ暗号化] メニューに移動します。
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 のデータベース レベルのカスタマー マネージド キーを再検証する
CMK を使用した Transparent Data Encryption (TDE) に関する記事で説明されているように、TDE 保護機能にアクセスできない場合は、キー アクセスを修正した後、キーの再検証操作を使ってデータベースにアクセスできるようにすることができます。 例については、以下の手順またはコマンドをご覧ください。
Azure portal を使って、SQL データベース リソースを見つけます。 SQL データベース リソースを選んだら、[セキュリティ] 設定の下にある [データ暗号化] メニューの [Transparent Data Encryption] タブに移動します。 データベースが Azure Key Vault にアクセスできなくなった場合は、[キーの再検証] ボタンが表示され、[既存のキーの再試行] を選んで既存のキーを再検証するか、[バックアップ キーの選択] を選んで別のキーを再検証することができます。
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 portal でデータベース レベルのカスタマー マネージド キーの設定をサーバー レベルの暗号化キーに戻すには、[Data Encryption (データ暗号化)] メニューの [Transparent Data Encryption] タブに移動します。 [Server level encryption key] (サーバー レベルの暗号化キー) を選び、[保存] を選んで設定を保存します。
Note
個々のデータベースに対して [Server level encryption key] (サーバー レベルの暗号化キー) の設定を使うには、Azure SQL Database の論理サーバーが TDE にサービス マネージド キーを使うように構成されている必要があります。
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
次のステップ
さまざまなデータベース レベルの CMK 操作に関する次のドキュメントを確認してください。