View a markdown version of this page

AWSSupport-TroubleshootSAMLIssues - AWS Systems Manager Automation Runbook 參考

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

AWSSupport-TroubleshootSAMLIssues

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 結構和驗證結果。

執行此自動化 (主控台)

文件類型

 自動化

擁有者

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 儲存貯體中。您可以在本文件中找到擷取 SAML 回應的說明

  2. 在文件下的 Systems Manager AWSSupport-TroubleshootSAMLIssues中導覽至 。

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

  4. 針對輸入參數,輸入下列內容:

    • 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_analysis_<executionID。如果您想要輸出具有特定字首的檔案,您可以使用此參數。預設值為 "output/",在此情況下,輸出結果的檔案 URI 將為 Runbook>.json' 的 's3://bucket-name/output/saml_analysis_<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

  5. 選取執行

  6. 自動化會啟動。

  7. 文件會執行下列步驟:

    • ValidateIAMIDProvider

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

    • CheckS3BucketPublicStatus

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

    • CheckS3ObjectExistence

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

    • AnalyzeSAMLResponse

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

  8. 完成後,請檢閱輸出區段以取得執行的詳細結果:

    • 輸出區段包含描述分析結果之 Amazon S3 物件的相關資訊。

  9. 分析結果中的 Amazon S3 物件是包含下列資訊的 Json 檔案:

    • validation_result:包含 SAML 回應的基本驗證結果。

      • saml_info:重要 SAML 資訊,包括發行者、簽章和聲明。

      • schema_validation:SAML 結構描述驗證的結果。

    • verification_result: 提供更詳細的診斷結果。

      • 簽章:簽章驗證的結果。

      • 對象:對象限制驗證的結果。

      • 過期:過期時間驗證的結果。

參考

Systems Manager Automation