3 个版本

0.2.2 2022年6月15日
0.2.1 2019年11月6日
0.2.0 2019年11月6日

122身份验证

Download history 19/week @ 2024-03-13 3/week @ 2024-03-20 19/week @ 2024-03-27 22/week @ 2024-04-03 38/week @ 2024-04-10 11/week @ 2024-04-17

4,449 每月下载

MIT 许可证

190KB
3.5K SLoC

Crate aws-iam

AWS IAM 策略资源的 Rust crate。

MIT License Minimum Rust Version crates.io docs.rs Build Audit GitHub stars

模型

大多数情况下,导入 aws_iam::model 提供了程序化创建策略文档所需的核心类型。您还可以导入 aws_iam::model::builder 来使用更 流畅 的接口来构建策略。`aws_iam::io` 模块提供了简单的读写函数,写函数生成 格式化 的 JSON 输出。

`aws_iam::report` 模块提供了一组特质,允许遍历策略模型,并实现了这些特质以将策略的格式化版本作为文档写入。

示例

use aws_iam::model::*;
use aws_iam::io::write_to_writer;
use std::io::stdout;

let policy: Policy = PolicyBuilder::new()
    .named("confidential-data-access")
    .evaluate_statement(
        StatementBuilder::new()
            .auto_named()
            .allows()
            .unspecified_principals()
            .may_perform_actions(vec!["s3:List*", "s3:Get*"])
            .on_resources(vec![
                "arn:aws:s3:::confidential-data",
                "arn:aws:s3:::confidential-data/*",
            ])
            .if_condition(
                ConditionBuilder::new_bool()
                    .right_hand_bool("aws:MultiFactorAuthPresent", true)
                    .if_exists(),
            ),
    )
    .into();
write_to_writer(stdout(), &policy);

生成以下 JSON。

{
  "Id": "confidential-data-access",
  "Statement": {
    "Sid": "sid_e4d7f2d3-cfed-4346-9c5e-a8e9e38ef44f",
    "Effect": "Allow",
    "Action": [
      "s3:List*",
      "s3:Get*"
    ],
    "Resource": [
      "arn:aws:s3:::confidential-data",
      "arn:aws:s3:::confidential-data/*"
    ],
    "Condition": {
      "BoolIfExists": {
        "aws:MultiFactorAuthPresent": "true"
      }
    }
  }
}

策略命令行工具

`policy` 工具提供了一些非常基本的策略资源操作。其中最有价值的是 `verify`,它将读取文件、解析它并生成格式化的输出。这种输出可以是文档形式,这对于描述常见策略很有用。

 $ policy -h
policy 0.2.0

USAGE:
    policy [FLAGS] <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information
    -v, --verbose    The level of logging to perform, from off to trace

SUBCOMMANDS:
    help      Prints this message or the help of the given subcommand(s)
    new       Create a new default policy document
    verify    Verify an existing policy document

例如,给定以下 JSON 策略

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "DenyAllUsersNotUsingMFA",
    "Effect": "Deny",
    "NotAction": "iam:*",
    "Resource": "*",
    "Condition": {"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}}
  }]
}

命令 policy verify -f markdown 将生成以下行之间的输出。


策略

IAM 策略版本:2012-10-17

声明

声明 ID:DenyAllUsersNotUsingMFA

DENY IF

  • Action NOT = "iam:*"
  • 资源= "*"
  • Condition IF EXISTS aws:MultiFactorAuthPresent THEN
    • aws:MultiFactorAuthPresent Bool "false"

变更

版本 0.2.2

  • 添加了常见的相等性、排序和哈希特性实现(见问题 #19)。

版本 0.2.1

  • 修复了 missing_docs 警告。
  • 从构建器中移除了 any_of()condition_one()one(),用 Action、Principal 和 Resource 上的函数替换。

版本 0.2.0

  • 第一次提交到 Crates.io。
  • 完成了对 policy 工具验证的 Markdown 支持。
  • 完成了对模型的修改以支持 NotActionNotPrincipalNotResource
  • 填补了文档中的明显空白。

版本 0.1.0

  • 从私有项目向 Github 进行了初始提交流。
  • 目标是完成现有模型、文档并添加 policy 工具。

待办事项

  1. 将 Latex 输出添加到 policy

依赖项

~3–5.5MB
~100K SLoC