本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SCP 語法
服務控制政策 (SCPs) 使用的語法與 AWS Identity and Access Management (IAM) 許可政策和資源型政策 (例如 Amazon S3 儲存貯體政策) 使用的語法類似。如需IAM政策及其語法的詳細資訊,請參閱 IAM 使用者指南 中的IAM政策概觀。
SCP 是純文字檔案,根據 規則建構JSON
注意
您SCP計數中的所有字元都會與其大小上限 相符。本指南中的範例顯示SCPs已格式化為額外的空格,以改善其可讀性。不過,若您的政策大小接近大小上限,為了節省空間,您可以刪除引號外部的任何空格,例如空格字元和換行字元。
如需 SCPs 的一般資訊,請參閱 服務控制政策 (SCPs)。
元素摘要
下表摘要說明您可以在 中使用的政策元素SCPs。某些政策元素僅在SCPs拒絕動作的 中提供。支援的效果欄列出您可以搭配 中每個政策元素使用的效果類型SCPs。
Element | 用途 | 支援效果 |
---|---|---|
版本 | 指定用於處理政策的語言語法規則。 |
|
Statement | 做為政策元素的容器。您可以在 中有多個陳述式SCPs。 | Allow , Deny |
Statement ID (Sid) | (選用) 提供陳述式的易記名稱。 | Allow , Deny |
效果 | 定義SCP陳述式是否允許或拒絕存取帳戶中IAM的使用者和角色。 | Allow , Deny |
指定SCP允許或拒絕 AWS 的服務和動作。 |
|
|
指定從 豁免 AWS 的服務和動作SCP。使用此項目以取代 |
|
|
Resource | 指定 SCP 套用 AWS 的資源。 | Deny |
Condition | 指定決定陳述式生效時機的條件。 | Deny |
下列各節提供如何在 中使用政策元素的詳細資訊和範例SCPs。
Version
元素
每個 SCP都必須包含值為 的 Version
元素"2012-10-17"
。這是與最新版本的IAM許可政策相同的版本值。
"Version": "2012-10-17",
如需詳細資訊,請參閱 使用者指南 中的IAMJSON政策元素:版本。 IAM
Statement
元素
SCP 由一或多個Statement
元素組成。政策中只能有一個Statement
關鍵字,但值可以是JSON一組陳述式 (以 【 】 個字元為周)。
以下範例顯示單一陳述式,其中包含單一 Effect
、Action
和 Resource
元素。
"Statement": { "Effect": "Allow", "Action": "*", "Resource": "*" }
以下範例包含兩個陳述式,在一個 Statement
元素內有陣列清單。第一個陳述式允許所有動作,第二個陳述式則拒絕任何EC2動作。結果是帳戶中的管理員可以委派 Amazon Elastic Compute Cloud (Amazon ) 以外的任何許可EC2。
"Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": "ec2:*", "Resource": "*" } ]
如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:陳述式。
Statement ID (Sid
) 元素
Sid
是一種您可以為政策陳述式提供的選用識別符。您可以將 Sid
值指派給陳述式陣列中的每個陳述式。下列範例SCP顯示範例Sid
陳述式。
{ "Statement": { "Sid": "AllowsAllActions", "Effect": "Allow", "Action": "*", "Resource": "*" } }
如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:Id。
Effect
元素
每個陳述式必須包含一個 Effect
元素。此值可以是 Allow
或 Deny
。它會影響任何相同陳述式中列出的動作。
如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:效果。
"Effect": "Allow"
下列範例顯示 SCP 的陳述式,其中包含值為 的 Effect
元素Allow
,允許帳戶使用者執行 Amazon S3 服務的動作。此範例在使用允許清單策略的組織中很有用 (默認 FullAWSAccess
政策全部分離,因為這樣就能讓許可按預設隱含獲得拒絕)。結果是,陳述式允許任何連接帳戶的 Amazon S3 許可︰
{ "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "*" } }
即使此陳述式使用與IAM許可政策相同的Allow
值關鍵字,SCP但在 中,它實際上不會授予使用者執行任何動作的許可。相反地, SCPs 作為篩選條件,指定組織中IAM使用者和IAM角色的最大許可。在上述範例中,即使帳戶中的使用者已連接 AdministratorAccess
受管政策,這SCP也會限制受影響帳戶中的所有使用者僅 Amazon S3 動作。
"Effect": "Deny"
在 Effect
元素具有 值的陳述式中Deny
,您也可以限制對特定資源的存取,或定義SCPs何時生效的條件。
以下顯示範例,示範如何在拒絕陳述式中使用條件金鑰。
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:InstanceType": "t2.micro" } } } }
如果 Amazon EC2執行個體未設定為 , 中的此陳述式會SCP設定防護機制,以防止受影響的帳戶 (其中 SCP連接至帳戶本身,或連接至包含 帳戶的組織根或 OU) 啟動 Amazon EC2執行個體t2.micro
。即使允許此動作IAM的政策已連接至 帳戶, 建立的護欄也會SCP防止它。
Action
和 NotAction
元素
每個陳述式都必須包含以下其中一個項目:
-
在允許和拒絕陳述式中,必須包含一個
Action
元素。 -
針對拒絕陳述式 (
Effect
元素的值為Deny
),必須包含一個Action
「或」NotAction
元素。
Action
或 NotAction
元素的值是字串的清單 (JSON陣列),用於識別 陳述式允許或拒絕 AWS 服務 的動作。
每個字串都包含服務的縮寫 (例如 "s3"、"ec2"、"iam" 或 "organizations"),採用全部小寫,後面接著冒號,然後是來自該服務的動作。動作和註解不區分大小寫。一般而言,輸入時每個字會以首字大寫字母開始,然後其餘為小寫。例如:"s3:ListAllMyBuckets"
。
您也可以在 中使用萬用字元,例如星號 (*) 或問號 (?)SCP:
-
使用星號 (*) 作為萬用字元,以比對部分名稱相同的多個動作。值
"s3:*"
表示 Amazon S3 服務中的所有動作。此值僅"ec2:Describe*"
比對以「描述」開頭EC2的動作。 -
使用問號 (?) 萬用字元來比對單一字元。
注意
在 中SCP, Action
或 NotAction
元素中的萬用字元 (*) 和 (?) 只能單獨或用於字串結尾。它不能出現在字串開頭或中間。因此, "servicename:action*"
是有效的,但在 中兩者"servicename:*action"
"servicename:some*action"
都是無效的SCPs。
如需服務授權參考 中 AWS Organizations SCPs 和 的IAM許可政策、動作、資源和條件索引鍵 AWS 服務中支援的所有服務和動作清單。
如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:動作和IAMJSON政策元素: NotAction。
Action
元素的範例
下列範例顯示 SCP 的陳述式,允許帳戶管理員委派描述、啟動、停止和終止帳戶中EC2執行個體的許可。這是允許名單的範例,當預設的 Allow *
政策未連接時非常有用,使得依預設會隱含拒絕許可。若預設的 Allow
*
政策仍然連接到以下政策所連接的根、OU 或帳戶,則該政策不會有任何作用。
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeAvailabilityZones", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "*" } }
以下範例示範如何將您不要在連接帳戶中使用的服務加入拒絕清單。它假設預設值"Allow *"
SCPs仍連接至所有 OUs和根。此範例政策可防止連接帳戶中的帳戶管理員委派 IAM、Amazon EC2和 Amazon RDS服務的任何許可。可以委派來自其他服務的任何動作,只要沒有連接的另一個附加政策拒絕他們。
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "iam:*", "ec2:*", "rds:*" ], "Resource": "*" } }
NotAction
元素的範例
下列範例示範如何使用 NotAction
元素來 AWS 服務 排除政策的影響。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LimitActionsInRegion", "Effect": "Deny", "NotAction": "iam:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": "us-west-1" } } } ] }
透過此陳述式,受影響的帳戶僅限於在指定的 中執行動作 AWS 區域,除非在使用IAM動作。
Resource
元素
在 Effect
元素值為 的陳述式中Allow
,您只能在 的 Resource
元素中指定「*」SCP。您無法指定個別資源 Amazon Resource Names (ARNs)。
您也可以在資源元素中使用萬用字元,例如星號 (*) 或問號 (?):
-
使用星號 (*) 作為萬用字元,以比對部分名稱相同的多個動作。
-
使用問號 (?) 萬用字元來比對單一字元。
在 Effect
元素值為 的陳述式中Deny
,您可以指定個別 ARNs,如下列範例所示。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessToAdminRole", "Effect": "Deny", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePermissionsBoundary", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::*:role/
role-to-deny
" ] } ] }
這會SCP限制受影響帳戶中IAM的使用者和角色變更組織中所有帳戶中建立的常見管理IAM角色。
如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:資源。
Condition
元素
您可以在 的拒絕陳述式中指定Condition
元素SCP。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllOutsideEU", "Effect": "Deny", "NotAction": [
"cloudfront:*", "iam:*", "route53:*", "support:*"
], "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": ["eu-central-1", "eu-west-1"
] } } } ] }
這會SCP拒絕存取 eu-central-1
和 eu-west-1
區域以外的任何操作,列出的 服務中的動作除外。
如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:條件。
不支援的元素
不支援下列元素SCPs:
-
Principal
-
NotPrincipal
-
NotResource