如何为Azure Email Communication Service配置认证并导出凭据?
Azure Email Communication Service 认证方式与Terraform配置指南
一、除主体账户外的可选认证方式
- Azure AD OAuth 2.0:可使用Azure AD应用服务主体、用户身份或托管标识获取访问令牌,用于SMTP投递或调用REST API,相比密码更安全,支持权限精细化管控
- 托管标识(Managed Identity):专为Azure内部服务设计,无需手动维护密钥,由Azure自动管理身份凭证,适合Azure函数、VM等服务直接对接邮件服务
- IP白名单限制:配合上述认证方式使用,仅允许指定IP段的请求访问服务,进一步提升安全性
二、Terraform中关联主体账户并导出密钥
要创建SMTP主体账户(凭据)并导出密钥,需添加azurerm_email_communication_service_smtp_credential资源,并通过输出变量暴露密钥数据:
修改后的完整Terraform代码
terraform{ required_providers { azurerm = { source = "hashicorp/azurerm" version = "3.61.0" } } } resource "azurerm_resource_group" "azurerm_group" { name = var.resource_group_name location = var.region } resource "azurerm_email_communication_service" "smtp-service" { name = var.service_name resource_group_name = azurerm_resource_group.azurerm_group.name data_location = var.data_location } # 创建SMTP主体账户凭据 resource "azurerm_email_communication_service_smtp_credential" "smtp-cred" { name = "smtp-credential" email_communication_service_id = azurerm_email_communication_service.smtp-service.id } # 导出SMTP用户名和密钥 output "smtp_username" { value = azurerm_email_communication_service_smtp_credential.smtp-cred.username description = "SMTP主体账户用户名" sensitive = true # 标记为敏感数据,避免日志泄露 } output "smtp_password" { value = azurerm_email_communication_service_smtp_credential.smtp-cred.password description = "SMTP主体账户密钥" sensitive = true # 敏感数据,禁止明文输出 }
关键说明
azurerm_email_communication_service_smtp_credential资源会自动为邮件服务生成SMTP主体账户的用户名和密码- 标记为
sensitive = true的输出项,Terraform会默认隐藏显示,如需查看可执行terraform output smtp_password或terraform output -json命令 - 导出的凭据可直接用于应用程序的SMTP认证配置
内容的提问来源于stack exchange,提问作者anaconda1337
相关产品推荐
相关产品推荐

