通过空运行API调用进行AWS IAM策略验证

时间:2018-12-21 12:36:09

标签: amazon-web-services go aws-sdk aws-iam aws-sdk-go

我正在开发一个将IAM策略作为JSON并在AWS上创建策略的工具。我正在使用aws-sdk-go来构建工具。我正在寻找一种可以在AWS上执行策略之前对其进行验证的方法。 AWS是否提供某种API来空运行策略创建之类的东西?

我尝试过的事情: 我正在逐字段验证策略。

  • 效果字段必须为AllowDeny
  • 对于“操作”字段,我在工具中添加了一个词典,该词典将服务映射到有效操作。这种方法的问题是它需要大量维护。 AWS不断发布新的服务和操作,我必须更新字典。
  • 对于资源,它应该是有效的ARN。

添加了一些其他验证,但是手动添加所有验证检查真的很困难。我相信,aws必须为某种政策提供某种非常规的设施。

2 个答案:

答案 0 :(得分:1)

AWS API公开了策略模拟器端点。您应该在https://docs.aws.amazon.com/sdk-for-go/api/service/iam/,尤其是在https://docs.aws.amazon.com/sdk-for-go/api/service/iam/#IAM.SimulateCustomPolicy使用易于使用策略模拟器的功能。

通过策略模拟器,您可以验证策略的json,并验证您的意图是否表示在策略中授予的权限的结果中。您可以提供上下文键,例如 aws:SourceIp,aws:RequestedRegion 等。

答案 1 :(得分:0)

您可以使用JSON模式进行一些验证。 如果您上网查找,可以在github上找到一些示例IAM Json Schema。 这是一个例子:

https://gist.github.com/jstewmon/ee5d4b7ec0d8d60cbc303cb515272f8a

我猜想使用Go,您可以使用类似以下内容的代码来针对此Json Schema验证JSON:

https://github.com/xeipuuv/gojsonschema

使用此方法的问题可能是,如果IAM更改其内容,则必须不断更新架构。