

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

# 使用 IAM 政策控制存取
<a name="id_roles_providers_outbound_policies"></a>

IAM 提供多種政策類型，以控制對傳出聯合身分功能的存取。您可以使用[身分型政策](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) SCPs) 可讓您對 Organizations 中的所有帳戶強制執行 AWS 整個組織的字符產生限制。[資源控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) RCPs) 控制資源層級的存取。您也可以使用 [VPC 端點政策](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)來限制哪些主體可以透過 VPC 端點存取 API，將 AWS STS `GetWebIdentityToken`網路層級控制新增至您的安全狀態。本節說明如何使用這些政策類型和條件索引鍵實作精細存取控制。

若要請求身分字符，IAM 主體必須具有 `sts:GetWebIdentityToken`許可。透過連接至 IAM 使用者或角色的身分政策授予此許可。若要允許標籤 （金鑰、值對） 傳遞給 GetWebIdentityToken 呼叫，IAM 主體必須具有 `sts:TagGetWebIdentityToken`許可。
+ 使用 [sts：IdentityTokenAudience](reference_policies_iam-condition-keys.md#ck_identitytokenaudience) 條件金鑰來限制哪些外部服務可以接收字符。
+ 使用 [sts：DurationSeconds](reference_policies_iam-condition-keys.md#ck_durationseconds) 條件金鑰來強制執行字符生命週期上限。
+ 使用 [sts：SigningAlgorithm](reference_policies_iam-condition-keys.md#ck_signingalgorithm) 條件金鑰來要求特定的密碼編譯演算法。
+ 使用 [aws：RequestTag](reference_policies_condition-keys.md#condition-keys-requesttag) 條件金鑰，將請求中傳遞的標籤鍵值對與您在政策中指定的標籤對進行比較。
+ 使用 [aws：TagKeys](reference_policies_condition-keys.md#condition-keys-tagkeys) 條件索引鍵，將請求中的標籤索引鍵與您在政策中指定的索引鍵進行比較。

請參閱 [IAM 和 AWS STS](reference_policies_iam-condition-keys.md) 條件金鑰，進一步了解 IAM 政策中可用的條件金鑰。

此範例身分政策結合了多個條件索引鍵：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowTokenGenerationWithRestrictions",
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringEquals": {
                    "sts:IdentityTokenAudience": [
                        "https://api1.example.com",
                        "https://api2.example.com"
                    ]
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                },
                "StringEquals": {
                    "sts:SigningAlgorithm": "ES384"
                }
            }
        }
    ]
}
```

## 最佳實務
<a name="outbound-best-practices"></a>

遵循這些建議，將 AWS 您的身分安全地聯合到外部 服務。
+ **使用較短的字符生命週期：**請求具有最短生命週期的字符，以符合您的操作需求。
+ **使用 IAM 政策實作最低權限存取並限制權杖屬性：**僅將 `sts:GetWebIdentityToken`許可授予需要它的 IAM 主體。視需要使用條件索引鍵來指定簽署演算法、允許的權杖對象和權杖生命週期上限。
+ **驗證外部服務中的宣告：**為了安全起見，請一律驗證相關宣告，例如主旨 ("sub")、受眾 ("aud") 等，以確保符合您預期的值。盡可能驗證自訂宣告，以在外部服務中啟用精細的授權決策。