使用托管标识将 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 帐户。 创建帐户。
- Azure CLI 版本 2.45.0 或更高版本。
- 遵循 Spring Data JPA 教程预配 Azure SQL 数据库并将该数据库在本地与 Java 应用结合使用。
- 遵循 Azure Spring Apps 系统分配的托管标识教程在 Azure Spring Apps 中预配一个启用托管标识的应用。
使用托管标识连接到 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 数据库中的数据。