更新时间:2023-08-07 GMT+08:00
分享

自定义权限策略

如果系统预置的权限策略,不满足用户授权需求,CodeArts IDE Online支持自定义权限策略。

本章为您介绍CodeArts IDE Online常用的自定义权限策略代码样例。

自定义策略样例

  • 授权用户创建、启动、停止、访问和查看权限。
    { 
        "Version": "1.1", 
        "Statement": [ 
            { 
                "Effect": "Allow", 
                "Action": [ 
                         "cloudIDE:instance:create",
                         "cloudIDE:instance:start",
                         "cloudIDE:instance:stop",
                         "cloudIDE:instance:access",
                         "cloudIDE:instance:get"
                ] 
            } 
        ] 
    }
  • 授权用户使用CodeArts IDE Online所有权限。
    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cloudIDE:*:*"
                ]
            }
        ]
    }
  • 禁止用户删除CodeArts IDE Online实例。

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

    例如:如果授予用户CloudIDE FullAccess的系统策略,但不希望用户拥有CloudIDE FullAccess中定义的删除CodeArts IDE Online实例权限,可以创建一条禁止删除CodeArts IDE Online实例的自定义策略,同时将CloudIDE FullAccess和禁止策略授予用户,根据Deny优先原则,则用户可以对CodeArts IDE Online执行除了CodeArts IDE Online实例外的所有操作。禁止策略示例如下:

    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Deny",
                "Action": [
                    "cloudIDE:instance:delete"
                ]
            }
        ]
    }
  • 仅允许用户启动、停止自己拥有的实例或被分发给自己的实例。

    可以在自定义策略中为启动和停止实例的授权项添加条件,使该授权项仅对用户自己的实例生效。CodeArts IDE Online通过IAM预置了两组条件键,其与授权项的关联关系详见CodeArts IDE Online权限表4授权项与对应条件键,您可以使用条件键检查请求者的id,然后再允许执行操作。为了保证数据安全,CodeArts IDE Online只允许实例的访问者访问实例,如果用户不是实例的访问者,即使配置权限也无法访问该实例。条件策略示例如下:

    {
        "Version": "1.1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "cloudIDE:instance:start",
                    "cloudIDE:instance:stop"
                ],
                "Condition": {
                    "StringEquals": {
                        "cloudIDE:instanceUser": ["${g:UserId}"]
                    }
                }
            },{
                "Effect": "Allow",
                "Action": [
                    "cloudIDE:instance:start",
                    "cloudIDE:instance:stop"
                ],
                "Condition": {
                    "StringEquals": {
                        "cloudIDE:instanceVisitor": ["${g:UserId}"]
                    }
                }
            }
        ]
    }

相关文档