
# 权限管理
如果您需要针对统一身份认证服务，为企业中的员工设置不同的访问权限，以达到不同员工之间的权限隔离，您可以使用IAM进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能，可以帮助您安全的控制华为云资源的访问。
通过IAM，您可以在账号中给员工创建IAM用户，并授权控制他们对资源的访问范围。例如您的员工中有负责进行项目规划的人员，您希望他们拥有IAM的查看权限，但是不希望他们拥有删除IAM用户、项目等高危操作的权限，那么您可以使用IAM为项目规划人员创建IAM用户，通过授予仅能查看IAM，但是不允许使用IAM的权限，控制他们对IAM控制台的使用范围。IAM服务支持的所有服务系统权限请参见：[系统权限](https://support.huaweicloud.com/usermanual-permissions/iam_01_0001.html)。
 #### IAM权限
默认情况下，管理员创建的IAM用户没有任何权限，需要将其加入用户组，并给用户组授予策略或角色，才能使得用户组中的用户获得对应的权限，这一过程称为授权。授权后，用户就可以基于被授予的权限对云服务进行操作。
IAM部署时不区分物理区域，为全局级服务。授权时，在全局级服务中设置权限，访问IAM时，不需要切换区域。
权限根据授权精细程度分为角色和策略。
- 角色：IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度，提供有限的服务相关角色用于授权。由于各服务之间存在业务依赖关系，因此给用户授予角色时，可能需要一并授予依赖的其他角色，才能正确完成业务。角色并不能满足用户对精细化授权的要求，无法完全达到企业对权限最小化的安全管控要求。
- 策略：IAM最新提供的一种细粒度授权的能力，可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式，能够满足企业对权限最小化的安全管控要求。例如：针对ECS服务，管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分，IAM支持的API授权项请参见[权限及授权项说明](https://support.huaweicloud.com/api-iam/iam_19_0003.html)。
如[表1]所示，包括了IAM的所有系统权限。
 表1IAM系统权限 
| 系统角色/策略名称              | 描述                                                   | 类别   | 角色/策略内容                                                         |
|:---|:---|:---|:---|
| FullAccess             | 基于策略授权的所有服务的所有权限，拥有该权限的用户可以完成基于策略授权的所有服务的所有操作。       | 系统策略 | [FullAccess策略内容]             |
| IAM ReadOnlyAccess     | 统一身份认证服务的只读权限，拥有该权限的用户仅能查看统一身份认证服务数据。                | 系统策略 | [IAM ReadOnlyAccess策略内容]     |
| Security Administrator | 统一身份认证服务的管理员权限，拥有该权限的用户拥有IAM支持的所有权限，包括创建、删除IAM用户等操作。 | 系统角色 | [Security Administrator角色内容] |
| Agent Operator         | 统一身份认证服务的切换角色权限，拥有该权限的用户（被委托方）可以切换角色并访问委托方账号中的资源。    | 系统角色 | [Agent Operator角色内容]        |
| Tenant Guest           | 除统一身份认证服务外，其他所有服务的只读权限。                              | 系统角色 | [Tenant Guest角色内容]           |
| Tenant Administrator   | 除统一身份认证服务外，其他所有服务的管理员权限。                             | 系统角色 | [Tenant Administrator角色内容]     |
   
[表2]列出了IAM常用操作与系统权限的授权关系，您可以参照该表选择合适的系统权限。
![](https://support.huaweicloud.com/productdesc-iam/public_sys-resources/note_3.0-zh-cn.png)
Tenant Guest、Tenant Administrator是统一身份认证服务提供的基础权限，不包含IAM的任何权限，因此下表中不进行解析。
 表2常用操作与系统权限的关系 
| 操作           | Security Administrator | Agent Operator | FullAccess | IAM ReadOnlyAccess |
|:---|:---|:---|:---|:---|
| 创建IAM用户      | √                      | ×              | √          | ×                  |
| 查询IAM用户详情    | √                      | ×              | √          | √                  |
| 修改IAM用户信息    | √                      | ×              | √          | ×                  |
| 查询IAM用户安全设置  | √                      | ×              | √          | √                  |
| 修改IAM用户安全设置  | √                      | ×              | √          | ×                  |
| 删除IAM用户      | √                      | ×              | √          | ×                  |
| 创建用户组        | √                      | ×              | √          | ×                  |
| 查询用户组详情      | √                      | ×              | √          | √                  |
| 修改用户组信息      | √                      | ×              | √          | ×                  |
| 添加用户到用户组     | √                      | ×              | √          | ×                  |
| 从用户组移除用户     | √                      | ×              | √          | ×                  |
| 删除用户组        | √                      | ×              | √          | ×                  |
| 为用户组授权       | √                      | ×              | √          | ×                  |
| 移除用户组权限      | √                      | ×              | √          | ×                  |
| 创建自定义策略      | √                      | ×              | √          | ×                  |
| 修改自定义策略      | √                      | ×              | √          | ×                  |
| 删除自定义策略      | √                      | ×              | √          | ×                  |
| 查询权限详情       | √                      | ×              | √          | √                  |
| 创建委托         | √                      | ×              | √          | ×                  |
| 查询委托         | √                      | ×              | √          | √                  |
| 修改委托         | √                      | ×              | √          | ×                  |
| 切换角色         | ×                      | √              | √          | ×                  |
| 删除委托         | √                      | ×              | √          | ×                  |
| 为委托授权        | √                      | ×              | √          | ×                  |
| 移除委托权限       | √                      | ×              | √          | ×                  |
| 创建项目         | √                      | ×              | √          | ×                  |
| 查询项目         | √                      | ×              | √          | √                  |
| 修改项目         | √                      | ×              | √          | ×                  |
| 删除项目         | √                      | ×              | √          | ×                  |
| 创建身份提供商      | √                      | ×              | √          | ×                  |
| 导入Metadata文件 | √                      | ×              | √          | ×                  |
| 查询Metadata文件 | √                      | ×              | √          | √                  |
| 查询身份提供商      | √                      | ×              | √          | √                  |
| 查询协议         | √                      | ×              | √          | √                  |
| 查询映射         | √                      | ×              | √          | √                  |
| 更新身份提供商      | √                      | ×              | √          | ×                  |
| 更新协议         | √                      | ×              | √          | ×                  |
| 更新映射         | √                      | ×              | √          | ×                  |
| 删除身份提供商      | √                      | ×              | √          | ×                  |
| 删除协议         | √                      | ×              | √          | ×                  |
| 删除映射         | √                      | ×              | √          | ×                  |
| 查询配额         | √                      | ×              | √          | ×                  |
   
[访问密钥保护](https://support.huaweicloud.com/usermanual-iam/iam_07_0002.html#section3)开启的情况下，仅管理员可以管理访问密钥。IAM用户如需创建、启用/停用或删除自己的访问密钥，需要管理员[关闭访问密钥保护](https://support.huaweicloud.com/usermanual-iam/iam_07_0002.html#section3)。访问密钥保护默认关闭。
若当前IAM用户要对其他IAM用户的访问密钥进行管理，则可以参考[表3]为当前IAM用户选择合适的系统权限。例如IAM用户A要为IAM用户B创建访问密钥，则IAM用户A需要拥有Security Administrator或者FullAccess权限。
 表3访问密钥操作与系统权限的关系 
| 操作                 | Security Administrator | Agent Operator | FullAccess | IAM ReadOnlyAccess |
|:---|:---|:---|:---|:---|
| 创建访问密钥（为其他IAM用户）   | √                      | ×              | √          | ×                  |
| 查询访问密钥列表（为其他IAM用户） | √                      | ×              | √          | √                  |
| 修改访问密钥（为其他IAM用户）   | √                      | ×              | √          | ×                  |
| 删除访问密钥（为其他IAM用户）   | √                      | ×              | √          | ×                  |
   
 #### FullAccess策略内容
```
{
    "Version": "1.1",
    "Statement": [
        {
            "Action": [
                "*:*:*"
            ],
            "Effect": "Allow"
        }
    ]
}
```
 #### IAM ReadOnlyAccess策略内容
```
{
    "Version": "1.1",
    "Statement": [
        {
            "Action": [
                "iam:*:get*",
                "iam:*:list*",
                "iam:*:check*"
            ],
            "Effect": "Allow"
        }
    ]
}
```
 #### Security Administrator角色内容
```
{
    "Version": "1.0",
    "Statement": [
        {
            "Action": [
                "iam:agencies:*",
                "iam:credentials:*",
                "iam:groups:*",
                "iam:identityProviders:*",
                "iam:mfa:*",
                "iam:permissions:*",
                "iam:projects:*",
                "iam:quotas:*",
                "iam:roles:*",
                "iam:users:*",
                "iam:securitypolicies:*"
            ],
            "Effect": "Allow"
        }
    ]
}
```
 #### Agent Operator角色内容
```
{
    "Version": "1.0",
    "Statement": [
        {
            "Action": [
                "iam:tokens:assume"
            ],
            "Effect": "Allow"
        }
    ]
}
```
 #### Tenant Guest角色内容
```
{
    "Version": "1.1",
    "Statement": [
        {
            "Action": [
                "obs:*:get*",
                "obs:*:list*",
                "obs:*:head*"
            ],
            "Effect": "Allow"
        },
        {
            "Condition": {
                "StringNotEqualsIgnoreCase": {
                    "g:ServiceName": [
                        "iam"
                    ]
                }
            },
            "Action": [
                "*:*:get*",
                "*:*:list*",
                "*:*:head*",
                "*:*:display*",
                "*:*:query*"
            ],
            "Effect": "Allow"
        }
    ]
}
```
 #### Tenant Administrator角色内容
```
{
    "Version": "1.1",
    "Statement": [
        {
            "Action": [
                "obs:*:*"
            ],
            "Effect": "Allow"
        },
        {
            "Condition": {
                "StringNotEqualsIgnoreCase": {
                    "g:ServiceName": [
                        "iam"
                    ]
                }
            },
            "Action": [
                "*:*:*"
            ],
            "Effect": "Allow"
        }
    ]
}
```
