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

myzjeezk  于 2023-11-14  发布在  Go
关注(0)|答案(3)|浏览(107)

我正在开发一个工具,它将IAM策略作为JSON并在AWS上创建策略。我正在使用aws-sdk-go来构建该工具。我正在寻找一种方法,可以在AWS上执行之前验证策略。AWS是否提供某种API来空运行策略创建或类似的东西?
我尝试过的事情:我正在逐个领域验证政策。

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

还添加了一些其他的验证,但是手动添加所有的验证检查真的很坚韧。我相信,aws一定为策略提供了某种模拟运行的工具。

wecizke3

wecizke31#

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:multitedRegion * 等。

11dmarpk

11dmarpk2#

你可以使用JSON Schema来做一些验证。如果你在线查看,你可以在github上找到一些示例IAM JSON Schemas。这里是一个示例:
https://gist.github.com/jstewmon/ee5d4b7ec0d8d60cbc303cb515272f8a
我猜使用Go,你可以使用类似下面的东西来验证JSON对这个JSON模式:
https://github.com/xeipuuv/gojsonschema
使用这种方法的问题可能是,如果IAM更改了他们的内容,您必须不断更新您这边的模式。

iyfjxgzm

iyfjxgzm3#

AWS提供了一个端点来验证IAM策略的语法和最佳实践。可以通过CLI或API调用。
https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html

相关问题