AWS CLI 实战:使用 accessanalyzer create-archive-rule 创建 IAM Access Analyzer 归档规则

AWS CLI 实战:使用 accessanalyzer create-archive-rule 创建 IAM Access Analyzer 归档规则 AWS CLI 实战使用 accessanalyzer create-archive-rule 创建 IAM Access Analyzer 归档规则【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本文是围绕 AWS CLI 中aws accessanalyzer create-archive-rule命令的实战指南基于本仓库 awscli/examples/accessanalyzer/create-archive-rule.rst 展开。通过本文你将掌握如何为指定 Analyzer 创建归档规则Archive Rule、理解--filter的 JSON 过滤语法并结合 IAM Access Analyzer 服务端 API 模型service-2.json看清命令的底层实现同时学会使用配套的查询、更新、删除与追溯应用命令完成归档规则的完整生命周期管理。归档规则是什么自动归档新发现在 IAM Access Analyzer 中Analyzer 会持续扫描你的 AWS 账户/组织并生成外部访问相关的安全发现Finding。归档规则Archive Rule是一种自动化的规则只要新产生的 Finding 满足你定义的过滤条件就会被自动归档从而帮助你过滤掉已知的、可接受的访问场景让精力集中在真正需要关注的安全问题上。服务端 API 模型对CreateArchiveRule的描述如下见 service-2.json 中operations.CreateArchiveRuleCreates an archive rule for the specified analyzer. Archive rules automatically archive new findings that meet the criteria you define when you create the rule.而ArchiveRuleSummary形状进一步说明Contains information about an archive rule. Archive rules automatically archive new findings that meet the criteria you define when you create the rule.因此归档规则的核心价值是“自动、按条件、持续归档新发现”它可以大幅减少安全团队在控制台和 CLI 中的人工重复操作。前置条件先创建 Analyzercreate-archive-rule的归档规则必须隶属于某个已经存在的 Analyzer。在运行本文的命令之前请先确认目标 Analyzer 已存在控制台创建的 Analyzer 名称形如UnusedAccess-ConsoleAnalyzer-organization本仓库示例即使用该名称来自 create-archive-rule.rst也可以使用aws accessanalyzer create-analyzer命令创建参考 create-analyzer.rst可通过aws accessanalyzer list-analyzers查看已有 Analyzer 及其 ARN参考 list-analyzers.rst。注意--analyzer-name使用的是 Analyzer 的名称Name而不是 ARN。在apply-archive-rule命令中才会用到--analyzer-arn见下文生命周期章节。create-archive-rule 命令详解命令示例原文档核心内容以下命令为指定 Analyzer 创建一个名为MyRule的归档规则过滤条件为资源名称包含Cognito且资源类型为 IAM 角色AWS::IAM::Roleaws accessanalyzer create-archive-rule \ --analyzer-name UnusedAccess-ConsoleAnalyzer-organization \ --rule-name MyRule \ --filter {resource: {contains: [Cognito]}, resourceType: {eq: [AWS::IAM::Role]}}该命令执行成功后不会产生任何输出原文档明确说明 This command produces no output.。如果命令成功说明归档规则已创建你可以随后使用get-archive-rule或list-archive-rules验证规则是否生效。参数说明根据 service-2.json 中CreateArchiveRuleRequest形状的定义该命令支持以下参数CLI 参数服务端形状是否必填说明--analyzer-nameAnalyzerName是目标 Analyzer 的名称作为 HTTP 路径参数/analyzer/{analyzerName}/archive-rule传入--rule-nameName是要创建的归档规则名称--filterFilterCriteriaMap是规则的过滤条件JSON 对象格式见下文--client-tokenString否客户端幂等令牌idempotencyToken用于防止重复提交在CreateArchiveRuleRequest中analyzerName、ruleName、filter三个字段被标记为required这与 CLI 命令中三个必填参数的对应关系完全一致。--filter 的 JSON 过滤语法--filter是一个 JSON 对象其结构为“过滤键filter key→ 匹配条件criterion→ 值列表”的嵌套映射{ filterKey: { criterion: [value1, value2] } }以本示例中的过滤条件为例{ resource: { contains: [Cognito] }, resourceType: { eq: [AWS::IAM::Role] } }resource按资源标识符过滤示例中使用contains条件表示“资源名包含字符串Cognito”resourceType按资源类型过滤示例中使用eq条件表示“资源类型等于AWS::IAM::Role”。在 list-archive-rules.rst 的输出示例中还可以看到按发现类型过滤的用法{ findingType: { eq: [UnusedIAMUserAccessKey] } }即“归档所有未使用的 IAM 用户访问密钥”这一类型的发现。从仓库示例可以看出eq等于与contains包含是最常用的两种匹配条件更完整的过滤键filter key清单可参考 AWS 官方 IAM User Guide 中关于 filter keys 的说明本命令的服务端文档中也明确引用了这一参考。过滤键、匹配条件与值列表的具体可用组合以 IAM Access Analyzer 官方文档为准。底层 API 实现命令与服务端模型的对应从 service-2.json 中可以看到CreateArchiveRule操作的 HTTP 定义为{ name: CreateArchiveRule, http: { method: PUT, requestUri: /analyzer/{analyzerName}/archive-rule, responseCode: 200 }, idempotent: true }HTTP 方法PUT请求 URI 为/analyzer/{analyzerName}/archive-rule其中analyzerName是路径变量幂等性idempotent: true配合可选的--client-token可防止网络重试导致重复创建规则可能的错误响应ConflictException规则名冲突、ResourceNotFoundExceptionAnalyzer 不存在、ValidationException参数校验失败、ServiceQuotaExceededException超出归档规则配额、ThrottlingException限流、AccessDeniedException权限不足以及InternalServerException。理解这一点有助于排查命令失败原因例如当你收到ResourceNotFoundException时应检查--analyzer-name是否拼写正确、Analyzer 是否真的存在于当前区域收到ValidationException时应重点检查--filter的 JSON 语法和过滤键是否合法。归档规则的完整生命周期管理创建规则只是第一步。本仓库 awscli/examples/accessanalyzer 目录下提供了一组配套的归档规则命令示例可以覆盖规则的全生命周期查询规则详情get-archive-ruleaws accessanalyzer get-archive-rule \ --analyzer-name UnusedAccess-ConsoleAnalyzer-organization \ --rule-name MyArchiveRule输出示例来自 get-archive-rule.rst{ archiveRule: { createdAt: 2024-02-15T00:49:2700:00, filter: { resource: { contains: [ Cognito ] }, resourceType: { eq: [ AWS::IAM::Role ] } }, ruleName: MyArchiveRule, updatedAt: 2024-02-15T00:49:2700:00 } }可以看到返回的archiveRule对象包含ruleName、filter、createdAt、updatedAt四个字段与 service-2.json 中ArchiveRuleSummary形状的必填成员一一对应ruleName、filter、createdAt、updatedAt均为required。列出全部规则list-archive-rulesaws accessanalyzer list-archive-rules \ --analyzer-name UnusedAccess-ConsoleAnalyzer-organization输出示例来自 list-archive-rules.rst{ archiveRules: [ { createdAt: 2024-02-15T00:49:2700:00, filter: { resource: { contains: [Cognito] }, resourceType: { eq: [AWS::IAM::Role] } }, ruleName: MyArchiveRule, updatedAt: 2024-02-15T00:49:2700:00 }, { createdAt: 2024-02-15T23:27:4500:00, filter: { findingType: { eq: [UnusedIAMUserAccessKey] } }, ruleName: ArchiveRule-56125a39-e517-4ff8-afb1-ef06f58db612, updatedAt: 2024-02-15T23:27:4500:00 } ] }服务端ListArchiveRulesResponse形状还包含nextToken字段见 service-2.json当规则数量较多时可通过--next-token参数分页获取完整列表。更新规则条件update-archive-rule当过滤条件需要调整时使用update-archive-rule更新规则的条件与值aws accessanalyzer update-archive-rule \ --analyzer-name UnusedAccess-ConsoleAnalyzer-organization \ --rule-name MyArchiveRule \ --filter {resource: {contains: [Cognito]}, resourceType: {eq: [AWS::IAM::Role]}}该命令同样不产生输出参考 update-archive-rule.rst。服务端对应的UpdateArchiveRule使用PUT /analyzer/{analyzerName}/archive-rule/{ruleName}且analyzerName、ruleName、filter三者均为必填UpdateArchiveRuleRequest形状定义更新操作是整体替换过滤条件而不是增量合并。追溯应用规则apply-archive-rule归档规则默认只对创建之后新出现的 Finding 生效。如果希望对已经存在且符合规则的 Finding 也进行归档需要追溯应用规则aws accessanalyzer apply-archive-rule \ --analyzer-arn arn:aws:access-analyzer:us-west-2:111122223333:analyzer/UnusedAccess-ConsoleAnalyzer-organization \ --rule-name MyArchiveRule注意此命令使用的是--analyzer-arn而不是--analyzer-name且命令不产生输出参考 apply-archive-rule.rst。服务端ApplyArchiveRule的定义为 Retroactively applies the archive rule to existing findings that meet the archive rule criteria请求 URI 为/archive-rule同样是幂等操作。删除规则delete-archive-rule不再需要的规则可以删除aws accessanalyzer delete-archive-rule \ --analyzer-name UnusedAccess-ConsoleAnalyzer-organization \ --rule-name MyRule命令不产生输出参考 delete-archive-rule.rst。服务端DeleteArchiveRule使用DELETE /analyzer/{analyzerName}/archive-rule/{ruleName}。删除规则后已归档的 Finding 不会被删除但新的同类 Finding 将不再被自动归档。实操建议规则命名可读性规则名--rule-name在list-archive-rules输出中直接展示建议使用有业务含义的名称如MyRule、ArchiveUnusedKeys避免控制台自动生成的无意义 UUID。过滤条件尽量精确--filter支持多个键的组合AND 语义合理组合resource、resourceType、findingType等过滤键可以避免误归档真正需要关注的安全发现。创建后及时验证由于创建命令无输出建议紧接get-archive-rule或list-archive-rules确认规则内容符合预期。追溯应用需谨慎apply-archive-rule会一次性归档所有存量匹配 Finding执行前建议先用list-findings结合相同过滤条件确认影响范围参考 list-findings.rst。幂等与重试CreateArchiveRule为幂等操作配合--client-token可在网络抖动重试时避免创建重复规则。通过以上命令组合你可以在命令行中完成 IAM Access Analyzer 归档规则的创建、查询、更新、追溯应用与删除实现安全发现的自动化治理。相关示例文件均可在本仓库 awscli/examples/accessanalyzer 目录下查看服务端 API 模型详见 service-2.json。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考