你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置客户管理的静态密钥

创建新的 Azure API for FHIR 帐户时,默认使用 Microsoft 托管密钥对数据进行加密。 现在,可以使用自己选择和管理的密钥为数据添加第二层加密。

在 Azure 中,通常使用客户的 Azure Key Vault 中的加密密钥来完成此操作。 例如,目前 Azure SQL、Azure 存储和 Azure Cosmos DB 等均提供此功能。 Azure API for FHIR 利用 Azure Cosmos DB 对此功能的支持。 创建帐户时,将可以选择指定 Azure Key Vault 密钥 URI。 预配 DB 帐户后,此密钥将被传递给 Azure Cosmos DB。 发出快速医疗保健互操作性资源 (FHIR®) 请求时,Azure Cosmos DB 会获取密钥并使用它来加密/解密数据。

若要开始使用,请参考以下链接:

使用 Azure 门户

在 Azure 门户上创建 Azure API for FHIR 帐户时,你会注意到“其他设置”选项卡上“数据库设置”下的“数据加密”配置选项。默认情况下,将选择“服务托管密钥”选项。

重要

数据加密选项仅在创建 Azure API for FHIR 时可用,之后无法更改。 但是,如果选择了“客户管理的密钥”选项,则可以查看和更新加密密钥。

你可以从 KeyPicker 中选择密钥:

KeyPicker

还可通过选择“客户管理的密钥”选项在此处指定 Azure Key Vault 密钥。

还可在此处输入密钥 URI:

创建 Azure API for FHIR

重要

确保正确设置 Azure Key Vault 的所有权限。 有关详细信息,请参阅向 Azure Key Vault 实例添加访问策略。 此外,请确保在密钥保管库的属性中启用了软删除。 若未完成这些步骤,会导致部署错误。 有关详细信息,请参阅验证是否已对密钥保管库启用了软删除,并在未启用软删除的情况下将其启用

注意

在巴西南部、东亚和东南亚 Azure 区域中使用客户管理的密钥需要 Microsoft 生成的企业应用程序 ID。 可以通过Azure 门户创建一次性支持票证来请求企业应用程序 ID。 收到应用程序 ID 后, 请按照说明注册应用程序

对于现有 FHIR 帐户,可以在“数据库”边栏选项卡中查看密钥加密选项(“服务托管密钥”或“客户管理的密钥”),如下所示。 选择配置选项后,将无法对其进行修改。 但是,可以修改和更新密钥。

Database

此外,你还可以创建指定密钥的新版本,此后使用该新版本加密数据就不会发生任何服务中断。 也可以删除对密钥的访问权限,从而删除对数据的访问权限。 禁用该密钥后,查询将导致错误。 如果重新启用该密钥,查询将再次成功。

使用 Azure PowerShell

借助 Azure Key Vault 密钥 URI,可以通过运行以下 PowerShell 命令来使用 PowerShell 配置 CMK:

New-AzHealthcareApisService
    -Name "myService"
    -Kind "fhir-R4"
    -ResourceGroupName "myResourceGroup"
    -Location "westus2"
    -CosmosKeyVaultKeyUri "https://<my-vault>.vault.azure.net/keys/<my-key>"

使用 Azure CLI

与 PowerShell 方法一样,可以通过在 key-vault-key-uri 参数下传递 Azure Key Vault URI 并运行以下 CLI 命令来配置 CMK:

az healthcareapis service create
    --resource-group "myResourceGroup"
    --resource-name "myResourceName"
    --kind "fhir-R4"
    --location "westus2"
    --cosmos-db-configuration key-vault-key-uri="https://<my-vault>.vault.azure.net/keys/<my-key>"

使用 Azure 资源管理器模板

借助 Azure Key Vault 密钥 URI,可以通过将 CMK 传递到“属性”对象中的 keyVaultKeyUri 属性下来配置 CMK 。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "services_myService_name": {
            "defaultValue": "myService",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.HealthcareApis/services",
            "apiVersion": "2020-03-30",
            "name": "[parameters('services_myService_name')]",
            "location": "westus2",
            "kind": "fhir-R4",
            "properties": {
                "accessPolicies": [],
                "cosmosDbConfiguration": {
                    "offerThroughput": 400,
                    "keyVaultKeyUri": "https://<my-vault>.vault.azure.net/keys/<my-key>"
                },
                "authenticationConfiguration": {
                    "authority": "https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47",
                    "audience": "[concat('https://', parameters('services_myService_name'), '.azurehealthcareapis.com')]",
                    "smartProxyEnabled": false
                },
                "corsConfiguration": {
                    "origins": [],
                    "headers": [],
                    "methods": [],
                    "maxAge": 0,
                    "allowCredentials": false
                }
            }
        }
    ]
}

此外,还可以使用以下 PowerShell 脚本部署模板:

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$accountLocation = "West US 2"
$keyVaultKeyUri = "https://<my-vault>.vault.azure.net/keys/<my-key>"

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile "deploy.json" `
    -accountName $accountName `
    -location $accountLocation `
    -keyVaultKeyUri $keyVaultKeyUri

后续步骤

本文介绍了如何使用 Azure 门户、PowerShell、CLI 和资源管理器模板配置客户管理的静态密钥。 可以参阅 Azure Cosmos DB 常见问题解答部分了解详细信息。

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。