AWS CLI accessanalyzer get-analyzed-resource 命令详解:查询被分析资源的访问详情
2026/9/13 19:12:02 网站建设 项目流程

AWS CLI accessanalyzer get-analyzed-resource 命令详解:查询被分析资源的访问详情

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

本篇指南聚焦 AWS CLI 中accessanalyzer get-analyzed-resource命令的完整用法。通过该命令,你可以基于分析器(Analyzer)的 ARN 与目标资源的 ARN,精确查询 IAM Access Analyzer 对该资源的分析结论(如是否公开、资源所有者、最近分析时间等)。读完本文,你将掌握该命令的参数构成、输出字段语义、底层请求实现以及常见错误的排查方法。

命令用途与适用场景

get-analyzed-resource用于检索一个已被分析器分析过的资源的信息。它回答的核心问题是:这个资源(如 S3 存储桶、IAM 角色)在外部访问分析器中记录了哪些访问特征?

典型使用场景包括:

  • 审计某个 S3 存储桶是否被分析器判定为公开(isPublic字段);
  • 获取资源的 ARN、所属账号与资源类型,用于后续与list-findingsget-finding等命令联动;
  • 校验start-resource-scan发起的重新扫描是否已完成(通过对比analyzedAt时间戳)。

适用范围限制:根据 service-2.json 中的操作说明,此操作仅支持外部访问分析器(external access analyzers),不适用于 unused-access 或 internal-access 类型的分析器。

命令语法与参数详解

命令的基础语法为:

aws accessanalyzer get-analyzed-resource \ --analyzer-arn <value> \ --resource-arn <value>

该命令包含两个必填参数,与 service-2.json 中GetAnalyzedResourceRequestrequired列表一致:

