

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

# 服務控制政策 (SCP)
<a name="orgs_manage_policies_scps"></a>

服務控制政策 (SCP) 是一種組織政策類型，可用來管理您的組織中的許可。SCPs可讓您集中控制組織中 IAM 使用者和 IAM 角色的最大可用許可。SCPs可協助您確保帳戶符合組織的存取控制準則。SCP 只有在[啟用所有功能](orgs_manage_org_support-all-features.md)的組織中才能使用。若您的組織只啟用了合併帳單功能，便無法使用 SCP。如需啟用 SCP 的說明，請參閱 [啟用政策類型](enable-policy-type.md)。

SCPs不會將許可授予組織中的 IAM 使用者和 IAM 角色。SCP 沒有授予與任何許可。SCP 會針對組織中 IAM 使用者和 IAM 角色可執行的動作，定義許可護欄或設定限制。若要授予許可，管理員必須連接政策來控制存取，例如連接到 IAM 使用者和 IAM 角色的身分型政策，以及連接到您帳戶中資源的資源型政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[身分型政策和資源型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)。

[有效許可](#scp-effects-on-permissions)是 SCP 和資源[控制政策 (RCPs)](orgs_manage_policies_rcps.md) 允許的內容與身分型和資源型政策允許的內容之間的邏輯交集。

**SCPs不會影響管理帳戶中的使用者或角色**  
SCP 不會影響管理帳戶中的使用者或角色。它們只會影響組織中的成員帳戶。這也表示 SCPs適用於指定為委派管理員的成員帳戶。

****本頁主題****
+ [測試 SCP 的效果](#scp-warning-testing-effect)
+ [SCP 的大小上限](#scp-size-limit)
+ [將 SCP 連接至組織中的不同層級](#scp-about-inheritance)
+ [SCP 對許可的影響](#scp-effects-on-permissions)
+ [使用存取資料來改進 SCP](#data-from-iam)
+ [任務和實體不受 SCP 的限制](#not-restricted-by-scp)
+ [SCP 評估](orgs_manage_policies_scps_evaluation.md)
+ [SCP 語法](orgs_manage_policies_scps_syntax.md)
+ [服務控制政策範例](orgs_manage_policies_scps_examples.md)
+ [使用 對服務控制政策 (SCPs進行故障診斷 AWS Organizations](org_troubleshoot_policies.md)

## 測試 SCP 的效果
<a name="scp-warning-testing-effect"></a>

AWS 強烈建議您不要在未徹底測試政策對帳戶的影響的情況下，將 SCPs 連接到組織的根目錄。而是建立一個 OU，讓您一次將一個帳戶 (或至少為少量帳戶) 移至其中，確保您不會不慎將使用者鎖在重要服務之外。判斷服務是否正由帳戶使用的其中一種方法是檢查 [IAM 中上次存取資料的服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html)。另一種方法是[使用 AWS CloudTrail 記錄 API 層級的服務用量](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html)。

**注意**  
您不應移除 **FullAWSAccess** 政策，除非您使用允許的動作對其進行修改或取代為單獨的政策，否則來自成員帳戶的所有 AWS 動作均將失敗。

## SCP 的大小上限
<a name="scp-size-limit"></a>

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

**提示**  
使用視覺化編輯器建置您的 SCP。它會自動移除額外空格。

## 將 SCP 連接至組織中的不同層級
<a name="scp-about-inheritance"></a>

如需 SCP 運作方式的詳細說明，請參閱 [SCP 評估](orgs_manage_policies_scps_evaluation.md)。

## SCP 對許可的影響
<a name="scp-effects-on-permissions"></a>

SCPs類似於 AWS Identity and Access Management 許可政策，並使用幾乎相同的語法。但是，SCP 永遠不會授予許可。反之，SCPs是存取控制，可指定組織中 IAM 使用者和 IAM 角色的最大可用許可。如需詳細資訊，請參閱 *IAM 使用者指南*中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。
+ SCP ***只會影響***由屬於組織一部分的帳戶管理的 IAM 使用者和角色。SCP 不會直接影響資源型政策。也不會影響來自組織外部帳戶的使用者或角色。例如，假設組織中的帳戶 A 擁有一個 Amazon S3 儲存貯體。儲存貯體政策 (資源型政策) 會授予來自組織外部帳戶 B 的使用者存取。帳戶 A 有連接一個 SCP。SCP 不會套用至帳戶 B 中的外部使用者。SCP 僅會套用至組織中帳戶 A 管理的使用者。
+ SCP 會限制 IAM 使用者和成員帳戶中 IAM 使用者和角色的許可，包括成員帳戶的根使用者。任何帳戶只會擁有其上**「每個」****父系允許的許可。如果帳戶上方的任何層級封鎖了許可，無論是隱含 (不包含在 `Allow` 政策陳述式中) 或是明確 (包含在 `Deny` 政策陳述式中)，受影響的帳戶中的使用者或角色都將無法使用該許可，即使帳戶管理員將具備 \$1/\$1 許可的 `AdministratorAccess` IAM 政策連接到使用者也一樣。
+ SCP 僅影響組織中的***成員***帳戶。它們對管理帳戶中的使用者或角色沒有影響。這也表示 SCPs適用於指定為委派管理員的成員帳戶。如需詳細資訊，請參閱[管理帳戶的最佳實務](orgs_best-practices_mgmt-acct.md)。
+ 使用者和角色仍必須使用適當的 IAM 許可政策授予許可。沒有任何 IAM 許可政策的使用者將不具備存取權，即使適用的 SCP 允許所有服務和動作。
+ 如果使用者或角色擁有的 IAM 許可政策，會授予存取適用 SCP 也允許的動作，使用者或角色即可執行該動作。
+ 如果使用者或角色擁有的 IAM 許可政策，會授予存取權給適用的 SCP 不允許或明確拒絕的動作，使用者或角色即無法執行該動作。
+ SCP 會影響連接的帳戶中的所有使用者和角色，***包括根帳戶使用者***。唯一的例外狀況，詳述於 [任務和實體不受 SCP 的限制](#not-restricted-by-scp)。
+ SCP ***不會***影響任何服務連結角色。服務連結角色可讓其他 與 AWS 服務 整合 AWS Organizations ，且不受 SCPs限制。
+ 當您停用根中的 SCP 政策類型時，所有 SCPs都會與該根實體中的所有 AWS Organizations 實體自動分離。 AWS Organizations 實體包括組織單位、組織和帳戶。如果您在根帳戶重新啟用 SCP，該根帳戶只會還原為根帳戶中自動連接到所有實體的預設 `FullAWSAccess` 政策。停用 SCP 之前對 AWS Organizations 實體的任何 SCP 連接都會遺失，並且無法自動復原，雖然您可以手動重新連接他們。
+ 若許可邊界 (進階 IAM 功能) 和 SCP 同時存在，則邊界、SCP 和身分類型政策必須全部允許動作。

## 使用存取資料來改進 SCP
<a name="data-from-iam"></a>

使用管理帳戶登入資料登入時，您可以在 IAM 主控台的 **AWS Organizations**區段中檢視 AWS Organizations 實體或政策[的服務上次存取資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html)。您也可以在 IAM 中使用 AWS Command Line Interface (AWS CLI) 或 AWS API 來擷取服務上次存取的資料。此資料包含帳戶中 IAM 使用者和角色 AWS Organizations 上次嘗試存取哪些允許的服務以及何時存取的資訊。您可以使用此資訊來找出未使用的許可，以便微調您的 SCP，使其更完善地遵循[最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)的原則。

例如，您可能有一個禁止存取三個 的[拒絕清單 SCP](orgs_manage_policies_scps_evaluation.md#how_scps_deny) AWS 服務。未列在 SCP `Deny` 陳述式中的所有服務都可獲允。IAM 中的服務上次存取資料會告訴您 SCP AWS 服務 允許但從未使用過哪些資料。有了該資訊，您可以更新 SCP 以拒絕存取您不需要的服務。

如需詳細資訊，請參閱*《IAM 使用者指南》*中的以下主題：
+ [檢視 Organizations 的 Organizations 服務上次存取資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-view-data-orgs.html)
+ [使用資料來調整組織單位的許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-example-scenarios.html#access_policies_access-advisor-reduce-permissions-orgs) 

## 任務和實體不受 SCP 的限制
<a name="not-restricted-by-scp"></a>

您***無法***使用 SCP 限制下列任務：
+ 管理帳戶執行的任何動作
+ 任何使用連接到服務連結角色之許可所執行的動作
+ 以根帳戶使用者身分註冊企業支援計劃
+ 為 CloudFront 私有內容提供可信簽署者功能
+ 將Amazon Lightsail電子郵件伺服器和 Amazon EC2 執行個體的反向 DNS 設定為根使用者
+ 某些 AWS相關服務的任務：
  + Alexa Top Sites
  + Alexa Web Information Service
  + Amazon Mechanical Turk
  + Amazon 產品行銷 API

# SCP 評估
<a name="orgs_manage_policies_scps_evaluation"></a>

**注意**  
本節中的資訊***不適用於***管理政策類型，包括備份政策、標籤政策、聊天應用程式政策或 AI 服務選擇退出政策。如需詳細資訊，請參閱[理解管理政策繼承](orgs_manage_policies_inheritance_mgmt.md)。

由於可以在 AWS Organizations中連接不同層級的多個服務控制政策 (SCP)，因此理解 SCP 的評估方式可協助您撰寫產生正確結果的 SCP。

**Topics**
+ [SCP 如何使用允許陳述式](#how_scps_allow)
+ [SCP 如何使用拒絕陳述式](#how_scps_deny)
+ [使用 SCP 的策略](#strategy_using_scps)

## SCP 如何使用允許陳述式
<a name="how_scps_allow"></a>

對於為特定帳戶**允許**的許可，每個層級都必須有**明確的 `Allow` 陳述式**，範圍從根目錄到帳戶直接路徑中的每個 OU (包括目標帳戶本身)。因此當您啟用 SCPs 時， 會 AWS Organizations 連接名為 [FullAWSAccess](https://console.aws.amazon.com/organizations/v2/home/policies/service-control-policy/p-FullAWSAccess) 的 AWS 受管 SCP 政策，以允許所有服務和動作。如果移除此政策且未在組織的任何層級取代，則該層級下的所有 OU 和帳戶都會遭到封鎖，無法執行任何動作。

例如，讓我們逐步瀏覽圖 1 和圖 2 中顯示的場景。對於在帳戶 B 中允許的許可或服務，應將允許此許可或服務的 SCP 連接至根、生產 OU 和帳戶 B 本身。

SCP 評估遵循預設拒絕模型，這意味著 SCP 中未明確允許的任何許可都將被拒絕。如果在 SCP 中的任何層級 (例如根目錄、生產 OU 或帳戶 B) 均沒有允許陳述式，則會拒絕存取。

![\[在根、生產 OU 和帳戶 B 附加允許陳述式的組織結構範例\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_allow_1.png)


*圖 1：在根、生產 OU 和帳戶 B 中連接 `Allow` 陳述式的範例組織結構*

![\[生產 OU 缺少允許陳述式及其對帳戶 B 的影響的範例組織結構\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_allow_2.png)


*圖 2：生產 OU 中缺少 `Allow` 陳述式的範例組織結構及其對帳戶 B 的影響*

## SCP 如何使用拒絕陳述式
<a name="how_scps_deny"></a>

對於為特定帳戶**拒絕**的許可，從根目錄到帳戶直接路徑中的每個 OU (包括目標帳戶本身) 的**任何 SCP** 都可以拒絕該許可。

例如，假設有一個 SCP 連接至生產 OU，該 SCP 具有針對特定服務指定的明確 `Deny` 陳述式。剛好有另一個 SCP 連接至根和帳戶 B，其明確允許存取該相同的服務，如圖 3 所示。因此，帳戶 A 和帳戶 B 都會遭到拒絕存取該服務，因為系統會針對所有 OU 和成員帳戶評估連接至組織中任何層級的拒絕政策。

![\[在生產 OU 連接拒絕陳述式及其對帳戶 B 的影響的範例組織結構\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_deny_1.png)


*圖 3：在生產 OU 中連接 `Deny` 陳述式的範例組織結構及其對帳戶 B 的影響*

## 使用 SCP 的策略
<a name="strategy_using_scps"></a>

撰寫 SCPs 時，您可以使用 `Allow`和 `Deny`陳述式的組合，以允許組織中的預期動作和服務。 `Deny`陳述式是實作對組織或 OUs 更廣泛部分應成立限制的強大方式，因為當它們套用到根帳戶或 OU 層級時，它們會影響其下的所有帳戶。

**提示**  
您可以使用 [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 中的[服務上次存取資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html)來更新您的 SCPs，以限制僅存取您需要的 AWS 服務 。如需詳細資訊，請參閱 *IAM 使用者指南*中的[檢視 Organizations 的 Organizations 服務上次存取資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-view-data-orgs.html)。

AWS Organizations 建立 AWS 受管 SCP 時，會將名為 [https://console.aws.amazon.com/organizations/v2/home/policies/service-control-policy/p-FullAWSAccess](https://console.aws.amazon.com/organizations/v2/home/policies/service-control-policy/p-FullAWSAccess) 的受管 SCP 連接到每個根目錄、OU 和帳戶。此政策會允許所有服務和動作。您可以使用僅允許一組服務的政策取代 **FullAWSAccess**，因此 AWS 服務 除非更新 SCPs 明確允許新服務，否則不允許新服務。例如，如果您的組織只想要允許在環境中使用服務子集，可以使用 `Allow` 陳述式來僅允許特定的服務。您可以選擇在根層級或每個層級取代 **FullAWSAccess**。如果您在根目錄連接服務特定的允許清單 SCP，它會自動套用至其下的所有 OUs 和帳戶，這表示單一根層級政策會決定整個組織的有效服務允許清單，如案例 7 所示。或者，您可以在每個 OU 和帳戶移除和取代 **FullAWSAccess**，讓您可以實作組織單位或個別帳戶之間相異的更精細服務允許清單。

 注意：僅依賴允許陳述式和隱deny-by-default模型可能會導致意外存取，因為更廣泛的或重疊允許陳述式可能會覆寫更嚴格的陳述式。

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

****  

```
{
"Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:*",
                "cloudwatch:*",
                "organizations:*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

結合這兩種陳述式的政策可能如以下範例所示，其中會阻止成員帳戶離開組織並允許使用所需的 AWS 服務。組織管理員可以分離 **FullAWSAccess** 政策，並改為連接此政策。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:*",
                "cloudwatch:*",
                "organizations:*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny", 
            "Action":"organizations:LeaveOrganization",
            "Resource": "*" 
        }
    ]
}
```

------

若要示範如何在 組織中套用多個服務控制政策 AWS (SCPs)，請考慮下列組織結構和案例。

### 案例 1：拒絕政策的影響
<a name="scp_scenario_1"></a>

此案例示範組織中更高層級的拒絕政策如何影響以下所有帳戶。當沙盒 OU 同時具有「完整 AWS 存取」和「拒絕 S3 存取」政策，而帳戶 B 具有「拒絕 EC2 存取」政策時，結果是帳戶 B 無法存取 S3 （來自 OU 層級拒絕） 和 EC2 （來自其帳戶層級拒絕）。帳戶 A 沒有 S3 存取權 （來自 OU 層級拒絕）。

![\[案例 1：拒絕政策的影響\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_scenario_1.png)


### 案例 2：允許政策必須存在於每個層級
<a name="scp_scenario_2"></a>

此案例顯示允許政策如何在 SCPs中運作。若要存取服務，從根目錄到帳戶的每個層級都必須有明確的允許。在這裡，由於沙盒 OU 具有「允許 EC2 存取」政策，只明確允許 EC2 服務存取，因此帳戶 A 和 B 將只具有 EC2 存取。

![\[案例 2：允許政策必須存在於每個層級\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_scenario_2.png)


### 案例 3：在根層級缺少允許陳述式的影響
<a name="scp_scenario_3"></a>

在 SCP 根層級缺少「允許」陳述式是一種嚴重的錯誤設定，可有效封鎖組織中所有成員帳戶對 AWS 服務和動作的所有存取。

![\[案例 3：在根層級缺少允許陳述式的影響\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_scenario_3.png)


### 案例 4：分層拒絕陳述式和產生的許可
<a name="scp_scenario_4"></a>

此案例示範兩層深度 OU 結構。根和工作負載 OU 都具有「完整 AWS 存取」，測試 OU 具有「拒絕 EC2 AWS 存取」的「完整存取」，而生產 OU 具有「完整 AWS 存取」。因此，帳戶 D 具有 EC2 以外的所有服務存取權，帳戶 E 和 F 具有所有服務存取權。

![\[案例 4：分層拒絕陳述式和產生的許可\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_scenario_4.png)


### 案例 5：允許 OU 層級的政策限制服務存取
<a name="scp_scenario_5"></a>

此案例說明如何使用允許政策來限制對特定 服務的存取。測試 OU 具有「允許 EC2 存取」政策，這表示帳戶 D 只允許 EC2 服務。生產 OU 維護「完整 AWS 存取」，因此帳戶 E 和 F 可以存取所有服務。這示範如何在 OU 層級實作更嚴格的允許政策，同時在根層級維持更廣泛的允許。

![\[案例 5：允許 OU 層級的政策限制服務存取\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_scenario_5.png)


### 案例 6：根層級拒絕會影響所有帳戶，無論較低層級允許
<a name="scp_scenario_6"></a>

此案例顯示根層級的拒絕政策會影響組織中的所有帳戶，無論較低層級的允許政策為何。根目錄同時具有「完整 AWS 存取」和「拒絕 S3 存取」政策。即使測試 OU 具有「允許 S3 存取」政策，以根層級 S3 拒絕為優先。帳戶 D 沒有服務存取權，因為測試 OU 只允許 S3 存取，但在根層級拒絕 S3。帳戶 E 和 F 可以存取 S3 以外的其他服務，因為根層級明確拒絕。

![\[案例 6：根層級拒絕會影響所有帳戶，無論較低層級允許\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_scenario_6.png)


### 案例 7：根層級自訂允許政策限制 OU 層級存取
<a name="scp_scenario_7"></a>

此案例示範在 的根層級套用時，具有明確服務的 SCPs 如何允許清單函數 AWS Organizations。在組織根層級，會連接兩個自訂的「服務允許」 SCPs，以明確允許存取一組有限的 AWS 服務：SCP\$11 允許 IAM 和 Amazon EC2，SCP\$12 允許 Amazon S3 和 Amazon CloudWatch。在組織單位 (OU) 層級，預設的 FullAWSAccess 政策會保持連接。不過，由於交集行為，這些 OUs 下的帳戶 A 和 B 只能存取根層級 SCP 明確允許的服務。以更嚴格的根政策為優先，有效地限制僅 IAM、EC2, S3 和 CloudWatch 服務的存取，無論在較低的組織層級授予更廣泛的許可。

![\[案例 7：根層級自訂允許政策限制 OU 層級存取\]](http://docs.aws.amazon.com/zh_tw/organizations/latest/userguide/images/scp_scenario_7.png)


# 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 中使用萬用字元，例如星號 (\$1) 或問號 (?)：
+ 使用星號 (\$1) 作為萬用字元，以比對部分名稱相同的多個動作。值 `"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` 元素內指定 "\$1"。您無法指定個別資源的 Amazon 資源名稱 (ARN)。

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

在 `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`

# 服務控制政策範例
<a name="orgs_manage_policies_scps_examples"></a>

本主題中顯示的範例[服務控制政策 (SCP)](orgs_manage_policies_scps.md) 僅供參考。

**使用這些範例之前**  
在組織中使用這些範例 SCPs之前，請考慮下列事項：  
[服務控制政策 (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) 旨在用作粗粒護欄，它們不會直接授予存取權。管理員仍然必須將[身分型或資源型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)連接到帳戶中的 IAM 主體或資源，以實際授予許可。有效許可是服務控制政策/資源控制政策與身分政策或服務控制政策/資源控制政策與資源政策之間的邏輯交集。您可以在[此處](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html#scp-effects-on-permissions)取得有關 SCP 對許可影響的詳細資訊。
[服務控制政策 (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) 連接至組織時，組織單位或帳戶會提供對組織、組織單位或帳戶中所有帳戶可用許可上限的中央控制。由於 SCP 可在組織中的多個層級套用，因此了解 [SCPs 的評估](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_evaluation.html)方式可協助您撰寫產生正確結果SCPs。
此儲存庫中的服務控制政策會顯示為範例。在未徹底測試政策對帳戶的影響之前，您不應連接 SCPs。準備好要實作的政策後，建議您在可代表生產環境的個別組織或 OU 中進行測試。測試完成後，您應該將變更部署到更具體OUs，然後隨著時間慢慢地將變更部署到更廣泛的 OUs。
此儲存庫中的 SCP 範例使用[拒絕清單策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_evaluation.html#strategy_using_scps)，這表示您也需要 [FullAWSAccess](https://console.aws.amazon.com/organizations/?#/policies/p-FullAWSAccess) 政策或其他政策，以允許連接到組織實體的存取以允許 動作。您仍然需要使用身分型或資源型政策，將適當的許可授予委託人。

**提示**  
您可以使用 [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 中的[服務上次存取資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor.html)來更新您的 SCPs，以限制僅存取您需要的 AWS 服務 。如需詳細資訊，請參閱 *IAM 使用者指南*中的[檢視 Organizations 的 Organizations 服務上次存取資料](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_access-advisor-view-data-orgs.html)。

## GitHub 儲存庫
<a name="scp-github-repositories"></a>
+ [服務控制政策範例](https://github.com/aws-samples/service-control-policy-examples) - 此 GitHub 儲存庫包含開始使用或使 AWS SCPs 用量成熟的範例政策

# 使用 對服務控制政策 (SCPs進行故障診斷 AWS Organizations
<a name="org_troubleshoot_policies"></a>

使用此處的資訊來協助您診斷和修正服務控制政策 (SCPs中常見的錯誤。

中的服務控制政策 (SCPs) AWS Organizations 類似於 IAM 政策，並共用常見的語法。此語法的開頭為 [JavaScript 物件標記法](http://www.json.org) (JSON) 規則。JSON 描述*物件*，其具有的名稱和值組會構成物件。[IAM 政策文法](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-grammar.html)以該文法為基礎，定義哪些名稱和值具有意義，並由使用政策授予許可 AWS 服務 的 了解。

AWS Organizations 使用 IAM 語法和文法的子集。如需詳細資訊，請參閱[SCP 語法](orgs_manage_policies_scps_syntax.md)。

**Topics**
+ [多個政策物件](#morethanonepolicyblock)
+ [多個陳述式元素](#morethanonestatement)
+ [政策文件大小超過上限](#scptoolong)

## 多個政策物件
<a name="morethanonepolicyblock"></a>

一個 SCP 必須僅包含一個 JSON 物件。可在兩旁放置 \$1 \$1 括弧來表示物件。雖然您可以在外側括弧對中嵌入額外的 \$1 \$1 括弧以在 JSON 物件中巢套其他物件，但是一個政策只能包含一個最外層的 \$1 \$1 括弧對。以下範例***不正確***，因為它在最上層包含兩個物件 (以*紅色*標示)：

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

****  

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

------

不過，您可以使用正確的政策語法來達成前述範例的意圖。可以將兩個資料塊合併到單個 `Statement` 元素中，而非包含兩個各自擁有 `Statement` 元素的完整政策物件。`Statement` 元素將兩個物件組成的陣列作為其值，如以下範例所示：

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

此範例無法進一步的壓縮到具有一個元素的 `Statement`，因為這兩個元素有不同的效果。一般而言，只有在每個陳述式中的 `Effect` 和 `Resource` 元素完全相同時，您才可以結合陳述式。

## 多個陳述式元素
<a name="morethanonestatement"></a>

此錯誤可能會先以上一章節中錯誤的變異顯示。但是，它在語法上是不同類型的錯誤。在以下範例中，頂層只有一個政策物件，由單一 \$1 \$1 括弧組表示。但是，該物件包含兩個 `Statement` 元素。

一個 SCP 只能包含一個 `Statement` 元素，名稱 (`Statement`) 在冒號左側，它的值在冒號右側。`Statement` 元素的值必須是物件，以 \$1 \$1 括弧表示，其中包含一個 `Effect` 元素、一個 `Action` 元素和一個 `Resource` 元素。以下範例***不正確***，因為在政策物件中包含兩個 `Statement` 元素：

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

****  

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

------

由於值物件可以是多個值物件的陣列，您可以將兩個 `Statement` 元素結合到具有物件陣列的一個元素來解決這個問題，如以下範例所示：

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

****  

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

------

`Statement` 元素的值是一種物件陣列。此範例中的陣列包含兩個物件，每個物件是 `Statement` 元素的正確值。陣列中的每個物件之間用逗號隔開。

## 政策文件大小超過上限
<a name="scptoolong"></a>

SCP 文件的大小上限是 5,120 個字元。此大小上限包括所有字元 (包含空格)。若要減少 SCP 的大小，您可以移除引號外部的所有空格字元 (例如空格和換行字元)。

**注意**  
如果您使用 儲存政策 AWS 管理主控台，則 JSON 元素與引號外部之間的額外空格會移除且不計算在內。如果您使用 SDK 操作或 儲存政策 AWS CLI，則政策會完全按照您提供的方式儲存，而不會自動移除字元。