KMS – 云上数据加密和保护

本文讲解加密相关知识、信封加密原理、KMS密钥类型、KMS与实际服务集合使用。同时针对常见的加密需求,本文将介绍AWS Encrption SDK对文件加密场景,并给出AWSCLI、CLI命令示例、Python代码示例供参考。此外,本文还介绍了使用KMS保护Data Key并使用对称加密算法对字符串加密、非对称加密算法对字符串加密等场景,同时也给出了Python代码示例。

Continue reading “KMS – 云上数据加密和保护”

使用SAML协议、以Amazon IAM Identity Center为SSO平台、配置单点登录AWS控制台

一、背景

1、什么是SAML

SAML是用于单点登录认证的通用协议,以XML格式为基础进行配置交换。负责用户认证的系统可被称为SSO平台,可以是基于Active Directory Federation Service构建,也可以是用户自行开发的统一认证平台。应用系统指的是与SSO平台对接的业务软件,例如OA、ERP、代码管理系统等软件。当使用SSO方式登录时候,应用系统本身不需要额外管理用户分组、密码、校验等,也就避免了在多个应用软件之间同步用户清单、同步用户密码的麻烦。

使用SSO是安全领域的最佳实践之一。

Continue reading “使用SAML协议、以Amazon IAM Identity Center为SSO平台、配置单点登录AWS控制台”

通过AWSCLI修改安全规则组允许EC2公网登陆

一、背景

在AWS安全最佳实践中,为EC2分配公有IP地址并开放安全规则住允许从互联网上任意地址(也就是来源为0.0.0.0/0)访问操作系统的SSH/RDP是非常不安全的,有非常大的安全隐患。以近期的SSH漏洞

 https://explore.alas.aws.amazon.com/CVE-2024-6387.html 

为例,这样开放端口可能导致几分钟内系统被侵入。为了规避这个安全风险,一般采用如下方式:

Continue reading “通过AWSCLI修改安全规则组允许EC2公网登陆”

安全改进解读:S3将阻止Public公开访问和禁用文件ACL两项功能作为新创建存储桶时候的默认设置

摘要:本文介绍了2023年以来S3将阻止Public公开访问和禁用文件ACL两项功能作为新创建存储桶时候的默认设置这一变化由此带来的安全方面的改进。同时,介绍了在此场景下如何配置存储桶公开对外发布数据。

一、背景

在S3控制台上,可以看到如下信息:

The S3 Block Public Access and S3 Object Ownership features provide settings to manage public access and object ownership for your Amazon S3 resources. All Block Public Access settings are enabled by default, and all new buckets, access points, and objects do not allow public access. By default, Object Ownership is set to bucket owner enforced, which disables the use of access control lists (ACLs).

These default settings have been in place in the S3 console since 2018 and 2021, respectively, and are recommended security best practices. Since April 2023, these default settings apply to all new buckets, regardless of how they are created. If you require public access, you can edit the Block Public Access settings, and grant access by using bucket policies. Unless you need to control access for each object individually, using ACLs to grant access isn't recommended. For more information, see Access control best practices.

以上两项功能,分别推出与2018年和2021年,之前是可选配置,目前成为了新建存储桶Bucket时候的默认配置。本文对这两个功能的使用进行介绍。

Continue reading “安全改进解读:S3将阻止Public公开访问和禁用文件ACL两项功能作为新创建存储桶时候的默认设置”

使用Session Manager Plugin插件在开发者本机创建本地转发功能用于登录位于私有子网的EC2 Windows RDP远程桌面

摘要:本文介绍了如何不需要将EC2 Windows的3389端口暴露在互联网上,而是通过System Manager转发3389端口到开发者本机的方法。EC2 Windows可以一直位于内网,其安全组也无须放行任何端口,即可实现安全管理。

Continue reading “使用Session Manager Plugin插件在开发者本机创建本地转发功能用于登录位于私有子网的EC2 Windows RDP远程桌面”

使用Athena分析在S3上的WAF Log

一、背景

在使用WAF保护业务系统的过程中,经常需要查询历史日志,分析特定防护对象的防护效果,查看拦截的请求,或查看访问特定URL的防护效果。这时候就需要用到WAF日志功能。

AWS WAF支持将日志输出到CloudWatch Log Groups,Kinesis,以及S3。将日志输出到CloudWatch Log Groups使用方便,但是存储成本高;将日志输出到Kinesis后可连接多种投递方式,灵活且延迟低,但技术架构稍微复杂。将WAF日志存储到S3数据湖,可实现最低低成本储存日志,通过Athena可快速方便查询。

Continue reading “使用Athena分析在S3上的WAF Log”

如何在多账号和单账号选择

提示:本文详细阅读需要20-30分钟时间

概述:本文以使用S3+Glue+Redshift+MWAA(Airflow)为例,介绍使用两种不同方式区分Prod环境和Test环境的权限。

目录如下:

  • 一、如何定义多账号和单账号
  • 二、多账号的隔离效果测试
  • 三、单账号下多用户的隔离效果测试
  • 四、二者对比
  • 五、小结
Continue reading “如何在多账号和单账号选择”

使用CloudFront发布EC2上的应用并使用Managed prefix功能限制EC2只接受CloudFront回源流量

一、背景

