Updated on 2025-11-21 GMT+08:00

Using IAM Roles or Policies to Grant Access to ELB

The role/policy-based authorization provided by Identity and Access Management (IAM) lets you control access to your ELB resources. With IAM, you can:

  • Create IAM users for personnel based on your enterprise's organizational structure. Each IAM user has their own identity credentials for accessing ELB resources.
  • Grant users only the permissions required to perform a given task based on their job responsibilities.
  • Entrust a Huawei Cloud account or a cloud service to perform efficient O&M on your ELB resources.

If your Huawei Cloud account meets your permissions requirements, you can skip this section.

Figure 1 shows the process flow of role/policy-based authorization.

Prerequisites

Before granting permissions to user groups, learn about system-defined permissions in Role/Policy-based Authorization for ELB. To grant permissions for other services, learn about all System Permissions.

Process Flow

Figure 1 Process of granting ELB permissions using role/policy-based authorization
  1. On the IAM console, create a user group and grant it permissions (ELB ReadOnlyAccess as an example).
  2. Create an IAM user and add the user to the group.
  3. Log in as the IAM user and verify permissions.

    In the authorized region, perform the following operations:

    • Choose Service List > Elastic Load Balance. Then click Buy Elastic Load Balancer on the ELB console. If a message appears indicating that you have insufficient permissions to perform the operation, the ELBReadOnlyAccess policy is in effect.
    • Choose another service from Service List. If a message appears indicating that you have insufficient permissions to access the service, the ELBReadOnlyAccess policy is in effect.

Example Custom Policies

Create custom policies to supplement the system-defined policies of ELB. For details about actions supported in custom policies, see Actions Supported by Policy-based Authorization.

To create a custom policy, choose either visual editor or JSON.

  • Visual editor: Select cloud services, actions, resources, and request conditions. This does not require knowledge of policy grammar.
  • JSON: Create a JSON policy or edit an existing one.

For details, see Creating a Custom Policy. The following lists examples of common ELB custom policies.

  • Example 1: Grant permissions to modify a load balancer.
    {  
         "Version": "1.1",  
         "Statement": [  
             {  
                 "Effect": "Allow",  
                 "Action": [  
                     "elb:loadbalancers:put"  
                 ]  
             }  
         ]  
     }
  • Example 2: Grant permissions to deny load balancer deletion.

    A policy with only "Deny" permissions must be used together with other policies. If the permissions granted to an IAM user contain both "Allow" and "Deny", the "Deny" permissions take precedence over the "Allow" permissions.

    Assume that you want to grant the permissions of the ELBFullAccess policy to a user but want to prevent them from deleting load balancers. You can create a custom policy for denying load balancer deletion and attach this policy together with the ELBFullAccess policy to the user. As an explicit deny in any policy overrides any allows, the user can perform all operations on load balancers excepting deleting them. The following is an example of a deny policy:

    {  
           "Version": "1.1",  
           "Statement": [  
                 {  
               "Effect": "Deny",  
                       "Action": [  
                             "elb:loadbalancers:delete"  
                       ]  
                 }  
           ]  
     }
  • Example 3: Create a custom policy containing multiple actions.

    A custom policy can contain the actions of one or multiple services that are of the same type (global or project-level). The following is an example policy containing multiple actions:

    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "elb:loadbalancers:get",
                    "elb:loadbalancers:list",
                    "elb:loadbalancers:delete"
                ]
            }
        ]
    }