

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

# `AWSSupport-TroubleshootSAMLIssues`
<a name="awssupport-troubleshootsamlissues"></a>

 **Description** 

 **AWSSupport-TroubleshootSAMLIssues ** 自動化 Runbook 透過分析存放在 Amazon Simple Storage Service (Amazon S3) 中的 SAML 回應檔案，協助診斷安全性聲明標記語言 (SAML) 相關問題。它執行全面的驗證，包括結構描述驗證、簽章驗證、受眾限制檢查和過期時間驗證。Runbook 會從 SAML 回應解碼和擷取主要 SAML 元素，包括發行者、聲明、主旨、條件、簽章和屬性。對於使用 SAML 透過 IAM Identity Provider 存取 AWS 資源 （例如 Amazon Connect 或 Amazon WorkSpaces 應用程式） 的環境，它會驗證 SAML 回應簽章中的憑證是否符合 IAM Identity Provider 中設定的憑證。

 **如何運作？** 

 Runbook 會執行下列步驟：
+ 驗證 SAML 回應格式和必要的元素。
+ 解碼和擷取 SAML 回應元件 （發行者、聲明、主旨、條件、簽章、屬性）。
+ 提供時，根據 IAM Identity Provider 憑證驗證數位簽章。
+ 檢查受眾限制和時間有效性。
+ 提供詳細的診斷資訊，顯示剖析的 SAML 結構和驗證結果。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootSAMLIssues) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

/

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `s3:GetBucketLocation`
+ `s3:ListBucket`
+ `s3:GetBucketPublicAccessBlock`
+ `s3:GetAccountPublicAccessBlock`
+ `s3:GetObject`
+ `s3:GetBucketPolicyStatus`
+ `s3:GetEncryptionConfiguration`
+ `s3:GetBucketOwnershipControls`
+ `s3:GetBucketAcl`
+ `s3:GetBucketPolicy`
+ `s3:PutObject`
+ `iam:GetSAMLProvider`
+ `sts:AssumeRole`

範例政策：

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

****  

```
        {
            "Version":"2012-10-17",		 	 	 
            "Statement": [
                {
                    "Action": [
                        "s3:GetBucketLocation",
                        "s3:ListBucket",
                        "s3:GetBucketPublicAccessBlock",
                        "s3:GetAccountPublicAccessBlock",
                        "s3:GetObject",
                        "s3:GetBucketPolicyStatus",
                        "s3:GetEncryptionConfiguration",
                        "s3:GetBucketOwnershipControls",
                        "s3:GetBucketAcl",
                        "s3:GetBucketPolicy",
                        "s3:PutObject",
                        "iam:GetSAMLProvider",
                        "sts:AssumeRole"
                    ],
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }
```

------

 **指示** 

請依照下列步驟設定自動化：

