Azure部署的安全最佳做法Aspire

将应用程序部署到AspireAzure使用 Aspire CLI 或 Azure Developer CLI (azd)时,平台默认提供多个安全功能。 本文介绍默认安全状况,并提供有关如何增强应用程序安全性的其他步骤的指导。

  • 了解部署的默认安全配置Aspire
  • 了解内置安全功能 Azure Container Apps
  • 实施其他安全强化措施
  • 配置服务之间的安全通信
  • 对生产部署应用安全最佳做法

默认安全状况

将应用程序部署到AspireAzure Container Apps使用azd时,会自动配置多个安全措施:

容器级安全性

安全基础映像:Aspire 生成的容器映像使用由Microsoft维护的安全基础映像,这些基础映像定期进行安全补丁更新。

非根执行:容器默认使用非根用户权限运行,从而减少攻击面。

最小映像图面:生成的容器仅包含必要的运行时组件,遵循最低特权原则。

网络安全

专用网络: Azure Container Apps 环境将具有专用 IP 地址的虚拟网络用于服务之间的内部通信。

保护服务到服务的通信:服务间通信使用 Azure Container Apps 提供的具有加密流量的内置服务发现功能。

HTTPS 终结点:面向公众的终结点会自动使用 Azure 管理的证书配置 HTTPS。

标识和访问管理

托管标识: Azure Container Apps 默认情况下使用系统分配的托管标识进行配置,无需在应用程序代码中存储凭据。

Azure RBAC 集成:使用适当的基于角色的访问控制(RBAC)权限部署资源。

配置和机密管理

安全配置:应用程序配置在可用时存储在应用程序配置中 Azure ,与应用程序代码分开。

环境变量:敏感配置值作为安全环境变量注入,而不是嵌入到容器映像中。

其他安全强化

虽然 Aspire 提供了良好的安全默认值,但可以实施增强保护的其他措施:

启用 Azure Key Vault 集成

将敏感的配置数据和机密存储在 Azure Key Vault:

var builder = DistributedApplication.CreateBuilder(args);

// Add Azure Key Vault resource
var keyVault = builder.AddAzureKeyVault("key-vault");

// Reference Key Vault in your services
builder.AddProject<Projects.ApiService>()
       .WithReference(keyVault);

有关详细信息,请参阅 AspireAzure Key Vault 集成

配置用户分配的托管标识

若要更精细地控制权限,请使用用户分配的托管标识:

var builder = DistributedApplication.CreateBuilder(args);

// Create or reference a user-assigned managed identity
var managedIdentity = builder.AddAzureUserAssignedIdentity("app-identity");

// Apply the identity to your container apps
builder.AddProject<Projects.ApiService>()
       .WithReference(managedIdentity);

有关详细指导,请参阅 用户分配的托管标识

启用全面的监控

Application Insights:监视应用程序是否存在安全异常和性能问题:

var builder = DistributedApplication.CreateBuilder(args);

// Add Application Insights
var appInsights = builder.AddAzureApplicationInsights("monitoring");

builder.AddProject<Projects.ApiService>()
       .WithReference(appInsights);

有关详细信息,请参阅使用Aspire和Application Insights

Azure 监视:为可疑活动和资源消耗异常配置警报。

其他安全资源

有关安全性的综合指南 Azure ,请参阅 Azure 安全最佳做法和模式

后续步骤