
AWS CLI 实战使用aws accessanalyzer get-finding查询 IAM Access Analyzer 安全发现详情【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文是 AWS CLI 官方示例文档 get-finding.rst 的深度解读与实战指南。IAM Access Analyzer 会在你的「信任区域」账户或组织之外检测到外部实体可访问的资源时生成 finding发现项。当通过list-findings拿到发现项 ID 后get-finding就是定位到单个发现项、查看其完整详情外部主体、允许的操作、触发条件、资源类型与状态的标准手段。读完本文你将掌握get-finding的参数结构、输出字段语义、常见异常与 IAM 权限要求并能结合仓库内服务模型与相邻示例独立排查外部分享风险。一、命令概览一次调用拿到单个 finding 全量信息get-finding是 IAM Access Analyzer 服务API 操作名GetFinding在 AWS CLI 中的对应命令。其核心语义是根据 analyzer 的 ARN 与 finding 的 ID检索指定 finding 的详细信息。对应的底层 HTTP 请求定义可在仓库服务模型 service-2.json 中找到GetFinding: { name: GetFinding, http: { method: GET, requestUri: /finding/{id}, responseCode: 200 }, input: {shape: GetFindingRequest}, output: {shape: GetFindingResponse}, ... readonly: true }可以看出这是一次只读的GET /finding/{id}请求finding 的 ID 直接嵌入 URL 路径analyzer ARN 则作为查询字符串参数传递。官方示例文档给出了最简洁的调用形态aws accessanalyzer get-finding \ --analyzer-arn arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ConsoleAnalyzer-organization \ --id 0910eedb-381e-4e95-adda-0d25c19e6e90其中--analyzer-arn生成该 finding 的分析器 ARN示例中指向组织级分析器ConsoleAnalyzer-organization--id要检索的 finding 的唯一 IDUUID 格式。命令执行的三个前提已配置 AWS CLI 凭证默认读取~/.aws/credentials与环境变量且具备下文「权限要求」中所述的 IAM 权限analyzer 必须已经存在如果 ARN 对应的分析器不存在或已被删除请求将失败。分析器的创建见 create-analyzer.rstfinding ID 必须真实存在ID 一般通过 list-findings.rst或控制台获得找不到对应发现项时会返回ResourceNotFoundException。二、输出字段逐项拆解理解一个 finding 的完整画像官方示例的运行输出如下{ finding: { id: 0910eedb-381e-4e95-adda-0d25c19e6e90, principal: { Federated: cognito-identity.amazonaws.com }, action: [ sts:AssumeRoleWithWebIdentity ], resource: arn:aws:iam::111122223333:role/Cognito_testpoolAuth_Role, isPublic: false, resourceType: AWS::IAM::Role, condition: { cognito-identity.amazonaws.com:aud: us-west-2:EXAMPLE0-0000-0000-0000-000000000000 }, createdAt: 2021-02-26T21:17:50.90500000:00, analyzedAt: 2024-02-16T18:17:47.88800000:00, updatedAt: 2021-02-26T21:17:50.90500000:00, status: ACTIVE, resourceOwnerAccount: 111122223333 } }响应被包装在finding对象中对应响应结构GetFindingResponse的成员见 service-2.json。各字段的语义与底层Finding结构定义service-2.json一一对应字段类型含义本示例取值idstringfinding 的唯一 ID必返回0910eedb-381e-4e95-adda-0d25c19e6e90principalmap对信任区域内资源具有访问权限的外部主体{Federated: cognito-identity.amazonaws.com}联合身份actionlist分析策略语句中外部主体获准使用的操作[sts:AssumeRoleWithWebIdentity]resourcestring外部主体可访问的资源 ARNarn:aws:iam::111122223333:role/Cognito_testpoolAuth_RoleisPublicboolean生成该 finding 的策略是否允许公共访问falseresourceTypestring被识别资源类型如AWS::IAM::Role、AWS::S3::BucketAWS::IAM::Roleconditionmap分析策略语句中导致 finding 的条件cognito-identity.amazonaws.com:aud限定受众池createdAttimestampfinding 生成时间2021-02-26T21:17:50.90500000:00analyzedAttimestamp该资源最近一次被分析的时间2024-02-16T18:17:47.88800000:00updatedAttimestampfinding 最近更新时间2021-02-26T21:17:50.90500000:00statusstringfinding 当前状态ACTIVEresourceOwnerAccountstring拥有该资源的 AWS 账户 ID111122223333解读本示例一条典型的“联合身份越权访问”发现从输出可以还原出完整的安全场景一条外部联合身份主体cognito-identity.amazonaws.com即 Cognito Identity 联合身份服务被允许对账户111122223333中的 IAM 角色Cognito_testpoolAuth_Role执行sts:AssumeRoleWithWebIdentity通过 Web 身份令牌代入角色。condition中cognito-identity.amazonaws.com:aud将受众限定为us-west-2:EXAMPLE0-0000-0000-0000-000000000000身份池说明访问并未对所有人开放isPublic: false但该信任关系仍被识别为超出信任区域的外部访问因此生成ACTIVE状态发现项。完整的 Finding 结构还包括的“可选字段”除了示例中出现的字段Finding结构还定义了三个按需返回的成员示例场景下不出现error分析该资源时产生的错误信息sourcesfinding 的来源指明访问是如何被授予的仅对 Amazon S3 桶类 finding 填充resourceControlPolicyRestriction资源所有者通过 Organizations 资源控制策略RCP对该 finding 施加的限制类型。finding 状态机ACTIVE / ARCHIVED / RESOLVEDstatus字段的取值由枚举FindingStatus限定service-2.jsonACTIVE发现项处于激活状态表示当前仍存在该外部访问需要关注并处理ARCHIVED已被归档例如通过 update-findings.rst 主动归档RESOLVED已解决——外部访问已消失或通过 Archive Rule / RCP 等机制被抑制。三、请求参数详解analyzerArn 与 id 的获取与校验GetFindingRequest结构service-2.json要求analyzerArn与id两个必填参数参数CLI 选项在 HTTP 请求中的位置说明analyzerArn--analyzer-arn查询字符串analyzerArn生成该 finding 的分析器 ARNid--idURL 路径/finding/{id}要检索的 finding IDanalyzer ARN 的典型形态账户级分析器arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ConsoleAnalyzer-account组织级分析器arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ConsoleAnalyzer-organizationlist-findings的输出会同时给出analyzerArn与每条id是拼接get-finding命令最直接的数据来源参见 list-findings.rst。从 list-findings 到 get-finding 的完整排查链路先列出某分析器下所有 finding可加过滤器缩小范围aws accessanalyzer list-findings \ --analyzer-arn arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ConsoleAnalyzer-account \ --filter {resource: {contains: [Cognito]}, resourceType: {eq: [AWS::IAM::Role]}}拿到目标id如ce0e221a-85b9-4d52-91ff-d7678075442f后再用get-finding查看该条发现的完整详情。这种「先列表、后详情」的两步式排查正是 IAM Access Analyzer 命令行工作流的标准用法。四、权限要求与异常处理IAM 权限根据服务模型中的操作文档说明GetFinding与GetFindingV2都在 IAM 策略语句的Action元素中使用access-analyzer:GetFinding。也就是说调用该命令的执行主体必须拥有以下权限{ Effect: Allow, Action: access-analyzer:GetFinding, Resource: * }若缺少该权限服务端将返回AccessDeniedException。支持的 analyzer 类型重要限制服务模型明确标注了一个关键约束GetFinding is supported only for external access analyzers. You must use GetFindingV2 for internal and unused access analyzers.即get-finding仅支持外部访问分析器external access analyzer对于内部访问分析器internal与未使用访问分析器unused必须改用get-finding-v2对应操作GetFindingV2CLI 示例见 get-finding-v2.rst。这是选择命令时最容易踩的坑。可能抛出的错误GetFinding操作注册了五类错误service-2.json错误含义常见排查方向ResourceNotFoundException找不到指定的分析器或 finding核对--analyzer-arn与--id是否真实存在、是否属于同一分析器ValidationException参数校验失败检查 ARN 格式、ID 是否为合法 UUIDInternalServerException服务端内部错误稍后重试ThrottlingException请求被限流降低调用频率或增加退避AccessDeniedException缺少access-analyzer:GetFinding权限检查 IAM 策略五、get-finding 与 get-finding-v2 的对比如何选择两者的请求参数完全相同--analyzer-arn--id差异集中在响应结构上维度get-findingget-finding-v2适用分析器仅 external access analyzerexternal / internal / unused 均可响应顶层finding对象扁平字段findingDetails数组 顶层元数据finding 详情直接内嵌principal、action、condition等字段按findingType分组到externalAccessDetails等详情结构示例输出见上文第二节增加findingType如ExternalAccess字段对比 get-finding-v2.rst 的输出可以看到v2 将外部访问详情action、condition、isPublic、principal收敛进findingDetails[].externalAccessDetails并在顶层提供findingType: ExternalAccess、error: null等补充字段结构更适合程序化消费。建议新项目统一优先使用 v2仅在需要兼容外部访问分析器旧场景时使用 v1。六、在 AWS CLI 中运行本文命令的前提安装 AWS CLI本文基于仓库 aws-cliUniversal Command Line Interface for Amazon Web Services仓库中的官方示例展开示例命令可直接在已安装 AWS CLI 的终端执行配置凭证与区域aws configure设置访问密钥与默认区域示例中的us-west-2或通过--region显式指定确保与 analyzer 所在区域一致验证 analyzer 存在可先执行aws accessanalyzer list-analyzers示例见 list-analyzers.rst确认 ARN 有效。结语aws accessanalyzer get-finding虽然只有两个必填参数却是 IAM Access Analyzer 安全运营闭环中「定位单点风险」的关键一环从list-findings拿到发现项列表用get-finding展开某一条的完整画像外部主体、操作、条件、资源与状态再结合update-findings或 Archive Rule 完成处置。配合本仓库 examples/accessanalyzer 目录下的全套示例创建分析器、归档规则、策略生成等你可以把外部访问治理的整套 CLI 工作流串起来。需要特别牢记的是内部与未使用访问分析器请使用get-finding-v2并确保调用主体拥有access-analyzer:GetFinding权限。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考