参数类型必填说明
--analyzer-arnstring分析器的 ARN,用于指定从哪个分析器获取信息。对应模型中的AnalyzerArn形状,模式为[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:analyzer/.{1,255},即 ARN 末尾必须带analyzer/前缀及 1~255 个字符的分析器名称。
--resource-arnstring目标资源的 ARN。对应ResourceArn形状,模式为arn:[^:]*:[^:]*:[^:]*:[^:]*:.*,即标准六段式 ARN。

参数如何传送到服务端

从 service-2.json 的操作定义可以看到,GetAnalyzedResource是一个只读(readonly)GET 操作

  • HTTP 方法:GET
  • 请求路径:/analyzed-resource
  • 两个参数均通过querystring(查询字符串)传递,locationName分别为analyzerArnresourceArn

这意味着当你执行上述命令时,实际发出的 HTTPS 请求形如:

GET /analyzed-resource?analyzerArn=<...>&resourceArn=<...> HTTP/1.1 Host: access-analyzer.us-west-2.amazonaws.com

了解这一点有助于你通过 VPC Flow Logs、API Gateway 日志或抓包工具核对命令是否按预期触发了请求。

完整示例与输出解读

以下示例直接继承自 get-analyzed-resource.rst,用于检索账号中已被分析的一个资源:

aws accessanalyzer get-analyzed-resource \ --analyzer-arn arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ConsoleAnalyzer-account \ --resource-arn arn:aws:s3:::amzn-s3-demo-bucket

输出示例:

{ "resource": { "analyzedAt": "2024-02-15T18:01:53.002000+00:00", "isPublic": false, "resourceArn": "arn:aws:s3:::amzn-s3-demo-bucket", "resourceOwnerAccount": "111122223333", "resourceType": "AWS::S3::Bucket" } }

输出字段逐项说明

响应中的resource字段对应模型中的AnalyzedResource结构(定义见 service-2.json),其中以下字段为必返字段(required列表):resourceArnresourceTypecreatedAtanalyzedAtupdatedAtisPublicresourceOwnerAccount

字段类型语义
resourceArnstring被分析资源的 ARN。
resourceTypestring被分析资源的类型,例如AWS::S3::BucketAWS::IAM::RoleAWS::SNS::Topic
createdAtTimestamp该资源对应 finding(发现项)被创建的时间。
analyzedAtTimestamp资源最近一次被分析的时间。可与start-resource-scan触发的时间比对,判断扫描是否已生效。
updatedAtTimestamp该 finding 最近一次被更新的时间。
isPublicboolean生成该 finding 的策略是否向资源授予了公开访问权限。false表示分析器未发现公开访问路径。
resourceOwnerAccountstring拥有该资源的 AWS 账号 ID。
actionslist(可选返回)外部主体(external principal)被策略授予的操作列表。
sharedVialist(可选返回)访问的授予方式,仅对 S3 存储桶的 finding 填充,例如存储桶策略、访问控制列表等。
statusstring该 finding 的当前状态(ACTIVE/ARCHIVED/RESOLVED等)。
errorstring分析资源时发生错误时的错误消息,未出错时不返回。

上面的示例输出未展示createdAtupdatedAtactionssharedViastatuserror等可选字段——这是因为分析器未发现公开访问路径时,这些字段往往不出现或为空。若你的资源存在公开访问问题,输出会包含isPublic: true及对应的actionssharedVia明细,可直接作为修复策略的依据。

与相关命令的联动:从创建分析器到查询资源

get-analyzed-resource处于 Access Analyzer 工作流的"查询"环节,通常与以下命令配合使用(示例文档均位于 awscli/examples/accessanalyzer/):

  1. 创建分析器:create-analyzer.rst 展示如何创建分析器。创建完成后,分析器会持续分析区域内的受支持资源。
  2. 列出已分析资源:list-analyzed-resources.rst 展示如何按--analyzer-arn与可选的--resource-type列出该分析器下所有已分析的资源摘要(仅含resourceArnresourceOwnerAccountresourceType三项)。你可以先执行它拿到目标资源的 ARN,再用get-analyzed-resource获取完整详情。
  3. 手动触发重扫:start-resource-scan.rst 展示如何对指定资源发起扫描。扫描完成后,再执行get-analyzed-resource即可读取最新分析结果。

一个典型的排查链路如下:

# 1. 列出分析器下所有已分析的 S3 存储桶 aws accessanalyzer list-analyzed-resources \ --analyzer-arn arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ConsoleAnalyzer-account \ --resource-type AWS::S3::Bucket # 2. 获取指定存储桶的完整分析详情 aws accessanalyzer get-analyzed-resource \ --analyzer-arn arn:aws:access-analyzer:us-west-2:111122223333:analyzer/ConsoleAnalyzer-account \ --resource-arn arn:aws:s3:::amzn-s3-demo-bucket

错误处理与常见异常

根据 service-2.json,该操作可能返回以下错误:

错误码含义常见触发原因与排查思路
ResourceNotFoundException资源未找到指定的分析器 ARN 或资源 ARN 不存在;或者该资源尚未被该分析器分析过。可先运行list-analyzed-resources确认资源确实在已分析列表中。
ValidationException参数校验失败ARN 格式不符合模式约束(如分析器 ARN 缺少analyzer/段)、参数缺失等。对照上文参数表核对 ARN。
AccessDeniedException权限不足当前 IAM 身份缺少access-analyzer:GetAnalyzedResource权限,或无权访问该分析器。
ThrottlingException请求被限流请求频率过高,建议使用指数退避重试。
InternalServerException服务端内部错误服务端临时故障,可稍后重试。

由于该操作是只读 GET 请求,执行它不会修改任何资源或分析器状态,可以放心在审计脚本中高频调用。

小结

get-analyzed-resource是 IAM Access Analyzer 运维与安全审计中查看单资源分析结论的入口命令。掌握它的两个必填参数(--analyzer-arn--resource-arn)、输出中AnalyzedResource各字段的语义,以及它仅适用于外部访问分析器的限制,即可在 AWS CLI 侧快速完成"资源是否公开、由谁拥有、何时分析"等核心判断。底层实现细节(GET/analyzed-resource、querystring 传参、readonly 语义)可直接在 service-2.json 中交叉验证,更多同系列命令示例可参考 awscli/examples/accessanalyzer/ 目录。

【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询