首次开通或使用Web应用防火墙(WAF)的日志服务、资产识别、、透明接入功能时,您必须先授权WAF访问云资源。本文介绍了如何进行云资源访问授权。

前提条件

  • 您已购买WAF实例。相关操作,请参见开通Web应用防火墙
  • 您使用的是阿里云主账号或拥有创建和删除服务关联角色权限的RAM用户身份。

背景信息

使用WAF的日志服务、资产识别、、透明接入功能时,WAF需要访问云服务器ECS、负载均衡SLB及ALB、云解析、CDN、证书服务、日志服务等云服务的资源,您可通过系统自动创建的WAF服务关联角色AliyunServiceRoleForWAF获取访问权限。服务关联角色无需您手动创建或做任何修改。相关内容,请参见服务关联角色

关于以上WAF相关功能的介绍,请参见资产识别WAF日志服务透明接入

操作步骤

  1. 登录Web应用防火墙控制台
  2. 在顶部菜单栏,选择Web应用防火墙实例的资源组和地域(中国内地海外地区)。
  3. 开通云资源访问授权。
    您首次开通或使用WAF的日志服务、资产识别、、透明接入功能时,阿里云都会提示您需要授权WAF访问其他云资源。

    您只需从以下方式中选择一种进行授权,且只需授权一次即可:

    • 方式一:通过日志服务进行授权

      使用限制:只有当您已将网站业务接入WAF防护且开通了WAF日志服务,才可以使用该方式进行授权。关于网站接入的具体操作,请参见网站接入;关于开通WAF日志服务的具体操作,请参见步骤1:开通WAF日志服务

      操作步骤如下:
      1. 在左侧导航栏,选择日志管理 > 日志服务
      2. 单击立即授权
      日志服务(SLR)
    • 方式二:通过开通资产识别进行授权

      使用限制:只有中国内地WAF实例支持资产识别功能。如果您使用海外地区WAF实例,请选择通过日志服务进行授权。

      操作步骤如下:
      1. 在左侧导航栏,选择资产中心 > 资产识别
      2. 单击免费开通
      资产识别(SLR)
    • 方式三:通过开通透明接入进行授权

      使用限制:只有中国内地WAF实例支持透明接入功能。如果您使用海外地区WAF实例,请选择通过日志服务进行授权。

      操作步骤如下:
      1. 在左侧导航栏,选择资产中心 > 网站接入
      2. 域名列表页签,单击网站接入
      3. 接入模式设置为透明接入,并单击免费开通
      透明接入(SLR)
  4. 提示对话框,单击确定提示(SLR)
    您单击确定后,阿里云将自动为您创建WAF服务关联角色AliyunServiceRoleForWAF。
    您可以在RAM控制台身份管理 > 角色页面,查看阿里云为WAF自动创建的服务关联角色。只有创建服务关联角色AliyunServiceRoleForWAF后,您的WAF实例才能访问云服务器ECS、负载均衡SLB及ALB、云解析、CDN、证书服务、日志服务等关联云服务的资源。AliyunServiceRoleForWaf

WAF服务关联角色介绍

