我知道这听起来像是一个基本问题,但我还没有想好该怎么办。
我们正在开发一个测试环境,用于筛选云工程师和BigData面试的候选人。
我们正在研究创建随需应变的AWS环境,可能使用Cloudformation服务,并测试用户是否能够使用boto3在环境中执行特定任务,如创建s3存储桶、分配角色、创建安全组等。
但一旦筛选完成,我们希望自动拆除之前创建的整个设置。
可能有多个考生同时参加考试。我们希望创建环境(其中可能包含其他用户不可见的ec2实例、s3 bucket等),并在测试完成后将其拆除。
我们考虑使用IAM角色为每个候选人动态创建IAM用户,并自动创建堆栈,并在测试完成后删除这些用户。
然而,我认为用户将能够看到其他用户创建的资源,这不是我们所期望的。
有没有其他更好的方法可以用来创建这些环境或实验室并为用户删除它们?像ITversity和Qwiklabs。
登录的用户应该可以访问和查看仅为其创建的资源。
请提出建议。
Query1:假设我已经使用创建了10个IAM roles
,并且每个角色都有一个用户。从IAM role 1
创建的用户是否能够看到VPCs
、EC2 instances
或S3
或由IAM role 2
创建的另一用户创建的任何其他资源?
资源会从一个IAM role
完全隔离到另一个吗?
或者像AWS Organizations
这样的服务在这种情况下有很大帮助吗?
Qwiklabs环境的工作原理如下:
- 维护AWS帐户池
- 当学生启动实验室时,其中一个帐户会分配给实验室/学生
- 启动CloudFormation模板以提供初始资源
- 提供学生登录(通过IAM用户或联合登录),并为其分配一组有限的权限
- 在实验室结束时,学生登录被删除,"收割者"删除帐户中的资源,CloudFormation堆栈被删除
"收割者"是一系列脚本,递归地遍历每个区域中的每个服务,并删除在实验室中创建的资源。reby-de/aws nuke也可以获得类似的功能:nuke整个aws帐户并删除其所有资源。
你可以尝试自己创造这样一个环境。
我建议在以下AWS文档中查看场景3:
在AWS云中设置多用户环境(用于课堂培训和研究)
它引用了一个"学生"环境,但它应该适应面试候选人的测试需求。
具有可选合并计费的"每个用户单独的AWS帐户"场景提供了出色的为需要完全独立的帐户环境的用户(如研究人员或研究生)提供的环境。它类似于"有限用户访问AWS管理控制台"场景,只是每个IAM用户都是在一个单独的AWS帐户,消除了用户影响彼此服务的风险。举个例子,考虑一个有10名研究生的研究实验室。管理员创建一个付费AWS帐户,10个链接学生AWS账户,每个链接账户1个受限IAM用户。管理员条款单独每个用户的AWS帐户,并将这些帐户链接到付费的AWS帐户。在每个帐户中,管理员创建IAM用户并应用访问控制策略。用户可以在其AWS帐户中访问IAM用户。他们可以登录AWS管理控制台以启动和访问不同的AWS服务,但须遵守访问权限应用于其帐户的控制策略。学生看不到其他学生提供的资源。这种情况的一个关键优势是学生能够在完成课程例如,如果学生在创业课程中使用AWS资源,他们可以继续使用现有资源在学期结束后在AWS上构建。
https://d1.awsstatic.com/whitepapers/aws-setting-up-multiuser-environments-education.pdf
然而,我认为用户将能够看到其他用户创建的资源,这不是我们所期望的。
AWS资源对其所有者和所有者共享这些资源的人都是可见的
新的IAM用户根本不应该看到任何AWS资源。