使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

admin 2025年1月5日22:59:25评论12 views字数 4625阅读15分25秒阅读模式

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

在微服务领域,各个服务跨网络进行通信,安全性至关重要。随着分布式系统和微服务架构的兴起,保护服务之间的通信不仅是一项建议,而且是一项必要措施。Dapr (分布式应用程序运行时) 简化了微服务开发,但它也提供了强大的内置安全功能,包括双向 TLS (mTLS)、服务身份验证和 Azure Active Directory (AAD) 集成。在本文中,我们将探讨如何使用 Dapr 在 Azure 中的微服务之间实现端到端安全性。

1. 安全性在微服务中的重要性

微服务在设计上通过网络进行通信,使其容易受到各种安全威胁的影响,例如:

  • 中间人攻击。
  • 未经授权访问服务。
  • 服务通信受损。

Dapr 通过以下方式解决了这些问题:

  • 用于微服务之间安全通信的双向 TLS (mTLS)。
  • 服务到服务身份验证
    ,以防止未经授权的通信。
  • 与 Azure Active Directory (AAD) 集成
    ,用于身份管理和身份验证。

2. 设置 Azure 和 Dapr 以实现安全的微服务

在深入研究代码之前,让我们设置使用 Dapr 部署和保护微服务所需的 Azure 基础设施。

第 1 步:安装 Dapr 并初始化环境

确保您已在本地安装 Dapr

# Install Dapr CLIwget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash# Initialize Dapr with self-hosted components for developmentdapr init

步骤 2:创建资源组和 Azure 容器环境

我们将微服务部署到 Azure,并使用 Dapr 的功能保护通信。

Create a resource groupaz groupcreate--name MyMicroservicesRG --location eastusCreate a container environment for Azure Container Appsaz containerapp env create--name secure-env --resource-group MyMicroservicesRG --location eastus

3. 在微服务之间启用双向 TLS (mTLS)

双向 TLS 可确保客户端和服务器相互进行身份验证,从而保护微服务之间的通信。

Dapr 会自动在同一环境中运行的微服务之间启用 mTLS。启用 mTLS 后,双方(客户端和服务器)都必须提供有效的证书,然后才能允许通信。这有助于防止未经授权的服务在您的架构中进行调用。

第 1 步:为 mTLS 配置 Dapr

默认情况下,Dapr 使用 mTLS 进行服务间通信。但是,要确认和管理它:

  1. 在 Dapr 中启用 mTLS:
    默认情况下,这是启用的,但您可以通过配置 daprsystem 组件来验证和调整 mTLS 设置。

mtls.yaml 中:

apiVersion:dapr.io/v1alpha1kind:Configurationmetadata:name:daprsystemnamespace:defaultspec:mtls:enabled:true

2. 应用此配置:

dapr run --app-id daprsystem --config ./mtls.yaml

此时,同一环境中由 Dapr 管理的服务之间的所有通信都受到双向 TLS 的保护。

4. 实施服务到服务身份验证

除了 mTLS 之外,您还需要在服务之间强制执行身份验证和授权,以确保只有允许的服务才能相互通信。

Dapr 通过 JWT(JSON Web 令牌)提供服务到服务的身份验证,确保服务可以在处理请求之前验证调用者的身份。

第 1 步:使用 JWT 保护 API 通信

让我们为微服务配置 JWT 身份验证。

OrderService/Program.cs 中:

