

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

# 跨帳戶政策評估邏輯
<a name="reference_policies_evaluation-logic-cross-account"></a>

您可以允許一個帳戶中的主體存取第二個帳戶中的資源。這稱為跨帳戶存取。當您允許跨帳戶存取時，主體所在的帳戶稱為*受信任*帳戶。資源所在的帳戶是*信任*帳戶。

若要允許跨帳戶存取，請將以資源為基礎的政策連接至您要共用的資源。您也必須將身分型政策連接至在請求中扮演主體的身分。信任帳戶中的資源型政策，必須指定具有資源存取權的受信任帳戶主體。您可以指定整個帳戶或其 IAM 使用者、 AWS STS 聯合身分使用者主體、IAM 角色或擔任角色的工作階段。您也可以將 AWS 服務指定為委託人。如需詳細資訊，請參閱[如何指定主體](reference_policies_elements_principal.md#Principal_specifying)。

主體的以身分為基礎的政策，必須允許要求存取信任服務中的資源。可以指定資源的 ARN 來執行此操作。

在 IAM 中，您可以將以資源為基礎的政策連接至 IAM 角色，以允許其他帳戶中的主體擔任該角色。角色的以資源為基礎的政策稱為角色信任政策。擔任該角色之後，允許的主體可以使用產生的臨時憑證，以存取您帳戶中的多個資源。此存取是在角色的以身分為基礎的許可政策中定義。若要了解使用角色允許跨帳戶存取，與使用其他以資源為基礎的政策允許跨帳戶存取有何不同，請參閱 [IAM 中的跨帳戶資源存取](access_policies-cross-account-resource-access.md)。

**重要**  
其他服務會影響政策評估邏輯。例如， AWS Organizations 支援可套用至一或多個帳戶中主體和資源[的服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)[和資源控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。 AWS Resource Access Manager 支援政策片段，以控制允許主體對與其共用的資源執行哪些動作。 [https://docs.aws.amazon.com/ram/latest/userguide/permissions.html](https://docs.aws.amazon.com/ram/latest/userguide/permissions.html)

## 決定是否允許跨帳戶請求
<a name="policy-eval-cross-account"></a>

對於跨帳戶請求，受信任 `AccountA` 中的請求者必須具有以身分為基礎的政策。該政策必須允許他們對信任 `AccountB` 中的資源提出請求。此外，`AccountB` 中以資源為基礎的政策，必須允許 `AccountA` 中的請求者存取資源。

當您提出跨帳戶請求時， 會 AWS 執行兩項評估。 會 AWS 評估信任帳戶和信任帳戶中的請求。如需有關如何在單一帳戶內評估請求的詳細資訊，請參閱 [AWS 強制執行程式碼邏輯如何評估允許或拒絕存取的請求](reference_policies_evaluation-logic_policy-eval-denyallow.md)。只有當兩項評估都傳回 `Allow` 決定時，才允許此請求。

![\[跨帳戶評估\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policy_cross-account-eval-simple.png)


1. 當一個帳戶中的主體請求存取另一個帳戶中的資源時，就稱為跨帳戶請求。

1. 提出請求的主體存在於受信任帳戶中 (`AccountA`)。 AWS 評估此帳戶時會檢查以身分為基礎的政策，以及可限制以身分為基礎的政策的任何政策。如需詳細資訊，請參閱[搭配許可界限來評估以身分為基礎的政策](reference_policies_evaluation-logic.md#policy-eval-basics-id-bound)。

1. 所請求的資源存在於信任帳戶中 (`AccountB`)。 AWS 評估此帳戶時會檢查連接至所請求資源的以資源為基礎的政策，以及可限制以資源為基礎的政策的任何政策。如需詳細資訊，請參閱[搭配以資源為基礎的政策來評估以身分為基礎的政策](reference_policies_evaluation-logic.md#policy-eval-basics-id-rdp)。

1. AWS 只有在兩個帳戶政策評估都允許請求時， 才會允許請求。

下列流程圖更詳細地說明如何針對跨帳戶請求作出政策評估決策。同樣地，只有在兩個帳戶政策評估都 AWS 允許請求時， 才會允許請求。

![\[詳細的跨帳戶政策評估\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/PolicyEvaluationCrossAccount.png)


## 跨帳戶政策評估範例
<a name="policies_evaluation_example-cross-account"></a>

下列範例示範一個帳戶中的角色由第二個帳戶中資源型政策授予許可的案例。

假設 Carlos 是開發人員，而且他在帳戶 111111111111 中是名為 `Demo` 的 IAM 角色。他想將檔案儲存至帳戶 222222222222 中的 `amzn-s3-demo-bucket-production-logs` Amazon S3 儲存貯體。

另外，也假設以下政策已連接到 `Demo` IAM 角色。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowS3ListRead",
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*"
        },
        {
            "Sid": "AllowS3ProductionObjectActions",
            "Effect": "Allow",
            "Action": "s3:*Object*",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*"
        },
        {
            "Sid": "DenyS3Logs",
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::*log*",
                "arn:aws:s3:::*log*/*"
            ]
        }
    ]
}
```

------

此政策中的 `AllowS3ListRead` 陳述式允許 Carlos 檢視 Amazon S3 中所有儲存貯體的清單。`AllowS3ProductionObjectActions` 陳述式允許 Carlos 完整存取 `amzn-s3-demo-bucket-production` 儲存貯體中的物件。

此外，以下以資源為基礎的政策 (稱為儲存貯體政策) 已連接至帳戶 222222222222 中的 `amzn-s3-demo-bucket-production` 儲存貯體。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject*",
                "s3:PutObject*",
                "s3:ReplicateObject",
                "s3:RestoreObject"
            ],
            "Principal": { "AWS": "arn:aws:iam::111111111111:role/Demo" },
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-production/*"
        }
    ]
}
```

------

此政策允許 `Demo` 角色存取 `amzn-s3-demo-bucket-production` 儲存貯體中的物件。角色可建立與編輯儲存貯體中的物件，但不能刪除。角色無法管理儲存貯體本身。

當 Carlos 提出將檔案儲存至儲存`amzn-s3-demo-bucket-production-logs`貯體的請求時， AWS 會決定哪些政策適用於請求。在此情況下，連接至 `Demo` 角色的身分型政策是帳戶 `111111111111` 中唯一套用的政策。在帳戶 `222222222222` 中，沒有任何以資源為基礎的政策連接至 `amzn-s3-demo-bucket-production-logs` 儲存貯體。當 AWS 評估帳戶 時`111111111111`，會傳回 的決策`Deny`。這是因為以身分為基礎的政策中的 `DenyS3Logs` 陳述式，明確拒絕存取任何日誌儲存貯體。如需有關如何在單一帳戶內評估請求的詳細資訊，請參閱 [AWS 強制執行程式碼邏輯如何評估允許或拒絕存取的請求](reference_policies_evaluation-logic_policy-eval-denyallow.md)。

因為其中一個帳戶內明確拒絕請求，所以最終決定是拒絕請求。

![\[針對 amzn-s3-demo-bucket-production-logs 儲存貯體的請求\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policy_cross-account-eval-example.png)


假設 Carlos 接著發現他的錯誤，並嘗試將檔案儲存至 `Production`儲存貯體。 AWS 首先 會檢查帳戶`111111111111`，以判斷是否允許請求。只有身分型政策適用，且允許 request. AWS then 檢查帳戶 `222222222222`。只有連接至 `Production` 儲存貯體的以資源為基礎的政策才會套用，並允許請求。因為這兩個帳戶都允許請求，所以最終決定是允許請求。

![\[對 Production 儲存貯體的請求\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/policy_cross-account-eval-example-correct.png)