以下是WAF服务关联角色的介绍:

  • 角色名称:AliyunServiceRoleForWAF
  • 权限策略名称:AliyunServiceRolePolicyForWAF
    说明 该权限策略为系统默认提供的策略,策略名称和策略内容都不支持修改。
  • 权限策略示例:
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "ecs:DescribeInstances",
                    "ecs:DescribeNetworkInterfaces",
                    "ecs:CreateNetworkInterface",
                    "ecs:DeleteNetworkInterface",
                    "ecs:AttachNetworkInterface",
                    "ecs:DetachNetworkInterface",
                    "ecs:DescribeNetworkInterfacePermissions",
                    "ecs:CreateNetworkInterfacePermission",
                    "ecs:DeleteNetworkInterfacePermission",
                    "ecs:DescribeSecurityGroups",
                    "ecs:DescribeSecurityGroupAttribute",
                    "ecs:CreateSecurityGroup",
                    "ecs:DeleteSecurityGroup",
                    "ecs:AuthorizeSecurityGroup",
                    "ecs:RevokeSecurityGroup",
                    "ecs:DescribeDisks"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "slb:DescribeServerCertificates",
                    "slb:DescribeDomainExtensions",
                    "slb:DescribeLoadBalancers",
                    "slb:DescribeListenerAccessControlAttribute",
                    "slb:DescribeLoadBalancerAttribute",
                    "slb:DescribeLoadBalancerHTTPListenerAttribute",
                    "slb:DescribeLoadBalancerHTTPSListenerAttribute",
                    "slb:DescribeLoadBalancerTCPListenerAttribute",
                    "slb:DescribeLoadBalancerUDPListenerAttribute"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "cdn:DescribeUserDomains",
                    "cdn:DescribeCdnDomainDetail",
                    "cdn:DescribeDomainsBySource",
                    "cdn:DescribeUserVipsByDomain"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "yundun-cert:DescribeUserCertificateList"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "log:PostLogStoreLogs",
                    "log:GetProject",
                    "log:ListProject",
                    "log:GetLogStore",
                    "log:ListLogStores",
                    "log:CreateLogStore",
                    "log:CreateProject",
                    "log:GetIndex",
                    "log:CreateIndex",
                    "log:UpdateIndex",
                    "log:CreateDashboard",
                    "log:ClearLogStoreStorage",
                    "log:UpdateLogStore",
                    "log:UpdateDashboard",
                    "log:DeleteProject",
                    "log:CreateSavedSearch",
                    "log:UpdateSavedSearch",
                    "log:DeleteLogStore"
                ],
                "Resource": "acs:log:*:*:project/waf*",
                "Effect": "Allow"
            },
            {
                "Action": "ram:DeleteServiceLinkedRole",
                "Resource": "*",
                "Effect": "Allow",
                "Condition": {
                    "StringEquals": {
                        "ram:ServiceName": "waf.aliyuncs.com"
                    }
                }
            }
        ]
    }

    关于权限策略语法的详细说明,请参见权限策略基本元素

删除服务关联角色

如果不再需要使用WAF,您可以删除WAF服务关联角色AliyunServiceRoleForWAF。在删除服务关联角色前您必须先释放已有的WAF实例。在释放已有的WAF实例后,您可以参考以下步骤,在RAM控制台删除WAF服务关联角色。

  1. 登录RAM控制台
  2. 在左侧导航栏,选择身份管理 > 角色
  3. 使用搜索功能,定位到WAF服务关联角色AliyunServiceRoleForWAF,单击操作列的删除
  4. 单击确定
    访问控制RAM会先检查WAF服务关联角色是否仍被WAF实例使用:
    • 如果为否,WAF服务关联角色将被直接删除。
    • 如果为是,您暂不能删除WAF服务关联角色,但可以查看哪些WAF实例在使用该角色。您必须先释放对应的WAF实例,才可以删除WAF服务关联角色。

相关问题

为什么我的RAM用户无法自动创建WAF服务关联角色AliyunServiceRoleForWAF?

您需要拥有指定的权限,才能自动创建或删除AliyunServiceRoleForWAF。因此,在RAM用户无法自动创建AliyunServiceRoleForWAF时,您需为RAM用户添加以下权限策略。详细操作步骤指导,请参见为RAM角色授权
{
    "Statement": [
        {
            "Action": [
                "ram:CreateServiceLinkedRole"
            ],
            "Resource": "acs:ram:*:主账号ID:role/*",
            "Effect": "Allow",
            "Condition": {
                "StringEquals": {
                    "ram:ServiceName": [
                        "waf.aliyuncs.com"
                    ]
                }
            }
        }
    ],
    "Version": "1"
}