自定义权限策略参考

如果系统权限策略不能满足您的要求,您可以创建自定义权限策略实现最小授权。使用自定义权限策略有助于实现权限的精细化管控,是提升资源访问安全的有效手段。本文介绍EMR on ECS使用自定义权限策略的场景和策略示例。

什么是自定义权限策略

在基于RAM的访问控制体系中,自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。自定义权限策略的版本更新需由您来维护。

  • 创建自定义权限策略后,需为RAM用户、用户组或RAM角色绑定权限策略,这些RAM身份才能获得权限策略中指定的访问权限。

  • 已创建的权限策略支持删除,但删除前需确保该策略未被引用。如果该权限策略已被引用,您需要在该权限策略的引用记录中移除授权。

  • 自定义权限策略支持版本控制,您可以按照RAM规定的版本管理机制来管理您创建的自定义权限策略版本。

操作文档

常见自定义权限策略场景及示例

示例一:授予RAM用户通过特定的IP地址访问EMR集群的权限

  • Allow 授权中增加IP地址限制

    以下示例为在 Allow 授权中增加IP地址限制,授予RAM用户仅允许通过192.168.0.0/16198.51.100.0/24两个IP地址段对EMR集群进行操作。

    {
      "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "emr:*",
                "Resource": "*",
                "Condition":{
                  "IpAddress":{
                    "acs:SourceIp":[
                      "192.168.0.0/16",
                      "198.51.100.0/24"
                    ]
                  }
                }
            }
        ]
    }
  • Deny授权中增加IP地址限制

    以下示例为在Deny授权中增加IP地址限制,拒绝源IP地址不在192.168.0.0/16198.51.100.0/24范围内的RAM用户对EMR集群进行操作。

    {
          "Version":"1",
          "Statement": [
            {
                "Effect": "Allow",
                "Action": "emr:*",
                "Resource": "*"
            },
            {
                "Effect": "Deny",
                "Action": "emr:*",
                "Resource": "*",
                "Condition": {
                    "NotIpAddress": {
                        "acs:SourceIp": [
                            "192.168.0.0/16",
                            "198.51.100.0/24"
                        ]
                    }
                }
            }
        ]
    }

示例二:授予RAM用户访问包含指定标签的EMR集群的权限

以下示例为授予用户绑定了team:dev标签的EMR集群拥有完全控制的权限。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "emr:*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "acs:RequestTag/team": [
                        "dev"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "emr:*",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "acs:ResourceTag/team": [
                        "dev"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "tag:ListTagKeys",
                "tag:ListTagValues"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "emr:TagResources",
                "emr:UntagResources"
            ],
            "Resource": "*"
        }
    ]
}
重要
  • 通过控制台访问被授权集群时,只有当RAM用户筛选对应标签后,RAM用户才能看到该集群。否则,RAM用户无法查看到任何EMR集群。

  • 授权后,当前仅支持通过OpenAPI方式创建指定标签的集群,暂不支持通过控制台创建指定标签的集群。

权限策略说明

策略内容

策略说明

{
  "Effect": "Allow",
  "Action": "emr:*",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "acs:RequestTag/team": [
        "dev"
      ]
    }
  }
}

允许通过标签team:dev查询、创建集群。

调用相关API时,入参必须包含标签键值对信息。

{
  "Effect": "Allow",
  "Action": "emr:*",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "acs:RequestTag/team": [
        "dev"
      ]
    }
  }
}

允许对绑定了标签team:dev的集群进行管理操作。

{
  "Effect": "Allow",
  "Action": [
    "tag:ListTagKeys",
    "tag:ListTagValues"
  ],
  "Resource": "*"
}

允许查看所有标签列表。

{
  "Effect": "Deny",
  "Action": [
    "emr:TagResources",
    "emr:UntagResources"
  ],
  "Resource": "*"
}

不允许绑定、解绑EMR集群的标签。

避免RAM用户因修改集群标签导致可操作的集群范围变化。

示例三:授予RAM用户对指定EMR集群的完全控制权限

以下示例为授予用户对集群ID为c-clusterid的EMR集群拥有完全控制的权限。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "emr:*",
            "Resource": "acs:emr:*:*:cluster/c-clusterid"
        }
    ]
}
重要

通过控制台访问被授权集群时,只有在RAM用户筛选并搜索对应的集群ID后,才可以查看该集群。否则,RAM用户将无法查看任何EMR集群。