1. 使用此 Runbook 之前，您需要擷取 Base64-encoded的 SAML 回應 (txt 檔案），並將其存放在 S3 儲存貯體中。您可以在[本文件](https://docs.aws.amazon.com//IAM/latest/UserGuide/troubleshoot_saml_view-saml-response.html)中找到擷取 SAML 回應的說明

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootSAMLIssues/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootSAMLIssues/description)中導覽至 。

1. 選擇 **Execute automation** (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （選用）：**
     + 描述：（選用） 允許 SSM Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
     + 類型：`AWS::IAM::Role::Arn`
   + **InputFileS3URI （必要）：**
     + 描述：（必要） SAML 回應 txt 檔案的 Amazon Simple Storage Service (Amazon S3) URI （例如 s3：//bucket-name/path/to/file.txt)。
     + 類型：字串
     + 允許模式： `^s3://[a-z0-9][a-z0-9.-][a-z0-9](/.)?$`
   + **S3OutputPrefix （選用）：**
     + 描述：（選用） 分析輸出檔案存放在輸入儲存貯體中，名稱為 Runbook>.json' 的 'saml\$1analysis\$1<executionID。如果您想要輸出具有特定字首的檔案，您可以使用此參數。預設值為 "output/"，在此情況下，輸出結果的檔案 URI 將為 Runbook>.json' 的 's3：//bucket-name/output/saml\$1analysis\$1<executionID。
     + 類型：字串
     + 允許模式： `^[a-zA-Z0-9+=,.@\\-_/]*/$`
   + **ExpectedAudience （選用）：**
     + 描述：（選用） SAML 回應中的預期對象值。如果未指定，我們使用 `urn:amazon:webservices`。如果您已在 IdP 和 SP 設定中設定特定對象值，請提供確切的格式 `urn:amazon:webservices`（例如，、`https://signin.aws.amazon.com/saml`)。
     + 類型：字串
     + 預設：urn：amazon：webservices
   + **IamIdProviderArn （選用）：**
     + 描述：（選用） 如果您使用 IAM ID 提供者實體直接將您的 IdP 與 IAM AWS 連結，請提供其 ARN （例如 `arn:aws:iam::<account-id>:saml-provider/<provider-name>`)。
     + 類型：字串
     + 允許模式： `^$|^arn:aws:iam::[0-9]{12}:saml-provider/[a-zA-Z0-9_-]+$`
   + **SAMLAuthenticationTime （選用）：**
     + 描述：（選用） 執行 SAML 身分驗證的日期和時間。時區必須是 UTC。必須為 YYYY-MM-DDThh：mm：ss 格式 （例如 2025-02-01T10：00：00)。如果未提供此參數，則會針對目前的時間戳記執行過期檢查。
     + 類型：字串
     + 允許模式： `^$|^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$`
   + **S3BucketOwnerRoleArn （選用）：**
     + 描述：（選用） 存取 Amazon S3 儲存貯體的 IAM 角色 ARN。IAM 角色的 ARN，具有取得 Amazon S3 儲存貯體和帳戶區塊公開存取設定、儲存貯體加密組態、儲存貯體 ACLs、儲存貯體政策狀態，以及將物件上傳至儲存貯體的許可。如果未指定此參數，則 Runbook 會使用 `AutomationAssumeRole` （如果指定） 或啟動此 Runbook 的使用者 （如果未指定 `AutomationAssumeRole`)。
     + 類型：`AWS::IAM::Role::Arn`

1. 選取**執行**。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **ValidateIAMIDProvider**

     透過檢查提供的 IAM ID 提供者 ARN 是否存在並可存取，來驗證它。如果未提供 ARN，則會略過驗證並成功完成步驟。
   + **CheckS3BucketPublicStatus**

     檢查 Amazon S3 儲存貯體是否允許匿名或公有讀取或寫入存取許可。如果儲存貯體允許這些許可，自動化會在此步驟中停止。
   + **CheckS3ObjectExistence**

     驗證對 Amazon S3 儲存貯體的存取。檢查儲存貯體和物件是否存在，以及自動化是否具有從來源讀取和寫入目的地的必要許可。
   + **AnalyzeSAMLResponse**

     透過執行檢查 （結構描述驗證、簽章驗證、對象驗證、過期檢查） 來分析 SAML 回應檔案。產生詳細的 JSON 報告，並將其儲存至指定的 Amazon S3 位置。

1. 完成後，請檢閱**輸出**區段以取得執行的詳細結果：
   + **輸出**區段包含描述分析結果之 Amazon S3 物件的相關資訊。

1. 分析結果中的 Amazon S3 物件是包含下列資訊的 Json 檔案：
   + **validation\$1result**：包含 SAML 回應的基本驗證結果。
     + **saml\$1info**：重要 SAML 資訊，包括發行者、簽章和聲明。
     + **schema\$1validation**：SAML 結構描述驗證的結果。
   + **verification\$1result**： 提供更詳細的診斷結果。
     + **簽章**：簽章驗證的結果。
     + **對象**：對象限制驗證的結果。
     + **過期**：過期時間驗證的結果。

 **參考** 

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootSAMLIssues)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程登陸頁面](https://aws.amazon.com/premiumsupport/technology/saw/)