使用托管标识将 Azure SQL 数据库连接到 Azure Spring Apps 上部署的应用

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。

本文介绍如何为部署到 Azure Spring Apps 的应用创建托管标识,并使用该标识来访问 Azure SQL 数据库。

Azure SQL 数据库是面向云生成的一项可缩放的智能关系数据库服务。 它始终处于最新状态,具有 AI 支持的自动化功能,可优化性能和持续性。 无服务器计算和超大规模存储选项会自动按需缩放资源,因此你可以专注于构建新的应用程序,而无需担心存储大小或资源管理。

先决条件

使用托管标识连接到 Azure SQL 数据库

可以遵循手动步骤,使用托管标识将应用程序连接到 Azure SQL 数据库。

向托管标识授予权限

连接到 SQL Server 并运行以下 SQL 查询:

CREATE USER [<managed-identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<managed-identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<managed-identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<managed-identity-name>];
GO

<managed-identity-name> 占位符的值遵循规则 <service-instance-name>/apps/<app-name>;例如:myspringcloud/apps/sqldemo。 还可以在 Azure CLI 中使用以下命令查询托管标识名称:

az ad sp show --id <identity-object-ID> --query displayName

配置 Java 应用以使用托管标识

打开 src/main/resources/application.properties 文件,然后在 spring.datasource.url 行的末尾添加 Authentication=ActiveDirectoryMSI;,如以下示例所示。 请确保为 $AZ_DATABASE_NAME 变量使用正确的值。

spring.datasource.url=jdbc:sqlserver://$AZ_DATABASE_NAME.database.chinacloudapi.cn:1433;database=demo;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.chinacloudapi.cn;loginTimeout=30;Authentication=ActiveDirectoryMSI;

生成应用并将其部署到 Azure Spring Apps

重新生成应用,并将其部署到“先决条件”下第二个项目符号中预配的 Azure Spring Apps。 现在,你已有通过托管标识进行身份验证的 Spring Boot 应用程序,它在 Azure Spring Apps 中使用 JPA 存储并检索 Azure SQL 数据库中的数据。

后续步骤