自定義策略使用樣例
更新時間 2023-12-13 10:50:55
最近更新時間: 2023-12-13 10:50:55
分享文章
本節主要介紹自定義策略使用樣例
配合較高權限系統策略使用
如果您給IAM用戶授予較高權限的系統策略,例如“FullAccess” ?,但不希望IAM用戶擁有某個服務的權限,例如云審計服務。您可以創建一個自定義策略,并將自定義策略的Effect設置為Deny,然后將較高權限的系統策略和自定義策略同時授予用戶,根據Deny優先原則,則授權的IAM用戶除了云審計服務,可以對其他所有服務執行所有操作。
以下策略樣例表示:拒絕IAM用戶使用云審計服務。
{
"Version": "1.1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"cts:*:*"
]
}
]
}
說明
Action為授權項,格式為:服務名:資源類型:操作。
"cts:*:*":表示對云審計的所有操作。其中cts為服務名;“*”為通配符,表示對所有的資源類型可以執行所有操作。
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"
}
]
}