View a markdown version of this page

AWSSupport-TroubleshootSAMLIssues - AWS Systems Manager 自动化运行手册参考

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

AWSSupport-TroubleshootSAMLIssues

描述

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

如何工作?

运行手册执行以下步骤:

  • 验证 SAML 响应格式和必填元素。

  • 解码和提取 SAML 响应组件(发布者、断言、主题、条件、签名、属性)。

  • 根据 IAM 身份提供商证书验证数字签名(如果提供)。

  • 检查观众限制和时间有效性。

  • 提供详细的诊断信息,显示已解析的 SAML 结构和验证结果。

运行此自动化(控制台)

文档类型

自动化

所有者

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. 在使用本运行手册之前,您需要捕获 Base64-encoded SAML 响应(txt 文件)并将其存储在 S3 存储桶中。捕获 SAML 响应的说明可以在本文档中找到

  2. 导航到 AWSSupport-TroubleshootSAMLIssues “系统管理器” 下的 “文档”。

  3. 选择 Execute automation(执行自动化)。

  4. 对于输入参数,输入以下内容:

    • AutomationAssumeRole (可选):

      • 描述:(可选)允许 SSM 自动化代表您执行操作的 AWS Identity and Access Management (IAM) 角色的亚马逊资源名称 (ARN)。如果未指定角色,Systems Manager Automation 将使用启动此运行手册的用户的权限。

      • 类型:AWS::IAM::Role::Arn

    • InputFileS3URI(必填):

      • 描述:(必填)SAML 响应 txt 文件(例如 s3://bucket-name/path/to/file.txt)的亚马逊简单存储服务 (亚马逊 S3) URI。

      • 类型:字符串

      • 允许图案:^s3://[a-z0-9][a-z0-9.-][a-z0-9](/.)?$

    • S3OutputPrefix (可选):

      • <executionID of the runbook>描述:(可选)分析输出文件存储在输入存储桶中,名为 “saml_analysis_ .json”。如果要输出带有特定前缀的文件,则可以使用此参数。<executionID of the runbook>默认值为 “output/”,在这种情况下,输出结果的文件 URI 将是 's3://bucket-name/output /saml_analysis_ .json'。

      • 类型:字符串

      • 允许图案:^[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 与 AWS IAM 直接关联,请提供其 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-0 T10:00:00 1)。如果未提供此参数,则将根据当前时间戳执行到期检查。

      • 类型:字符串

      • 允许图案:^$|^\\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 存储桶和账户封禁公有访问设置、存储桶加密配置、存储桶 ACL、存储桶策略状态以及向存储桶上传对象的 IAM 角色的 ARN。如果未指定此参数,则运行手册使用启动此运行手册的 AutomationAssumeRole ``(如果指定)或用户(如果未指定 AutomationAssumeRole `)。

      • 类型:AWS::IAM::Role::Arn

  5. 选择执行。

  6. 自动化启动。

  7. 文档将执行以下步骤:

    • 验证 IAMID 提供商

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

    • CheckS3BucketPublicStatus

      检查 Amazon S3 存储桶是否允许匿名或公共读取或写入访问权限。如果存储桶允许这些权限,则自动化将在此步骤停止。

    • CheckS3ObjectExistence

      验证对 Amazon S3 存储桶的访问权限。检查存储桶和对象是否存在,以及自动化是否具有从源读取和写入目标所需的权限。

    • 分析 SAMLResponse

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

  8. 完成后,请查看 “输出” 部分,了解详细的执行结果:

    • 输出部分包含有关描述分析结果的 Amazon S3 对象的信息。

  9. 分析结果中的 Amazon S3 对象是一个 Json 文件,其中包含以下信息:

    • 验证结果:包含 SAML 响应的基本验证结果。

      • saml_info:关键 SAML 信息,包括发布者、签名和断言。

      • schema_validation:SAML 架构验证的结果。

    • 验证结果:提供更详细的诊断结果。

      • 签名:签名验证的结果。

      • 受众:受众限制验证的结果。

      • 到期:过期时间验证的结果。

参考

Systems Manager Automation