CloudFront使用的一般场景是发布ALB上的应用,而ALB又是发布一组EC2应用。CloudFront也支持直接发布EC2不使用ALB。当然这是不推荐的,因为ALB会提供了更好的多机流量调度,通过目标组实现健康检查,确保要发布的应用正常对外提供服务,并具备水平扩展能力。

此前,如果希望对ALB和EC2做限制,使其只允许来自CloudFront回源流量,并且不再接受其他互联网访问,那么这个需求常见的解决方案是:

Continue reading “使用CloudFront发布EC2上的应用并使用Managed prefix功能限制EC2只接受CloudFront回源流量”

使用WAF检查Referer Header对外部引用进行干预

一、背景

在CloudFront的控制台上,提供了一个TOP Refer的报表,这个报表用于显示本站的用户来源是来自哪个原始网站。这个机制是如何工作的呢?

假设如下的场景:

  • 主网站名为 https://www.abc.com/index.html
  • 图片的域名为 https://image.abc.com/image01.png

当客户端浏览器打开主网站时候,浏览器会向图片域名image.abc.com服务器的发送一个图片访问请求,并包含一个特殊的HTTP Header名为Referer。Referer Header的内容就是之前所在页面的域名,即www.abc.com。因此,图片服务器只需要检查Referer域名,即可获知引用此图片的原始网址。Referer Header可以被WEB应用服务器获取,并在应用层代码做判断。更高效的办法,是从客户访问前端的CloudFront和WAF上进行干预,来判断是否是合法的引用。

需要注意的是:检查Referer并不能完全阻断所谓的“盗链”和非法链接,因为攻击者可以简单去构造Referer Header来模拟一个正常请求。所以实施Referer检查的意义是可以避免图片等素材被其他网址的浏览器简单引用,可减少由此产生的外部流量等问题。如果需要100%的阻止外部访问且必须所有资源都经过身份验证,请参考CloudFront Signature签名功能。

下边介绍如何通过WAF检查Referer Header。

Continue reading “使用WAF检查Referer Header对外部引用进行干预”

在EC2 Linux操作系统上部署ClamAV并开启实时防护、集中日志采集和统一告警

一、背景

计算机信息系统等级保护(俗称等保)的要求之一是应用服务器具有病毒防护手段,并定期升级病毒特征库。这个防护场景通常被称为Endpoint Detection and Response(EDR),也可简称终端防护。EDR一般是采用侵入性的防护方式。所谓侵入性意味着需要在EC2虚拟机内植入专门的Agent才可以进行安全防护。在亚马逊云科技上,可通过Marketplace方式订阅多个第三方厂家的EDR,也可以线下采购。

商用的EDR方案有完整的检测、识别、发现、预防、干预、强化、集中管控等一整套管理功能,不过相对带来的问题是成本较高。在一些非严格等保的场合,如果只是要求实现病毒扫描和防护能力,那么可使用本文介绍的ClamAV方案进行替代。

Continue reading “在EC2 Linux操作系统上部署ClamAV并开启实时防护、集中日志采集和统一告警”

使用Route53 Log Query记录VPC内的DNS请求

一、背景

Route53支持对特定VPC内发起的DNS请求进行记录,由此可以记录VPC内应用对外访问的请求信息。仅限域名,通过IP直接访问的不会记录。

本文介绍如何开启Route53的DNS日志,然后将其输出到CloudWatch的日志组的这样一个简单场景。在生产环境中,日志信息还可以输出到Kinesis或者OpenSearch,以便于各种分析。如果是低频分析,审计用途为主,也可以将日志输出到S3存储桶。

请注意:Query logging功能是记录日志的审计能力,不是实时阻断。如果您需要实施阻断,那么应该考虑Route53 DNS Firewall(2022年10月AWS中国区也上线了此功能),或者使用Network Firewall(简称NFW),或者使用网络流量深度检测的终极解决方案Gateway Load Balancer(简称GWLB)。因此基于以上的信息,可选择一个合适的方案。

本文以中国区为例进行配置,配置将默认VPC的日志输出到CloudWatch日志组。

Continue reading “使用Route53 Log Query记录VPC内的DNS请求”

HIPAA 定义的PHI

HIPAA 是《健康保险流通与责任法案》。 制定 HIPAA 是为了提高医疗保健系统的效率和有效性,并建立美国联邦安全标准来保护受保护的健康信息 (PHI) 的安全和隐私。

HIPAA is the Health Insurance Portability and Accountability Act. HIPAA was enacted to improve the efficiency and effectiveness of the health care system and establishes federal security standards to protect the security and privacy of Protected Health Information (PHI).

Continue reading “HIPAA 定义的PHI”

使用STS服务和STS Tag标签、通过AssumeRole方式为应用生成临时授权

一、背景

在某些环境内,需要为某个系统生成一个临时访问授权,例如某应用允许用户发起对S3存储桶的特定目录的写入操作,而且有超时时间,过期后失效。此时,可使用STS服务临时生成AK/SK密钥,然后将临时AK/SK作为应用程序上传时候调用的角色即可。

本文编写参考了这篇博客,并针对AWS中国区的IAM策略添加了aws-cn标签。

Continue reading “使用STS服务和STS Tag标签、通过AssumeRole方式为应用生成临时授权”