使用IAM保护您的AWS基础架构

在开发新产品并发现合适的产品市场时,每个团队都需要快速行动。 尤其是初创公司,因为公司的整个未来都取决于快速找到为您的产品付款的人。

对于初创企业和其他团队来说, Amazon Web Services是令人难以置信的工具,可以快速构建其应用程序和基础架构。 这些团队通常具有比适当的系统操作更强大的开发背景。

AWS提供了出色的工具来处理密钥,身份验证和安全性,但是由于经常出现更为紧迫的问题,因此许多团队并未对此进行研究。

我们想介绍几个概念和功能,这些功能将帮助您以最小的努力提高基础架构的安全性。

身份和访问管理(IAM),AWS安全的核心

IAM(身份和访问管理)是AWS安全系统的核心。 它使您可以管理基础架构中的用户,组和不同角色。 您可以创建具有不同权限的不同功能组,并将人员添加到这些组中。 这样,一旦人们移入其他组并且不再需要访问系统的每个部分,就可以轻松更改权限。

您可以将多个策略附加到用户,组或角色,以涵盖对不同AWS服务或不同资源的访问。

IAM文档易于阅读,并且浏览一遍绝对很有趣。 它以HTML,PDF或Kindle的形式提供,因此您甚至可以在上下班途中阅读。

不要使用提供给您的AWS账户的默认密钥

您可以对AWS采取的第一个也是最重要的措施是不使用提供给您的AWS账户的默认密钥。 该密钥具有对每个系统的完全访问权限。 这是一个主要的安全问题,因为泄露此密钥将意味着您使其他人可以访问基础结构的每个部分。 此外,随着时间的流逝,很难确定在基础架构中使用密钥的位置,因此,一旦要更改密钥,就必须在没有任何指针的情况下搜索所有基础架构。

为应用程序的不同用途创建用户或组使该部分可以进行自我记录,因此,每当要更改密钥时,您都知道基础结构的哪一部分。

为每个人创建一个用户帐户

第一步,不建议登录到主要AWS账户。 团队中需要访问AWS的每个人都应该使用不同的凭据获得自己的账户。 通过将这些用户添加到特定的组中,您可以轻松添加或删除权限,而不会丢失谁可以执行的操作。 不要对特定用户设置权限,而是为该权限创建一个组,因为它是自记录文档,可以为每个人更改。 在下图中,我们为管理员,财务和API访问创建了不同的组。

IAM示例组

我们财务组中的用户只能访问我们的帐单。 即使万一他们的帐户被盗,也无法访问任何基础架构。

保护用户帐户的第二个重要步骤是对所有用户帐户启用两因素身份验证。 登录到系统并有权访问重要资源的每个人都需要启用两个因素。 作为管理员,您可以检查IAM的用户详细信息页面中是否启用了两个因素。 您可以立即为团队中的每个新员工启用此功能。

例如,以下用户未启用两个因素。 通过添加它并遵循向导,可以大大提高安全性。

IAM-2因子

对具有指定功能的角色使用多个键

如前所述,您永远不要使用您的AWS账户的主键来访问API。 这并不意味着只创建一个管理员用户并在任何地方使用此密钥。

用户,组和角色应仅具有完成一项特定任务所需的特定权限。 不要混在一起。 也许您将来希望将任务放置到另一台服务器上。 如果您组合了权限,则必须将其分成不同的组或角色。 您确实应该将这些与一开始区别开。

不要在EC2实例中使用密钥

IAM鲜为人知的功能是角色以及如何将其连接到基础结构的不同部分。 例如,如果您有一个应能够读取数据或将数据上传到S3的应用服务器。 过去,您可能已将AWS机密和访问密钥添加到计算机中,因此它可以使用它们来访问S3。

相反,您可以创建一个角色,该角色包括上载到特定S3存储桶的权限,并将EC2实例设置为使用此角色。 如果您将AWS开发工具包的不同语言使用,它们将自动生成具有与角色中定义的相同权限的临时密钥。

在IAM中创建角色

首先,您需要在IAM for EC2中创建一个新角色。 您可以为Opsworks之类的不同服务创建角色,这些角色可以为您调用AWS API。

然后创建一个策略,让您访问特定的S3存储桶

IAM策略

将以下策略导入向导:

