

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

 **描述** 

 **AWSSupport-TroubleshootSAMLIssues **自动化运行手册通过分析存储在亚马逊简单存储服务 (Amazon S3) Simple S3 Service 中的 SAML 响应文件，帮助诊断与安全断言标记语言 (SAML) 相关的问题。它执行全面的验证，包括架构验证、签名验证、受众限制检查和到期时间验证。运行手册解码并从 SAML 响应中提取关键的 SAML 元素，包括发布者、断言、主题、条件、签名和属性。对于使用 SAML 通过 IAM 身份提供商访问 AWS 资源（例如 Amazon Connect 或 Amazon WorkSpaces 应用程序）的环境，它会验证 SAML 响应签名中的证书是否与 IAM 身份提供商中配置的证书匹配。

 **如何工作？** 

 运行手册执行以下步骤：
+ 验证 SAML 响应格式和必填元素。
+ 解码并提取 SAML 响应组件（发布者、断言、主题、条件、签名、属性）。
+ 根据 IAM 身份提供商证书（如果提供）验证数字签名。
+ 检查受众限制和时间有效性。
+ 提供详细的诊断信息，显示已解析的 SAML 结构和验证结果。

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

**文档类型**

自动化

**所有者**

Amazon

**平台**

/

**所需的 IAM 权限**

`AutomationAssumeRole` 参数需要执行以下操作才能成功使用运行手册。
+ `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. 在使用本运行手册之前，您需要在 S3 存储桶中捕获并存储一个 Base64 编码的 SAML 响应（txt 文件）。可以在[本](https://docs.aws.amazon.com//IAM/latest/UserGuide/troubleshoot_saml_view-saml-response.html)文档中找到捕获 SAML 响应的说明

1. [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootSAMLIssues/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootSAMLIssues/description)在 Systems Manager 的 “文档” 下导航至。

1. 选择 **Execute automation**（执行自动化）。

1. 对于输入参数，请输入以下内容：
   + **AutomationAssumeRole （可选）：**
     + 描述：（可选）允许 SSM Automation 代表您执行操作的 AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色，Systems Manager Automation 将使用启动此运行手册的用户的权限。
     + 类型：`AWS::IAM::Role::Arn`
   + **InputFileS3URI（必填）：**
     + 描述：（必填）亚马逊简单存储服务 (Amazon S3) Saml Response txt 文件（例如 s3://bucket name/path/to/file-.txt）的 URI。
     + 类型：字符串
     + 允许模式：`^s3://[a-z0-9][a-z0-9.-][a-z0-9](/.)?$`
   + **S3OutputPrefix （可选）：**
     + <executionID of the runbook>描述：（可选）分析输出文件以 “saml\$1analysis\$1 .json” 的名义存储在输入存储桶中。如果要输出带有特定前缀的文件，则可以使用此参数。<executionID of the runbook>默认值为 “output/”，在这种情况下，输出结果的文件 URI 将为 's3://bucket-name/output/saml \$1analysis\$1 .json'。
     + 类型：字符串
     + 允许模式：`^[a-zA-Z0-9+=,.@\\-_/]*/$`
   + **ExpectedAudience （可选）：**
     + 描述：（可选）SAML 响应中的预期受众价值。如果未指定，则使用`urn:amazon:webservices`。如果您在 IdP 和 SP 设置中配置了特定的受众群体值，请提供确切的格式（例如`urn:amazon:webservices`，`https://signin.aws.amazon.com/saml`）。
     + 类型：字符串
     + 默认：urn：亚马逊：网络服务
   + **IamIdProviderArn （可选）：**
     + 描述：（可选）如果您使用 IAM ID 提供商实体将您的 IdP 与 AWS IAM 直接关联，请提供其 ARN（例如）。`arn:aws:iam::<account-id>:saml-provider/<provider-name>`
     + 类型：字符串
     + 允许模式：`^$|^arn:aws:iam::[0-9]{12}:saml-provider/[a-zA-Z0-9_-]+$`
   + **SAMLAuthentication时间（可选）：**
     + 描述：（可选）执行 SAML 身份验证的日期和时间。时区必须为 UTC。必须采用:mm: ss YYYY-MM-DDThh 格式（例如，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。有权获取 Amazon S3 存储桶和账户封禁公开访问设置、存储桶加密配置、存储桶、存储桶策略状态以及将对象上传到存储桶的 IAM 角色的 ARN。 ACLs如果未指定此参数，则运行手册将使用` AutomationAssumeRole `（如果已指定）或启动此运行手册的用户（如果未指定 AutomationAssumeRole ``）。
     + 类型：`AWS::IAM::Role::Arn`

1. 选择**执行**。

1. 自动化启动。

1. 文档将执行以下步骤：
   + **验证 IAMIDProvider**

     通过检查提供的 IAM ID 提供商 ARN 是否存在且可访问来验证该提供商 ARN。如果未提供 ARN，则会跳过验证并成功完成该步骤。
   + **checkS3 BucketPublicStatus**

     检查 Amazon S3 存储桶是否允许匿名或公开读取或写入权限。如果存储桶允许这些权限，则自动化将在此步骤停止。
   + **checkS3 ObjectExistence**

     验证对 Amazon S3 存储桶的访问权限。检查存储桶和对象是否存在，以及自动化是否具有从源读取和写入目标的必要权限。
   + **分析 SAMLResponse**

     通过执行检查（架构验证、签名验证、受众验证、到期检查）来分析 SAML 响应文件。生成详细的 JSON 报告并将其保存到指定的 Amazon S3 位置。

1. 完成后，请查看 “**输出**” 部分，了解执行的详细结果：
   + **输出**部分包含有关描述分析结果的 Amazon S3 对象的信息。

1. 分析结果中的 Amazon S3 对象是一个 Json 文件，其中包含以下信息：
   + **验证结果：包含 S** AML 响应的基本验证结果。
     + **saml\$1info**：关键的 SAML 信息，包括颁发者、签名和断言。
     + **架构验证：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/)