将应用程序部署到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 安全最佳做法和模式。