在开发新产品并发现合适的产品市场时,每个团队都需要快速行动。 尤其是初创公司,因为公司的整个未来都取决于快速找到为您的产品付款的人。
对于初创企业和其他团队来说, Amazon Web Services是令人难以置信的工具,可以快速构建其应用程序和基础架构。 这些团队通常具有比适当的系统操作更强大的开发背景。
AWS提供了出色的工具来处理密钥,身份验证和安全性,但是由于经常出现更为紧迫的问题,因此许多团队并未对此进行研究。
我们想介绍几个概念和功能,这些功能将帮助您以最小的努力提高基础架构的安全性。
身份和访问管理(IAM),AWS安全的核心
IAM(身份和访问管理)是AWS安全系统的核心。 它使您可以管理基础架构中的用户,组和不同角色。 您可以创建具有不同权限的不同功能组,并将人员添加到这些组中。 这样,一旦人们移入其他组并且不再需要访问系统的每个部分,就可以轻松更改权限。
您可以将多个策略附加到用户,组或角色,以涵盖对不同AWS服务或不同资源的访问。
IAM文档易于阅读,并且浏览一遍绝对很有趣。 它以HTML,PDF或Kindle的形式提供,因此您甚至可以在上下班途中阅读。
不要使用提供给您的AWS账户的默认密钥
您可以对AWS采取的第一个也是最重要的措施是不使用提供给您的AWS账户的默认密钥。 该密钥具有对每个系统的完全访问权限。 这是一个主要的安全问题,因为泄露此密钥将意味着您使其他人可以访问基础结构的每个部分。 此外,随着时间的流逝,很难确定在基础架构中使用密钥的位置,因此,一旦要更改密钥,就必须在没有任何指针的情况下搜索所有基础架构。
为应用程序的不同用途创建用户或组使该部分可以进行自我记录,因此,每当要更改密钥时,您都知道基础结构的哪一部分。
为每个人创建一个用户帐户
第一步,不建议登录到主要AWS账户。 团队中需要访问AWS的每个人都应该使用不同的凭据获得自己的账户。 通过将这些用户添加到特定的组中,您可以轻松添加或删除权限,而不会丢失谁可以执行的操作。 不要对特定用户设置权限,而是为该权限创建一个组,因为它是自记录文档,可以为每个人更改。 在下图中,我们为管理员,财务和API访问创建了不同的组。
我们财务组中的用户只能访问我们的帐单。 即使万一他们的帐户被盗,也无法访问任何基础架构。
保护用户帐户的第二个重要步骤是对所有用户帐户启用两因素身份验证。 登录到系统并有权访问重要资源的每个人都需要启用两个因素。 作为管理员,您可以检查IAM的用户详细信息页面中是否启用了两个因素。 您可以立即为团队中的每个新员工启用此功能。
例如,以下用户未启用两个因素。 通过添加它并遵循向导,可以大大提高安全性。
对具有指定功能的角色使用多个键
如前所述,您永远不要使用您的AWS账户的主键来访问API。 这并不意味着只创建一个管理员用户并在任何地方使用此密钥。
用户,组和角色应仅具有完成一项特定任务所需的特定权限。 不要混在一起。 也许您将来希望将任务放置到另一台服务器上。 如果您组合了权限,则必须将其分成不同的组或角色。 您确实应该将这些与一开始区别开。
不要在EC2实例中使用密钥
IAM鲜为人知的功能是角色以及如何将其连接到基础结构的不同部分。 例如,如果您有一个应能够读取数据或将数据上传到S3的应用服务器。 过去,您可能已将AWS机密和访问密钥添加到计算机中,因此它可以使用它们来访问S3。
相反,您可以创建一个角色,该角色包括上载到特定S3存储桶的权限,并将EC2实例设置为使用此角色。 如果您将AWS开发工具包的不同语言使用,它们将自动生成具有与角色中定义的相同权限的临时密钥。
在IAM中创建角色
首先,您需要在IAM for EC2中创建一个新角色。 您可以为Opsworks之类的不同服务创建角色,这些角色可以为您调用AWS API。
然后创建一个策略,让您访问特定的S3存储桶
将以下策略导入向导:
{"Version": "2012-10-17","Statement": [{"Sid": "Stmt1385708770000","Effect": "Allow","Action": ["s3:Get*","s3:List*","s3:DeleteObject","s3:PutObject","s3:PutObjectAcl","s3:PutObjectVersionAcl"],"Resource": ["arn:aws:s3:::testbucket/*","arn:aws:s3:::testbucket"]}]
}
这将只允许对testbucket进行读写访问,而不能访问其他S3存储桶。 您可以在IAM文档中阅读有关政策的更多信息。 您可以将策略限制为具有ARN,Amazon资源名称的特定实例,存储桶或其他基础结构项目,就像我们在上述示例中对testbucket所做的那样。 AWS拥有有关ARN的大量文档
现在,我们想将角色连接到EC2实例。 每当您启动一个新实例时,都将该实例的IAM角色设置为我们刚刚创建的角色。
在这里,我们将角色设置为checkbot
现在,无论何时调用AWS API,您都无需提供任何密钥,因为它们将自动为您创建具有正确权限的密钥。 从现在开始,实例内部不再需要任何键,这使整个设置更加简洁和易于使用。
启用Cloudtrail
Cloudtrail是一项去年11月在AWS:reInvent上发布的新服务。 它将自动将对AWS API的每次调用记录到S3存储桶中。 这可以帮助将来进行审核。
只需单击几下即可完成不到30秒的设置,几乎不需要花任何费用(您只需为S3存储桶付费,而无需为Cloudtrail付费),并可以在将来为您节省资金。 去做就对了!
结论
AWS是一个庞大而复杂的系统,但提供了轻松的第一步来实现您的产品和安全性。 您可以遵循一些步骤和实践来大量提高安全性,而无需付出太多努力。 当然,从长远来看,您需要投资于安全性,并且从阅读IAM文档开始是一个好的开始。
作为初创公司,我们希望快速发展,制造产品并交付给我们的客户。 所有这些对于启动公司来说都是必要且重要的。 通过一些简单的修补程序,您可以尽早提高安全性,从而不会由于可预防的原因而泄漏客户数据。
船长而繁荣!
更多的信息
- 我希望在开始之前知道的AWS技巧
- AWS上的旋转凭证文档
- Trevor Rowe的凭证管理博客文章
- AWS的权限和策略文档
- Amazon资源名称文档
翻译自: https://www.javacodegeeks.com/2014/03/securing-your-aws-infrastructure-with-iam.html