using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Authorization;var builder = WebApplication.CreateBuilder(args);builder.Services.AddAuthentication("Bearer")    .AddJwtBearer("Bearer", options =>    {        options.Authority = "https://login.microsoftonline.com/<Tenant-ID>/v2.0";        options.Audience = "api://<API-ID>";    });builder.Services.AddAuthorization();var app = builder.Build();app.UseAuthentication();app.UseAuthorization();app.MapPost("/orders", [Authorize] ([FromBody] Order order) =>{// Order processing logicreturn Results.Ok("Order placed successfully.");});app.Run();publicrecordOrder(int OrderId, string ProductName, decimal Amount);

在上面的代码中:

  • 我们将 Order Service 配置为仅使用 JWT 令牌进行授权调用。
  • AddJwtBearer
     方法用于验证 Azure Active Directory 颁发的 JWT 令牌。

第 2 步:配置 Dapr Sidecar 进行服务身份验证

通过传递不记名令牌,确保您的 Dapr sidecar 处理 JWT 令牌以进行服务到服务的通信。

这可以通过自定义中间件完成,也可以直接作为 Dapr 调用 API 的一部分来完成。

使用 JWT 的 Dapr 服务调用

var client = DaprClient.CreateInvokeHttpClient("paymentservice");client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer""<JWT-TOKEN>");var response = await client.PostAsync("/payment"new StringContent(orderJson));

在此示例中,Order Service 调用 Payment Service,并传递 JWT 令牌进行身份验证。

5. 与 Azure Active Directory (AAD) 集成

Azure Active Directory (AAD) 提供身份管理和身份验证,无需管理复杂的凭据系统即可更轻松地保护微服务。

步骤 1:在 Azure AD 中注册微服务

  1. 转到 Azure 门户中的 Azure Active Directory
  2. 将每个微服务(例如,Order Service 和 Payment Service)注册为单独的 App Registration。
  3. 在 API 权限下,为每个服务授予必要的 API 权限以相互通信。

第 2 步:在服务中实施 AAD 身份验证

注册后,将服务配置为通过 Azure AD 进行身份验证。以下是保护支付服务的方法:

PaymentService/Program.cs 中:

using Microsoft.AspNetCore.Mvc;using Microsoft.AspNetCore.Authorization;var builder = WebApplication.CreateBuilder(args);builder.Services.AddAuthentication("Bearer")    .AddJwtBearer("Bearer", options =>    {        options.Authority = "https://login.microsoftonline.com/<Tenant-ID>/v2.0";        options.Audience = "api://<API-ID>";    });builder.Services.AddAuthorization();var app = builder.Build();app.UseAuthentication();app.UseAuthorization();app.MapPost("/payment", [Authorize] ([FromBody] Payment payment) =>{// Payment processing logicreturn Results.Ok("Payment processed.");});app.Run();publicrecordPayment(int PaymentId, int OrderId, decimal Amount);

支付服务现在需要有效的 Azure AD JWT 令牌来处理请求。

6. 监控和审计安全事件

最后,监控和审计是安全性的关键方面。使用 Azure Monitor 和 Dapr,可以跟踪与安全相关的事件,例如未经授权的访问尝试或服务故障。

步骤 1:启用用于 Dapr 日志的 Azure Monitor

Azure Monitor 可以从启用了 Dapr 的微服务中捕获日志和指标。

az monitor log-analytics workspace create--resource-group MyMicroservicesRG --workspace-name MyWorkspaceaz containerapp update --name orderservice --resource-group MyMicroservicesRG --log-analytics-enabled true --workspace-id <workspace-id>

这将启用日志记录,并允许您跟踪安全事件,例如无效的令牌尝试、过期的证书和失败的 mTLS 握手。

结论

Dapr 与 Azure 相结合,为构建安全的微服务提供了一个强大的框架。通过利用 Dapr 对 mTLS、JWT 身份验证和 Azure Active Directory 集成的内置支持,您可以轻松地为微服务实施端到端安全性,而不会影响性能或可扩展性。

这种方法可确保微服务之间的通信经过身份验证、加密和授权,从而使您的系统能够抵御安全威胁。

本文中提供的步骤以及代码示例将帮助您开始保护 Azure 上的微服务体系结构。无论您是处理内部微服务通信还是在外部公开 API,Dapr 的安全功能都可以简化构建安全、可扩展系统的过程。

其它相关课程

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

详细目录

mac/ios安全视频

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

QT开发底层原理与安全逆向视频教程

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

linux文件系统存储与文件过滤安全开发视频教程(2024最新)

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

linux高级usb安全开发与源码分析视频教程

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

linux程序设计与安全开发

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

rust语言全栈开发视频教程

使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • windows

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • windows()

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • USB()

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • ()

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • ios

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • windbg

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • ()

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性使用 Azure 上的 Dapr 保护微服务:实现端到端安全性使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

  • windows恶意软件开发与对抗视频教程

  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性
  • 使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

原文始发于微信公众号(安全狗的自我修养):使用 Azure 上的 Dapr 保护微服务:实现端到端安全性

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月5日22:59:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用 Azure 上的 Dapr 保护微服务:实现端到端安全性https://cn-sec.com/archives/3592870.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息