如何了解我需要为 CLI 命令授予哪些 AWS 操作?



考虑我想运行一些AWS CLI命令,例如aws s3 sync dist/ "s3://${DEPLOY_BUCKET_NAME}" --delete.

我如何知道我需要授予哪些特定权限(操作(才能使此命令正常工作?我想坚持最低特权原则。


只是为了澄清我的问题。我知道在哪里可以找到 S3 或其他服务的所有操作的列表,并且知道如何编写策略。问题是我如何知道我需要为某些 CLI 命令授予哪些特定操作?

因为,每个命令将使用不同的操作,并且命令的参数在这里也起作用。

AWS CLI 中使用的几乎每个命令都一对一映射到 IAM 操作。

但是,aws s3命令(如sync(是调用多个命令的更高级别函数。

对于sync,我想你需要:

  • ListBucket
  • CopyObject
  • GetObjectACL
  • PutObjectACL

如果这仍然没有帮助,那么您可以使用 AWSCloudTrail 查看 AWSCLI 对您的账户进行的底层 API 调用。CloudTrail 记录将显示每个 API 调用以及调用是成功还是失败。

没有从高级 awscli 命令(如aws s3 sync(或我知道的 AWS 控制台操作到 API 操作的明确映射。

您可以考虑的一件事是启用 CloudTrail,然后临时启用对 IAM 策略中所有资源的所有操作,然后运行aws s3 sync测试,然后查看 CloudTrail 以了解在哪些资源上调用了哪些 API 操作。不理想,但它可能会给你一些开始。

您可以使用 Athena 查询 CloudTrail 日志。一开始设置似乎令人生畏,但实际上很容易。然后,您可以发出简单的 SQL 查询,例如:

SELECT eventtime, eventname, resources FROM trail20191021 ORDER BY eventtime DESC;

如果您想专门了解 S3,S3 开发人员指南中对此进行了说明:

  • 在策略中指定权限
  • 在策略中指定条件
  • 在策略中指定资源

通常,您可以从 AWS 服务的操作、资源和条件键中获取任何 AWS 资源所需的内容

您可能会发现 AWS 策略生成器很有用

最新更新