

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

# SCP 語法
<a name="orgs_manage_policies_scps_syntax"></a>

服務控制政策 (SCPs) 使用的語法與 AWS Identity and Access Management (IAM) 許可政策[和資源型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) （例如 Amazon S3 儲存貯體政策） 使用的語法類似。如需 IAM 政策及其語法的詳細資訊，請參閱 *IAM 使用者指南*中的 [https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)指南中的 IAM 政策概觀。

SCP 是根據 [JSON](http://json.org) 規則進行結構化的純文字檔。本主題描述它使用的元素。

**注意**  
您 SCP 中所有的字元都會計入其[大小上限](orgs_reference_limits.md#min-max-values)。本指南中範例顯示的 SCP 格式具有額外的空格，以改善其可讀性。不過，若您的政策大小接近大小上限，為了節省空間，您可以刪除引號外部的任何空格，例如空格字元和換行字元。

如需 SCP 的一般資訊，請參閱[服務控制政策 (SCP)](orgs_manage_policies_scps.md)。

## 元素摘要
<a name="scp-elements-table"></a>

下表摘要說明您可以在 SCP 中使用的政策元素。有些政策元素僅能在拒絕動作的 SCP 中使用。**Supported effects** (支援效果) 欄會列出您在 SCP 中可搭配每個政策元素使用的效果類型。


| Element | 用途 | 支援效果 | 
| --- | --- | --- | 
| [Action](#scp-syntax-action) | 指定 SCP 允許或拒絕 AWS 的服務和動作。 | `Allow`, `Deny` | 
| [效果](#scp-syntax-effect) | 定義 SCP 陳述式是要[允許](orgs_manage_policies_scps_evaluation.md#how_scps_allow)還是[拒絕](orgs_manage_policies_scps_evaluation.md#how_scps_deny)存取帳戶中的 IAM 使用者和角色。 | `Allow`, `Deny` | 
| [Statement](#scp-syntax-statement) | 做為政策元素的容器。SCP 中可包含多個陳述式。 | `Allow`, `Deny` | 
| [Statement ID (Sid)](#scp-syntax-sid) | (選用) 提供陳述式的易記名稱。 | `Allow`, `Deny` | 
| [版本](#scp-syntax-version) | 指定用於處理政策的語言語法規則。 | `Allow`, `Deny` | 
| [Condition](#scp-syntax-condition) | 指定決定陳述式生效時機的條件。 | `Allow,``Deny` | 
| [NotAction](#scp-syntax-action) | 指定從 SCP 豁免 AWS 的服務和動作。使用此項目以取代 `Action` 元素。 | `Allow,``Deny` | 
| [Resource](#scp-syntax-resource) | 指定 SCP 套用 AWS 的資源。 | `Allow,``Deny` | 
| [NotResource](#scp-syntax-resource) | 指定從 SCP 豁免 AWS 的資源。使用此項目以取代 Resource 元素。 | `Allow`, `Deny` | 

下列各節提供如何在 SCP 中使用政策元素的更多資訊及範例。

**Topics**
+ [元素摘要](#scp-elements-table)
+ [`Action` 和 `NotAction` 元素](#scp-syntax-action)
+ [`Condition` 元素](#scp-syntax-condition)
+ [`Effect` 元素](#scp-syntax-effect)
+ [`Resource`和 `NotResource` 元素](#scp-syntax-resource)
+ [`Statement` 元素](#scp-syntax-statement)
+ [Statement ID (`Sid`) 元素](#scp-syntax-sid)
+ [`Version` 元素](#scp-syntax-version)
+ [不支援的元素](#scp-syntax-unsupported)

## `Action` 和 `NotAction` 元素
<a name="scp-syntax-action"></a>

`Action` 或 `NotAction`元素的值是字串清單 (JSON 陣列），可識別陳述式允許或拒絕 AWS 的服務和動作。

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

您也可以在 SCP 中使用萬用字元，例如星號 (\*) 或問號 (?)：
+ 使用星號 (\*) 作為萬用字元，以比對部分名稱相同的多個動作。值 `"s3:*"` 表示 Amazon S3 服務中的所有動作。值 `"ec2:Describe*"` 只會符合開頭為 "Describe" 的 EC2 動作。
+ 使用問號 (?) 萬用字元來比對單一字元。

如需其在 AWS Organizations SCPs 和 IAM 許可政策中支援的所有服務和動作的清單，請參閱《*IAM 使用者指南*》中的[AWS 服務的動作、資源和條件金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_actionsconditions.html)。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素︰動作](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_action.html)和 [IAM JSON 政策元素︰NotAction](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notaction.html)。

### `Action` 元素的範例
<a name="scp-syntax-action-example"></a>

以下範例顯示的 SCP 包含一個陳述式，允許帳戶管理員委派帳戶中 EC2 執行個體的描述、啟動、停止和終止許可。這是[允許名單](orgs_manage_policies_scps_evaluation.md#how_scps_allow)的範例，當預設的 `Allow *` 政策***未***連接時非常有用，使得依預設會隱含拒絕許可。若預設的 `Allow *` 政策仍然連接到以下政策所連接的根、OU 或帳戶，則該政策不會有任何作用。

------
#### [ JSON ]

****  

```
{
    "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": "*"
    }
}
```

------

以下範例示範如何將您不要在連接帳戶中使用的服務[加入拒絕清單](orgs_manage_policies_scps_evaluation.md#how_scps_deny)。它會假設預設的 `"Allow *"` SCP 仍連接到所有 OU 和根帳戶。此範例政策可防止連接的帳戶中的帳戶管理員針對 IAM、Amazon EC2 和 Amazon RDS 服務委派任何許可。可以委派來自其他服務的任何動作，只要沒有連接的另一個附加政策拒絕他們。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": [ "iam:*", "ec2:*", "rds:*" ],
        "Resource": "*"
    }
}
```

------

### `NotAction` 元素的範例
<a name="scp-syntax-notaction-example"></a>

下列範例顯示如何使用 `NotAction`元素，從政策的效果中排除 AWS 服務。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "LimitActionsInRegion",
      "Effect": "Deny",
      "NotAction": "iam:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": "us-west-1"
         }
       }
     }
   ]
}
```

------

透過此陳述式，受影響的帳戶僅限於在指定的 中採取動作 AWS 區域，除非在使用 IAM 動作。

## `Condition` 元素
<a name="scp-syntax-condition"></a>

您可以在允許和拒絕 SCP 中的陳述式中指定`Condition`元素。

下列範例示範如何搭配 SCP 中的允許陳述式使用條件元素，以允許特定主體存取 AWS 服務。

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowServicesForSpecificPrincipal",
         "Effect":"Allow",
         "Action":[
            "ec2:*",
            "s3:*",
            "rds:*",
            "lambda:*",
            "cloudformation:*",
            "iam:*",
            "cloudwatch:*"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "aws:PrincipalArn":[
                  "arn:aws:iam::123456789012:role/{{specific-role}}"
               ]
            }
         }
      }
   ]
}
```

下列範例示範如何在 SCP 中使用條件元素搭配拒絕陳述式，以限制存取 `eu-central-1`和 `eu-west-1`區域以外的任何操作，但指定服務中的 動作除外。

------
#### [ JSON ]

****  

```
{
    "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}}"
                    ]
                }
            }
        }
    ]
}
```

------

如需詳細資訊，請參閱*《IAM 使用者指南》*中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

## `Effect` 元素
<a name="scp-syntax-effect"></a>

每個陳述式必須包含一個 `Effect` 元素。此值可以是 `Allow` 或 `Deny`。它會影響任何相同陳述式中列出的動作。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素︰效果](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_effect.html)。

### `"Effect": "Allow"`
<a name="scp-syntax-effect-allow"></a>

以下範例會顯示一個具備陳述式的 SCP，該陳述式中包含了值為 `Allow` 的 `Effect` 元素，允許帳戶使用者執行 Amazon S3 服務的動作。此範例在使用[允許清單策略](orgs_manage_policies_scps_evaluation.md#how_scps_allow)的組織中很有用 (默認 `FullAWSAccess` 政策全部分離，因為這樣就能讓許可按預設隱含獲得拒絕)。結果是，陳述式[允許](orgs_manage_policies_scps_evaluation.md#how_scps_allow)任何連接帳戶的 Amazon S3 許可︰

```
{
    "Statement": {
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "*"
    }
}
```

即使此陳述式使用與 IAM 許可政策相同的 `Allow` 值關鍵字，在 SCP 中，它仍不會實際授予使用者執行任何動作的許可。而 SCP 會充當篩選條件，為組織、組織單位 (OU) 或帳戶中的帳戶指定最大許可。在上述範例中，即使帳戶中的使用者已有連接的 `AdministratorAccess` 受管政策，此 SCP 仍會將受影響帳戶中的***所有***使用者限制為僅能存取 Amazon S3 動作。

### `"Effect": "Deny"`
<a name="scp-syntax-effect-deny"></a>

在 `Effect` 元素的值為 `Deny` 的陳述式中，您也可以將存取限制在特定資源，或是定義決定 SCP 何時生效的條件。

以下顯示範例，示範如何在拒絕陳述式中使用條件金鑰。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "ec2:RunInstances",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotEquals": {
                "ec2:InstanceType": "t2.micro"
            }
        }
    }
}
```

------

此 SCP 中的陳述式會設定一個防撞欄，防止受影響的帳戶 (其中 SCP 已連接到帳戶本身，或是連接到包含帳戶的組織根或 OU) 在 Amazon EC2 執行個體的類型並未設為 `t2.micro` 時啟動 Amazon EC2 執行個體。即使允許此動作的 IAM 政策已連接到帳戶，SCP 建立的防撞欄也會防止該操作。

## `Resource`和 `NotResource` 元素
<a name="scp-syntax-resource"></a>

在 `Effect` 元素的值為 `Allow` 的陳述式中，您只能在 SCP 的 `Resource` 元素內指定 "\*"。您無法指定個別資源的 Amazon 資源名稱 (ARN)。

您可以使用萬用字元，例如星號 (\*) 或問號 (？) 資源元素中的 ：
+ 使用星號 (\*) 作為萬用字元，以比對部分名稱相同的多個動作。
+ 使用問號 (?) 萬用字元來比對單一字元。

在 `Effect` 元素的值為 `Deny` 的陳述式中，您「可以」**指定個別 ARN，如以下範例所示。

------
#### [ JSON ]

****  

```
{    
  "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 角色進行變更。

下列範例顯示如何使用 `NotResource`元素，從政策的效果中排除特定 Amazon Bedrock 模型。

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"Statement1",
         "Effect":"Deny",
         "Action":[
            "bedrock:InvokeModel",
            "bedrock:InvokeModelWithResponseStream"
         ],
         "NotResource":[
            "arn:aws:bedrock:*::foundation-model/{{model-to-permit}}"
         ]
      }
   ]
}
```

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素︰資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)。

## `Statement` 元素
<a name="scp-syntax-statement"></a>

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 使用者指南*中的 [IAM JSON 政策元素︰陳述式](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_statement.html)。

## Statement ID (`Sid`) 元素
<a name="scp-syntax-sid"></a>

`Sid` 是一種您可以為政策陳述式提供的選用識別符。您可以將 `Sid` 值指派給陳述式陣列中的每個陳述式。以下範例 SCP 會顯示範例 `Sid` 陳述式。

```
{
    "Statement": {
        "Sid": "AllowsAllActions",
        "Effect": "Allow",
        "Action": "*",
        "Resource": "*"
    }
}
```

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素︰ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_id.html)。

## `Version` 元素
<a name="scp-syntax-version"></a>

每個 SCP 必須包含具有值 `"2012-10-17"` 的 `Version` 元素。這是與 IAM 許可政策的最新版本相同的版本值。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素︰版本](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_version.html)。

## 不支援的元素
<a name="scp-syntax-unsupported"></a>

SCP 不支援以下元素：
+ `NotPrincipal`
+ `Principal`