{"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

IAM检查机器人

现在,无论何时调用AWS API,您都无需提供任何密钥,因为它们将自动为您创建具有正确权限的密钥。 从现在开始,实例内部不再需要任何键,这使整个设置更加简洁和易于使用。

启用Cloudtrail

Cloudtrail是一项去年11月在AWS:reInvent上发布的新服务。 它将自动将对AWS API的每次调用记录到S3存储桶中。 这可以帮助将来进行审核。

只需单击几下即可完成不到30秒的设置,几乎不需要花任何费用(您只需为S3存储桶付费,而无需为Cloudtrail付费),并可以在将来为您节省资金。 去做就对了!

结论

AWS是一个庞大而复杂的系统,但提供了轻松的第一步来实现您的产品和安全性。 您可以遵循一些步骤和实践来大量提高安全性,而无需付出太多努力。 当然,从长远来看,您需要投资于安全性,并且从阅读IAM文档开始是一个好的开始。

作为初创公司,我们希望快速发展,制造产品并交付给我们的客户。 所有这些对于启动公司来说都是必要且重要的。 通过一些简单的修补程序,您可以尽早提高安全性,从而不会由于可预防的原因而泄漏客户数据。

船长而繁荣!

更多的信息

  • 我希望在开始之前知道的AWS技巧
  • AWS上的旋转凭证文档
  • Trevor Rowe的凭证管理博客文章
  • AWS的权限和策略文档
  • Amazon资源名称文档

参考:来自Codeship Blog博客的JCG合作伙伴 Florian Motlik 使用IAM保护您的AWS基础设施 。

翻译自: https://www.javacodegeeks.com/2014/03/securing-your-aws-infrastructure-with-iam.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux命令集锦:tmux命令

tmux是一款优秀的终端复用软件,平时用到的强大功能有下面两个: 窗口管理:同时启用多个窗口; 保护现场:连接到远程主机之后,一旦断开,那么当前账户登录的任务就被取消了,但是使用 tmu…

一个页面从输入URL到加载显示完成,发生了什么?

面试经典题——URL加载 一、涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns、http):DNS解析成IP并完成http请求发送;传输层(tcp、udp):三次握手四次挥手…

mysql文件软连接失败,解决打包软链接打包失败问题

一般情况下打包文件时,如果直接打包软连接会导致打包失败,即没有将要打包的内容打包进去,这里提供tar打包参数-h[rootlocalhost ~]# ll /etc/rc.locallrwxrwxrwx. 1 root root 13 Nov 24 00:45 /etc/rc.local -> rc.d/rc.local[rootlocalh…

快速掌握前端 专为Java程序员定制

Javascript 例子 修改页面内容 js 代码位置 <script>// js 代码 </script>引入 js 脚本 <script src"js脚本路径"></script>注意&#xff0c;到了框架之后&#xff0c;引入方式会有不同 1. 变量与数据类型 声明变量 1) let ⭐️ l…

实施Jersey 2 Spring集成

Jersey是Oracle提供的出色的Java JAX-RS规范参考实现。 去年&#xff0c;当我们开始为大容量网站构建RESTful后端Web服务时&#xff0c;我们选择使用JAX-RS API作为我们的REST框架和Spring框架来进行依赖项注入。 泽西岛是我们选择的JAX-RS实现。 项目启动时&#xff0c;JAX-R…

Solidity中如何判断mapping中某个键是否为空呢?

Solidity中如何判断mapping中某个键是否为空呢&#xff1f; 一.比较标准的做法是建立一个专门和value相关的结构体&#xff0c;用一个布尔型变量来看是否这个key所对应的value被赋过值 代码如下&#xff1a; pragma solidity ^0.4.19;contract UserTest {struct User{string na…

Angular网络请求的封装

很多时候&#xff0c;我很喜欢angular的编码风格&#xff0c;特别是angular支持typescript之后&#xff0c;完整的生命周期&#xff0c;完美的钩子函数&#xff0c;都是别的语言所无法替代的。这里我来说说我自己的网络请求封装&#xff0c;某种意义上来说&#xff0c;angular自…

mac安装了多版本php 卸载,mac 安装多版本PHP

前言相信大家在mac 安装PHP多版本的时候也遇到了很多坑# brew install php56# brew install php70这样安装的话肯定会报错的&#xff0c;因为brew存在软连接这个时候我们第一步&#xff1a;brew unlink php56 或者 brew unlink php70这个步骤是关闭掉PHP的软连接第二步&#x…

新国标电动自行车目录库

