amazon-web-services - 我们如何为我们的 AWS 应用程序提供对客户资源的访问,而无需他们的 key ?

标签 amazon-web-services

我正处于编写 AWS 的早期阶段我们的用户将使用他们的 AWS 资源运行我们的研究算法的应用程序。例如,我们的代码需要启动 EC2运行我们的“ worker ”应用程序的实例,访问 RDS数据库,并创建访问 SQS队列。 AWS Java SDK示例(我们是用 Java 编写的)使用 AwsCredentials.properties 文件来存储访问 key ID 和 secret 访问 key ,这对于示例来说很好,但显然对我们的用户来说是 Not Acceptable ,他们本质上是让我们访问他们所有的资源。代表他们运行我们的系统的干净方法是什么?我发现了 AWS Identity and Access Management (IAM)这似乎是为了这个目的(我还没有弄清楚),尤其是。 Cross-account access between AWS accounts . This post让它听起来很简单:

Use the amazon IAM service to create a set of keys that only has permission to perform the tasks that you require for your script. http://aws.amazon.com/iam/



但是,其他帖子(例如, Within IAM, can I restrict a group of users to access/launch/terminate only certain EC2 AMIs or instances? )表明在 EC2 中使用 IAM 尤其存在限制。

任何建议都会非常有帮助!

最佳答案

RDS 和 EC2 的主要限制是,虽然您可以限制对某些 API 操作的访问,但没有资源级别限制。例如,使用 IAM S3 策略,您可以限制用户只能对某些存储桶执行某些操作。您可以为 EC2 编写一项策略,说明允许用户停止实例,但不能说明您只能停止某些实例。

另一种选择是让他们通过 Security Token Service 为您提供临时凭证。 .另一个变体是使用新的 IAM 角色服务。有了这个,一个实例就有了一组与之相关的策略。您不需要提供 AwsCredentials.proprties 文件,因为 SDK 可以从元数据服务中获取凭证。

最后一个选项可能是合并计费。如果您使用他们的 AWS 资源的原因仅仅是因为计费,那么设置一个从他们的账户中计费的新账户。帐户彼此隔离,因此您不能例如意外删除它们的实例。同样,您无法访问他们的 RDS 快照和类似内容(通过 mysql(而不是 AWS api)访问 RDS 实例将取决于实例的安全组)。您当然可以将其与之前的选项结合使用 - 它们可以为您提供仅允许您在该隔离帐户中执行某些操作的凭据。

关于amazon-web-services - 我们如何为我们的 AWS 应用程序提供对客户资源的访问,而无需他们的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11304055/

相关文章:

IOS 编码正文邮件(为 SES 创建我自己的 mime 邮件)

python - AWS Lambda 函数在 python 中误解了事件字典?

node.js - Nodejs 应用程序位于 0.0.0.0 :80 not public

amazon-web-services - 使用作业书签的 AWS Glue 失败并显示 "Datasource does not support writing empty or nested empty schemas"

python - boto3 ConnectionClosedError python

spring - 如何为amazonS3客户端设置区域?

amazon-web-services - 您可以运行具有多个 EMR 集群的交易数据湖(Hudi、Delta Lake)吗?

amazon-web-services - AWS Fargate 私有(private)子网,从 ECR 拉取

javascript - 从另一台服务器连接到 aws 服务器上的 MongoDB

安装 EB CLI 3.0 后出现 Python DistributionNotFound 错误