在 Service Fabric 托管群集中使用 Azure DDoS 防护

Azure DDoS 防护与应用程序设计最佳做法相结合,提供增强的 DDoS 缓解功能来防御分布式拒绝服务 (DDoS) 攻击。 它会自动进行优化,以帮助保护虚拟网络中的特定 Azure 资源。 使用 Azure DDoS 防护有很多好处

Service Fabric 托管群集支持 Azure DDoS 网络保护,并允许将 Azure 虚拟机规模集与 Azure DDoS 网络保护计划关联。 该计划由客户创建,在托管群集 ARM 模板中传递计划的资源 ID。

在 Service Fabric 托管群集中使用 DDoS 保护

要求

使用 Service Fabric API 版本 2023-07-01-preview 或更高版本。

步骤

以下部分介绍在 Service Fabric 托管群集中使用 DDoS 网络保护应采取的步骤:

  1. 按照快速入门:创建和配置 Azure DDoS 网络保护中的步骤,通过门户、Azure PowerShell 或 Azure CLI 创建 DDoS 网络保护计划。 记下 ddosProtectionPlanName 和 ddosProtectionPlanId,以便在后面的步骤中使用。

  2. 将 DDoS 保护计划链接到 Service Fabric 托管群集为你管理的虚拟网络。 要执行此操作,必须授予 SFMC 权限才能将你的 DDoS 保护计划加入虚拟网络。 可以通过为 SFMC 分配“网络参与者”Azure 角色来授予此权限,如以下步骤所述:

    答: 从 Service Fabric 资源提供程序应用程序的订阅中获取服务 Id

    Connect-AzAccount -Environment AzureChinaCloud
    Select-AzSubscription -SubscriptionId <SubId>
    Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
    

    注释

    确保你位于正确的订阅中,如果订阅位于其他租户中,则主体 ID 将更改。

    ServicePrincipalNames : {74cb6831-0dbb-4be1-8206-fd4df301cdc2}
    ApplicationId         : 74cb6831-0dbb-4be1-8206-fd4df301cdc2
    ObjectType            : ServicePrincipal
    DisplayName           : Azure Service Fabric Resource Provider
    Id                    : 00000000-0000-0000-0000-000000000000
    

    请记下上面的输出中的 Id,它将在后面的步骤中用作 principalId

    角色定义名称 角色定义 ID
    网络参与者 4d97b98b-1d4f-4787-a291-c67834d212e7

    请记下 Role definition nameRole definition ID 属性值,以便在后面的步骤中使用

    B. 示例 ARM 部署模板向具有参与者访问权限的 DDoS 保护计划添加角色分配。 有关 Azure 角色的详细信息,请参阅 Azure 内置角色 - Azure RBAC。 此角色分配在模板的资源部分中定义,其中包含 PrincipalId 和从第一步确定的角色定义 ID。

            "variables": { 
              "sfApiVersion": "2023-07-01-preview", 
              "ddosProtectionPlanName": "YourDDoSProtectionPlan", 
              "ddosProtectionPlanId": "[concat('/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/sampleRg/providers/Microsoft.Network/ddosProtectionPlans/', variables('ddosProtectionPlanName'))]", 
              "sfrpPrincipalId": "00000000-0000-0000-0000-000000000000",
              "ddosProtectionPlanRoleAssignmentID": "[guid(variables('ddosProtectionPlanId'), 'SFRP-Role')]" 
            }, 
             "resources": [ 
          { 
                "type": "Microsoft.Authorization/roleAssignments", 
                "apiVersion": "2020-04-01-preview", 
                "name": "[variables('ddosProtectionPlanRoleAssignmentID')]", 
                "scope": "[concat('Microsoft.Network/ddosProtectionPlans/', variables('ddosProtectionPlanName'))]", 
                "properties": { 
                  "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '4d97b98b-1d4f- 4787-a291-c67834d212e7')]", 
                  "principalId": "[variables('sfrpPrincipalId')]" 
                } 
              } 
              ]
    

    也可以通过 PowerShell 使用第一步确定的 PrincipalId 和角色定义名称(参与者,如适用)来添加角色分配。

    New-AzRoleAssignment -PrincipalId "sfrpPrincipalId" `
    -RoleDefinitionId "4d97b98b-1d4f-4787-a291-c67834d212e7" `
    -ResourceName <resourceName> `
    -ResourceType <resourceType> `
    -ResourceGroupName <resourceGroupName>
    
  3. 在 Service Fabric 托管群集创建过程中,使用用于分配角色和添加 DDoS 保护配置的示例 ARM 部署模板。 使用上面获取的 principalIdddosProtectionPlanNameddosProtectionPlanId 更新模板。

  4. 还可以修改现有的 ARM 模板,并在 Microsoft.ServiceFabric/managedClusters 资源下添加新属性 ddosProtectionPlanId,该资源采用 DDoS 保护网络保护计划的资源 ID。

    ARM 模板:

          {
          "apiVersion": "2023-07-01-preview",
          "type": "Microsoft.ServiceFabric/managedclusters",
          },
          "properties":  {
          "ddosProtectionPlanId": "[parameters('ddosProtectionPlanId')]"
          }