自定义策略使用样例

2025-06-06 09:34:47

配合较高权限系统策略使用

如果您给IAM用户授予较高权限的系统策略,例如“FullAccess”  ,但不希望IAM用户拥有某个服务的权限,例如云审计服务。您可以创建一个自定义策略,并将自定义策略的Effect设置为Deny,然后将较高权限的系统策略和自定义策略同时授予用户,根据Deny优先原则,则授权的IAM用户除了云审计服务,可以对其他所有服务执行所有操作。

以下策略样例表示:拒绝IAM用户使用云审计服务。

{ 
    "Version": "1.1", 
    "Statement": [ 
        { 
            "Effect": "Deny", 
            "Action": [ 
                    "cts:*:*" 
            ] 
        } 
    ] 
}

说明:

  1. Action为授权项,格式为:服务名:资源类型:操作。

    "cts:*:*":表示对云审计的所有操作。其中cts为服务名;“*”为通配符,表示对所有的资源类型可以执行所有操作。

  2. Effect为作用,Deny表示拒绝,Allow表示允许。

配合单个服务系统策略使用

  • 如果您给IAM用户授予单个服务系统策略,例如“BMS FullAccess”,但不希望用户拥有BMS FullAccess中的创建物理机权限(bms:servers:create),可以创建一条相同Action的自定义策略,并将自定义策略的Effect设置为Deny,然后将系统策略BMS FullAccess和自定义策略同时授予用户,根据Deny优先原则,则用户可以对BMS执行除了创建物理机外的所有操作。

以下策略样例表示:拒绝IAM用户创建物理机。

{ 
    "Version": "1.1", 
    "Statement": [ 
        { 
            "Effect": "Deny", 
            "Action": [ 
                    "bms:servers:create" 
            ] 
        } 
    ] 
}
  • 如果您给IAM用户授予“OBS ReadOnlyAccess”权限,但不希望部分用户查看指定OBS资源(例如,不希望用户名以“TestUser”开头的用户查看以“TestBucket”命名开头的桶),可以再创建一条自定义策略来指定特定的资源,并将自定义策略的Effect设置为Deny,然后将OBS ReadOnlyAccess和自定义策略同时授予用户。根据Deny优先原则,则用户可以对以“TestBucket”命名开头之外的桶进行查看操作。

以下策略样例表示:拒绝以TestUser命名开头的用户查看以TestBucket命名开头的桶。

{ 
        "Version": "1.1", 
        "Statement": [ 
                { 
                        "Effect": "Deny", 
                        "Action": [ 
                                "obs:bucket:ListAllMybuckets", 
                                "obs:bucket:HeadBucket", 
                                "obs:bucket:ListBucket", 
                                "obs:bucket:GetBucketLocation" 
                        ], 
                        "Resource": [ 
                            "obs:*:*:bucket:TestBucket*" 
                        ], 
                        "Condition": { 
                            "StringStartWith": { 
                                "g:UserName": [ 
                                    "TestUser" 
                    ] 
                } 
            } 
                } 
        ] 
}

说明:当前仅部分服务支持资源级授权,例如OBS 对象存储服务;对于不支持资源级别授权的服务,若自定义策略中含有资源类型,则无法创建成功。

完全使用自定义策略

您也可以不使用系统策略,只创建自定义策略,实现IAM用户的指定服务授权。

  • 以下策略样例表示:仅允许IAM用户使用ECS、EVS、VPC、ELB、AOM

{ 
        "Version": "1.1", 
        "Statement": [ 
                { 
                        "Effect": "Allow" 
                        "Action": [ 
                                "ecs:*:*", 
                                "evs:*:*", 
                                "vpc:*:*", 
                                "elb:*:*", 
                                "aom:*:*" 
                        ] 
                } 
        ] 
}
  • 以下策略样例表示:允许特定IAM用户(以TestUser命名开头)删除特定OBS对象(my-bucket桶my-object目录下的所有对象)。

{ 
        "Version": "1.1", 
        "Statement": [ 
                { 
                        "Effect": "Allow", 
                        "Action": [ 
                            "obs:object:DeleteObject" 
                        ], 
                        "Resource": [ 
                            "obs:*:*:object:my-bucket/my-object/*" 
                        ], 
                        "Condition": { 
                            "StringStartWith": { 
                                "g:UserName": [ 
                                    "TestUser" 
                    ] 
                } 
        ] 
}
  • 以下策略样例表示:允许IAM用户使用除了ECS、EVS、VPC、ELB、AOM外的其他所有服务。

{ 
        "Version": "1.1", 
        "Statement": [ 
                { 
                        "Effect": "Allow", 
                        "Action": [ 
                                "*:*:*" 
                        ] 
                }, 
                { 
                        "Action": [ 
                                "ecs:*:*", 
				"evs:*:*", 
			        "vpc:*:*", 
				"elb:*:*",  
				"aom:*:*",  
                        ], 
                        "Effect": "Deny" 
                } 
        ] 
}



VmKtSZY3O4qv