浙江&#xff1a;https://xzsp.zjidb.com/api/bicycle 上海&#xff1a;http://www.shbicycle.com/info.asp 北京&#xff1a;http://wfcxjk1.bjjtgl.gov.cn/fjdcml/fjdcListM.jsp 安徽&#xff1a;http://ddch.aqi.ah.cn/index_GB17761-1999.asp 3C查询&#xff1a;http://ccc…

HTML | CSS | JavaScript 常见错误

持续更新 超链接鼠标悬浮后的状态 a:hover 拼写图片文件的路径问题转载于:https://www.cnblogs.com/lcchy/p/10139389.html

隐藏的东西? 您需要HiddenSidesPane

我的甘特图用户之一希望在屏幕上使用尽可能多的空间&#xff0c;并询问是否可以删除滚动条。 但是&#xff0c;如何在没有滚动条的情况下进行导航&#xff1f; 好的&#xff0c;有各种各样的键盘快捷键&#xff0c;当然还有FlexGanttFX支持的普通鼠标拖动&#xff0c;但是大多数…

jQuery的on绑定click和直接绑定click区别

状况之外 在之前的公司并没有遇到这个问题&#xff0c;也就没有深究。直到自己换了现在的公司&#xff0c;刚来第二天就开始写别人写到一半的项目&#xff0c;很无奈&#xff0c;不是原生就是jquery&#xff0c;由于项目急&#xff0c;已经来不及切换框架重新布局&#xff0c;只…

php教程哪个软件好,写php用哪款软件好?解决方法

写php用哪款软件好&#xff1f;现在用php-eclipse&#xff0c;但是感觉不太好用js、html、css的提示功能没有&#xff0c;要装插件&#xff0c;装了很久没装上。想问一下现在开发php哪款软件好大家指导一下&#xff0c;谢谢------解决方案--------------------如果要js、html、…

循环数组对象 php,PHP循环遍历stdClass对象的数组

我有一个在MySQL中运行的查询,它返回一个结果作为stdClass对象,如下所示&#xff1a;array(8){[0]>object(stdClass)#36(1){["color"]>string(7)"#a0a0a0"}[1]>object(stdClass)#35(1){["color"]>string(7)"#e0e0e0"}[2]&…

js实现复制粘贴功能

在项目中使用到复制粘贴功能&#xff0c;虽然网上有很多大牛封装了很多的插件&#xff0c;但是还是想不去使用插件&#xff0c;就像自己来实现这个功能。 初步想法&#xff1a; 1. 获取到需要复制的内容&#xff0c;这里我可以将需要复制的内容放在input或者textarea的value中&…

Thymeleaf与Spring集成(第1部分)

1.引言 本文重点介绍如何将Thymeleaf与Spring框架集成。 这将使我们的MVC Web应用程序能够利用Thymeleaf HTML5模板引擎&#xff0c;而不会丢失任何Spring功能。 数据层使用Spring Data与mongoDB数据库进行交互。 该示例包含在酒店的单页Web应用程序中&#xff0c;从中我们可以…

html注释快捷键

1.选中需要注释的内容--->ctrlshift/ 2.取消注释--->ctrlshift\ 转载于:https://www.cnblogs.com/wyhluckdog/p/10131898.html

Java中转发(Forward)和重定向(Redirect)的区别

从URL来说&#xff0c;转发的地址栏没有发生改变&#xff0c;而重定向则是新的URL从数据共享来说&#xff0c;转发可以共享request域里面的数据&#xff0c;而重定向则不能。效率来说转发效率高&#xff0c;重定向效率低转发一般用来登陆后转发到对应模块&#xff0c; 重定向一…

oracle 老白,老白学编程 - Netdata学习 - numa

Numa 介绍NUMA,即Non-Uniform Memory Access Architecture&#xff0c;非统一内存访问架构。背景传统的SMP中&#xff0c; 所有处理器共享系统总线&#xff0c;当cpu数目增大时&#xff0c; 系统总现竞争就相应增加&#xff0c;会成为系统的瓶颈&#xff0c;所以SMP系统的CPU数…

几个非常实用的JQuery代码片段

jQuery是一个兼容多浏览器的javascript库&#xff0c;核心理念是write less,do more(写得更少,做得更多)。jQuery使用户能更方便地处理HTML&#xff08;标准通用标记语言下的一个应用&#xff09;、events、实现动画效果&#xff0c;并且方便地为网站提供AJAX交互。jQuery还有一…