使用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,一经查实,立即删除!

相关文章

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…

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

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

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

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

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

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

Thymeleaf与Spring集成(第1部分)

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

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

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

如何安装 Angular CLI 并且检查 CLI 的版本

想在系统中安装 Angular CLI &#xff0c;如何进行安装并且如何检查 CLI 的版本&#xff1f; 可以使用命令&#xff1a; npm install -g angular/cli 进行安装。 使用命令 ng version 来查看 Angular 的 CLI 的版本 转载于:https://www.cnblogs.com/huyuchengus/p/10879166.htm…

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础

2018-2019-2 网络对抗技术 20165329 Exp 8 Web基础 原理与实践说明 实践内容概述基础问题回答实践过程记录 1.Web前端&#xff1a;HTML2.Web前端&#xff1a;javascipt3.Web后端&#xff1a;MySQL基础4.Web后端&#xff1a;编写PHP网页5.最简单的SQL注入&#xff0c;XSS攻击测试…

为JVM分配内存:一个案例研究

这篇文章是关于最近的性能调整练习的。 与往常一样&#xff0c;这些开始于关于症状的模糊表述。 这次&#xff0c;魔鬼采取了“应用程序速度慢&#xff0c;我们无法访问源代码的形式。 我们有什么改善情况的选择”。 对该应用程序进行仔细研究后发现&#xff0c;它由捆绑在一起…

Thymeleaf与Spring集成(第2部分)

1.简介 这是Thymeleaf与Spring教程集成的第二部分。 您可以在此处阅读第一部分&#xff0c;在那里您将学习如何配置该项目。 如本教程第一部分开头所述&#xff0c;Web应用程序将发送两种类型的请求&#xff1a; 插入新访客&#xff1a;将同步请求发送到服务器以添加新访客。…

我们正在破解JDBC,因此您不必

我们喜欢使用JDBC 没人说。 曾经 更严重的是&#xff0c;如果考虑一下&#xff0c;JDBC实际上是一个非常出色的API。 这也可能是Java成为当今流行平台的原因之一 。 在JDK 1.1 之前 &#xff0c; 以及在ODBC之前 &#xff08;这已经很久了&#xff09;&#xff0c;很难想象有任…

python之requests

转载:https://www.cnblogs.com/zhangxinqi/p/9201594.html 阅读目录 1、requests简介2、requests的安装3、requests请求4、请求响应5、requests异常处理6、cookies7、请求会话(Session)8、SSL证书验证9、代理设置10、身份认证11、编码12、其他说明1、requests简介 requests是通…

php如何清理网站缓存,php怎么清除opcache缓存

php清除opcache缓存的方法&#xff1a;1、开发环境中修改php.ini文件&#xff0c;将“opcache.revalidate_freq”的值改为1&#xff1b;2、在线上环境中&#xff0c;可以在PHP文件中执行“opcache_reset();”代码&#xff0c;重启web服务器。本教程操作环境&#xff1a;windows…

ActiveMQ中的温度,存储和内存使用百分比

为了有效使用ActiveMQ&#xff0c;了解ActiveMQ如何管理内存和磁盘资源以处理非持久性消息和持久性消息非常重要。 ActiveMQ具有三个关键参数&#xff0c;需要对其进行检查。 临时使用百分比 这是已用于假脱机非持久消息的已分配磁盘存储的百分比 非持久性消息是无法在代理重…

Python 爬虫之 Scrapy 分布式原理以及部署

Scrapy分布式原理 关于Scrapy工作流程 Scrapy单机架构 上图的架构其实就是一种单机架构&#xff0c;只在本机维护一个爬取队列&#xff0c;Scheduler进行调度&#xff0c;而要实现多态服务器共同爬取数据关键就是共享爬取队列。 分布式架构 我将上图进行再次更改 这里重要的就是…

Apache Camel中的断路器模式

骆驼通常在分布式环境中用于访问远程资源。 远程服务可能由于各种原因和期间而失败。 对于短时间后暂时不可用且可恢复的服务&#xff0c;重试策略可能会有所帮助。 但是某些服务可能会失败或挂起更长时间&#xff0c;从而使调用应用程序无响应且速度缓慢。 防止级联故障和关键…

深入学习决策树算法原理

分类技术&#xff08;或分类法&#xff09;是一种根据输入数据建立分类模型的系统方法&#xff0c;分类法的例子包括决策分类法&#xff0c;基于规则的分类法&#xff0c;神经网络&#xff0c;支持向量机和朴素贝叶斯分类法。这些技术都使用一种学习算法&#xff08;learning a…

Java 8 Friday Goodies:精益并发

在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 &#xff0c;现在我们觉得是时候开始一个新的博客系列了…

Floyd最短路(带路径输出)

摘要(以下内容来自百度) Floyd算法又称为插点法&#xff0c;是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法&#xff0c;与Dijkstra算法类似。 该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德命名。 简介编辑 在…