更新时间:2024-11-06 GMT+08:00

GaussDB(for MySQL)自定义策略

如果系统预置的GaussDB(for MySQL)权限,不满足您的授权要求,可以创建自定义策略。

目前华为云支持以下两种方式创建自定义策略:

  • 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。
  • JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。

具体创建步骤请参见:创建自定义策略。本章为您介绍常用的GaussDB(for MySQL)自定义策略样例。

GaussDB(for MySQL)自定义策略样例

  • 示例1:授权用户创建GaussDB(for MySQL)实例
    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "gaussdb:instance:create"
                ]
            }
        ]
    }
  • 示例2:拒绝用户删除GaussDB(for MySQL)实例

    拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则

    如果您给用户授予GaussDB FullAccess的系统策略,但不希望用户拥有GaussDB FullAccess中定义的删除GaussDB(for MySQL)实例权限,您可以创建一条拒绝删除GaussDB(for MySQL)实例的自定义策略,然后同时将GaussDB FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对GaussDB(for MySQL)执行除了删除GaussDB(for MySQL)实例外的所有操作。拒绝策略示例如下:

    {
        "Version": "1.1",
        "Statement": [
            {
              "Effect": "Deny"
              "Action": [
                    "gaussdb:instance:delete"
                ],
              }
        ]
    }
  • 示例3:多个授权项策略

    一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务或都是全局级服务。多个授权语句策略描述如下:

    {  
            "Version": "1.1",  
            "Statement": [  
                    {  
                            "Action": [  
                                    "gaussdb:instance:create",  
                                    "gaussdb:instance:modify",  
                                    "gaussdb:instance:delete",  
                     "vpc:publicIps:list",  
                     "vpc:publicIps:update"  
                            ],  
                            "Effect": "Allow"  
                    }  
            ]  
    }
  • 示例4 对目标用户授权管理指定的实例和实例的部分功能

    假设您的账号下有多个实例,但是作为管理员。您希望授权GaussDB(for MySQL)实例中的部分实例给目标用户,并授予部分功能给目标用户,那么您可以创建如下权限策略:

    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "gaussdb:instance:restart",
                    "gaussdb:instance:modify"
                ],
                "Resource": [
                   "GAUSSDB:*:*:instance:test*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "gaussdb:param:list",
                    "gaussdb:tag:list",
                    "gaussdb:backup:list",
                    "gaussdb:instance:create",
                    "gaussdb:instance:list"
                ]
            }
        ]
    }
    
    • 被授予该权限策略的目标用户号可以查看所有的实例,但只能管理已被授权的实例。同时作为管理员,您仍然可以使用API直接管理上述实例。被授予该权限策略的目标用户仅可以对账号下所有的GaussDB(for MySQL)实例进行重启和修改实例操作,但不允许进行其他任何操作。
    • test*是对实例名称的模糊匹配,在权限策略中是必须的,否则被授权的用户无法在控制台看到任何实例。
    • GaussDB(for MySQL)支持通过用户进行API级别的访问控制,您可以通过相关API对GaussDB(for MySQL)进行细粒度的权限访问控制,详情请参见API概览