SCP 語法 - AWS Organizations

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SCP 語法

服務控制政策 (SCPs) 使用的語法與 AWS Identity and Access Management (IAM) 許可政策和資源型政策 (例如 Amazon S3 儲存貯體政策) 使用的語法類似。如需IAM政策及其語法的詳細資訊,請參閱 IAM 使用者指南 中的IAM政策概觀

SCP 是純文字檔案,根據 規則建構JSON。本主題描述它使用的元素。

注意

您SCP計數中的所有字元都會與其大小上限 相符。本指南中的範例顯示SCPs已格式化為額外的空格,以改善其可讀性。不過,若您的政策大小接近大小上限,為了節省空間,您可以刪除引號外部的任何空格,例如空格字元和換行字元。

如需 SCPs 的一般資訊,請參閱 服務控制政策 (SCPs)

元素摘要

下表摘要說明您可以在 中使用的政策元素SCPs。某些政策元素僅在SCPs拒絕動作的 中提供。支援的效果欄列出您可以搭配 中每個政策元素使用的效果類型SCPs。

Element 用途 支援效果
版本 指定用於處理政策的語言語法規則。

Allow, Deny

Statement 做為政策元素的容器。您可以在 中有多個陳述式SCPs。 Allow, Deny
Statement ID (Sid) (選用) 提供陳述式的易記名稱。 Allow, Deny
效果 定義SCP陳述式是否允許或拒絕存取帳戶中IAM的使用者和角色。 Allow, Deny

Action

指定SCP允許或拒絕 AWS 的服務和動作。

Allow, Deny

NotAction

指定從 豁免 AWS 的服務和動作SCP。使用此項目以取代 Action 元素。

Deny

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一組陳述式 (以 【 】 個字元為周)。

以下範例顯示單一陳述式,其中包含單一 EffectActionResource 元素。

"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 元素。此值可以是 AllowDeny。它會影響任何相同陳述式中列出的動作。

如需詳細資訊,請參閱 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防止它。

ActionNotAction 元素

每個陳述式都必須包含以下其中一個項目:

  • 在允許和拒絕陳述式中,必須包含一個 Action 元素。

  • 針對拒絕陳述式 (Effect 元素的值為 Deny),必須包含一個 Action「或」NotAction 元素。

ActionNotAction元素的值是字串的清單 (JSON陣列),用於識別 陳述式允許或拒絕 AWS 服務 的動作。

每個字串都包含服務的縮寫 (例如 "s3"、"ec2"、"iam" 或 "organizations"),採用全部小寫,後面接著冒號,然後是來自該服務的動作。動作和註解不區分大小寫。一般而言,輸入時每個字會以首字大寫字母開始,然後其餘為小寫。例如:"s3:ListAllMyBuckets"

您也可以在 中使用萬用字元,例如星號 (*) 或問號 (?)SCP:

  • 使用星號 (*) 作為萬用字元,以比對部分名稱相同的多個動作。值 "s3:*" 表示 Amazon S3 服務中的所有動作。此值僅"ec2:Describe*"比對以「描述」開頭EC2的動作。

  • 使用問號 (?) 萬用字元來比對單一字元。

注意

在 中SCP, ActionNotAction元素中的萬用字元 (*) 和 (?) 只能單獨或用於字串結尾。它不能出現在字串開頭或中間。因此, "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-1eu-west-1區域以外的任何操作,列出的 服務中的動作除外。

如需詳細資訊,請參閱 IAM 使用者指南 中的IAMJSON政策元素:條件

不支援的元素

不支援下列元素SCPs:

  • Principal

  • NotPrincipal

  • NotResource