3 个版本
0.2.2 | 2022年6月15日 |
---|---|
0.2.1 | 2019年11月6日 |
0.2.0 | 2019年11月6日 |
122 在 身份验证
4,449 每月下载
190KB
3.5K SLoC
Crate aws-iam
AWS IAM 策略资源的 Rust crate。
模型
大多数情况下,导入 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 支持。 - 完成了对模型的修改以支持
NotAction
、NotPrincipal
和NotResource
。 - 填补了文档中的明显空白。
版本 0.1.0
- 从私有项目向 Github 进行了初始提交流。
- 目标是完成现有模型、文档并添加
policy
工具。
待办事项
- 将 Latex 输出添加到
policy
。
依赖项
~3–5.5MB
~100K SLoC