Web应用防火墙WAF(Web Application Firewall)为了完成日志服务、资产识别、透明接入的功能,需要获取其他云服务的访问权限。所以,在您首次登录WAF控制台时,必须先授予WAF访问相关云资源的权限,授权后才能正常使用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",
                    "slb:DescribeTLSCipherPolicies",
                    "slb:ListTLSCipherPolicies",
                    "slb:DescribeLoadBalancers"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "alb:ListLoadBalancers",
                    "alb:GetLoadBalancerAttribute",
                    "alb:ListListeners",
                    "alb:GetListenerAttribute",
                    "alb:ListListenerCertificates",
                    "alb:DescribeRegions",
                    "alb:ListSystemSecurityPolicies",
                    "alb:ListSecurityPolicies"
                ],
                "Resource": "*",
                "Effect": "Allow"
            },
            {
                "Action": [
                    "vpc:DescribeEipAddresses"
                ],
                "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实例。具体操作,请参见开通Web应用防火墙
  • 确保使用的是阿里云账号或拥有创建和删除服务关联角色权限的RAM用户身份。

创建服务关联角色

通过日志服务

只有当您已将网站业务接入WAF防护且开通了WAF日志服务,才可以使用该方式创建服务关联角色。关于网站接入的具体操作,请参见添加域名;关于开通WAF日志服务的具体操作,请参见步骤1:开通WAF日志服务

  1. 登录Web应用防火墙控制台,并在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地)。
  2. 在左侧导航栏,选择安全运营 > 日志服务
  3. 单击立即授权,并在提示对话框,单击确定

通过开通资产识别

只有中国内地WAF实例支持资产识别功能。如果您使用非中国内地WAF实例,请选择通过日志服务透明接入创建服务关联角色。

  1. 登录Web应用防火墙控制台,并在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地)。
  2. 在左侧导航栏,选择资产中心 > 资产识别
  3. 单击免费开通,并在提示对话框,单击确定

通过开通透明接入

  1. 登录Web应用防火墙控制台,并在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地)。
  2. 在左侧导航栏,选择资产中心 > 网站接入
  3. 域名列表页签,单击网站接入
  4. 接入模式设置为透明接入,并单击免费开通,并在提示对话框,单击确定

完成后,阿里云将自动为您创建WAF服务关联角色AliyunServiceRoleForWAF。您可以在RAM控制台身份管理 > 角色页面,查看阿里云为WAF自动创建的服务关联角色。

删除服务关联角色

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

常见问题

为什么我的RAM用户无法自动创建WAF服务关联角色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"
}