

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

# 轉送存取工作階段
<a name="access_forward_access_sessions"></a>

轉送存取工作階段 (FAS) 是一種 AWS IAM 技術，服務會在 AWS 服務代表您提出請求時，用來傳遞您的身分、許可和工作階段屬性。FAS 使用呼叫 AWS 服務的身分許可，結合 AWS 服務的身分，向下游服務提出請求。FAS 請求只有在服務收到需要與其他 AWS 服務或資源互動才能完成的請求後，才會代表 IAM 主體對 AWS 服務提出。發出 FAS 請求時：
+ 從 IAM 主體接收初始請求的服務會檢查 IAM 主體的許可。
+ 接收後續 FAS 請求的服務也會檢查相同 IAM 主體的許可。

例如，當 [SSE-KMS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) 用於加密物件時，Amazon S3 會使用 FAS 呼叫 來 AWS Key Management Service 解密物件。下載 SSE-KMS 加密物件時，名為**資料讀取器**的角色會針對 Amazon S3 呼叫物件上的 GetObject，而不會 AWS KMS 直接呼叫 。收到 GetObject 請求並授權資料讀取器後，Amazon S3 會向 發出 FAS 請求， AWS KMS 以解密 Amazon S3 物件。當 KMS 收到 FAS 請求時，其會檢查角色的許可，並且只有在 data-reader 具有 KMS 金鑰的正確許可時才授權解密請求。對 Amazon S3 和 的請求會使用角色的許可進行 AWS KMS 授權，而且只有在資料讀取器同時具有 Amazon S3 物件和 AWS KMS 金鑰的許可時，才會成功。

![\[IAM 角色作為主體傳遞至 Amazon S3，然後傳遞至 AWS KMS的流程圖。\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/access-fas-example.png)


**注意**  
收到 FAS 請求的服務可以發出其他 FAS 請求。在這種情況下，請求主體必須具有 FAS 呼叫之所有服務的許可。

## FAS 請求和 IAM 政策條件
<a name="access_fas_policy_conditions"></a>

發出 FAS 請求時，[aws:CalledVia](reference_policies_condition-keys.md#condition-keys-calledvia)、[aws:CalledViaFirst](reference_policies_condition-keys.md#condition-keys-calledviafirst) 和 [aws:CalledViaLast](reference_policies_condition-keys.md#condition-keys-calledvialast) 條件索引鍵會填入啟動 FAS 呼叫之服務的服務主體。每當發出 FAS 請求時，都會將 [aws:ViaAWSService](reference_policies_condition-keys.md#condition-keys-viaawsservice) 條件索引鍵值設定為 `true`。在下圖中，直接向 CloudFormation 發出的請求沒有設定任何 `aws:CalledVia` 或 `aws:ViaAWSService` 條件索引鍵。當 CloudFormation 和 DynamoDB 代表角色發出下游 FAS 請求時，便會填入這些條件索引鍵的值。

![\[將 IAM 角色作為主體傳遞至 CloudFormation，然後將條件索引鍵值傳遞至 DynamoDB 和 AWS KMS的流程圖。\]](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/access-fas-example2.png)


若要允許發出 FAS 請求，以免遭具有測試來源 IP 地址或來源 VPC 之條件索引鍵的拒絕政策陳述式拒絕，您必須在您的拒絕政策中使用條件索引鍵，為 FAS 請求提供例外狀況。這可以透過使用 `aws:ViaAWSService` 條件索引鍵，為所有 FAS 請求完成此操作。若要僅允許特定 AWS 服務提出 FAS 請求，請使用 `aws:CalledVia`。

**重要**  
當透過 VPC 端點發出初始請求後發出 FAS 請求時，不會在 FAS 請求中使用來自初始請求中 `aws:SourceVpce`、`aws:SourceVpc` 和 `aws:VpcSourceIp` 的條件索引鍵值。當寫入政策使用 `aws:VpcSourceIp` 或 `aws:SourceVpce` 有條件地授予存取權時，您也必須使用 `aws:ViaAWSService` 或 `aws:CalledVia` 以允許 FAS 請求。當公有 AWS 服務端點收到初始請求後提出 FAS 請求時，後續的 FAS 請求將使用相同的`aws:SourceIP`條件索引鍵值提出。

## 範例：允許從 VPC 或使用 FAS 存取 Amazon S3
<a name="access_fas_example"></a>

在以下 IAM 政策範例中，只有當 Amazon S3 GetObject 和 Athena 請求來自連接至 *example\$1vpc* 的 VPC 端點，或者請求是 Athena 發出的 FAS 請求時，才允許這些請求。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "OnlyAllowMyIPs",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject*",
        "athena:StartQueryExecution",
        "athena:GetQueryResults",
        "athena:GetWorkGroup",
        "athena:StopQueryExecution",
        "athena:GetQueryExecution"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceVPC": [
          "vpc-111bbb22"
          ]
        }
      }
    },
    {
      "Sid": "OnlyAllowFAS",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject*"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": "athena.amazonaws.com"
        }
      }
    }
  ]
}
```

------

如需使用條件索引鍵允許 FAS 存取的其他範例，請參閱 [data perimeter 範例政策儲存庫](https://github.com/aws-samples/data-perimeter-policy-examples)。