一、背景
在上一篇博客《使用VPC Traffic Mirror功能进行流量审计》中,我们介绍了使用VPC Traffic Mirror采集7层访问日志,不过采集架构局限在单VPC、单EC2。
那么如何构建一个跨VPC、多VPC、跨账号专门的日志采集架构?本文解答这一需求的设计。
Continue reading “使用NLB或GWLB搭建多VPC的Traffic Mirror流量采集架构”本站是个人兴趣学习笔记而非AWS官方博客,不卖产品、不卖课、不解答问题,如用于商业生产环境请自行判断风险、谨慎把握
在上一篇博客《使用VPC Traffic Mirror功能进行流量审计》中,我们介绍了使用VPC Traffic Mirror采集7层访问日志,不过采集架构局限在单VPC、单EC2。
那么如何构建一个跨VPC、多VPC、跨账号专门的日志采集架构?本文解答这一需求的设计。
Continue reading “使用NLB或GWLB搭建多VPC的Traffic Mirror流量采集架构”对于简单的网络流量采集需求,可以使用VPC Flowlog功能,之前这篇博客介绍了VPC Flowlog的使用。不过VPC Flowlog也有局限,主要是仅记录OSI模型的第四层的日志信息,也就是所谓的“五元组”,即源地址、源端口、目标地址、目标端口、协议这五要素,很多时候不能满足日志需求。
如果需求进一步增加要求如下日志能力:
以上需求场景,适合使用VPC Traffic Mirror实现。
Continue reading “使用VPC Traffic Mirror功能进行流量审计”近期有一片文章《亚马逊安全机制被用于勒索攻击,全球数千家机构已成为攻击目标》,原文在这里。引用部分文字如下:
据报道,勒索组织已经开始加密全球数千家机构在亚马逊云存储的数据。
与传统的勒索软件攻击不同,此次攻击没有利用任何系统漏洞,
而是利用了亚马逊云服务本身的安全机制,制造了一个几乎无法破解的困境,
迫使受害者不得不选择支付赎金。
勒索组织首先获取了受害者的亚马逊账户凭证,
这些凭证具有读取存储数据和写入加密工具的权限。
随后,他们利用亚马逊的服务器端加密工具(SSE-C)将客户的数据重新加密,
使用户无法正常访问,并向要求受害者在七天内支付赎金,
否则将永久删除所有加密文件。
这篇文章对整个攻击事件过程描述的比较模糊,文中提到“勒索组织首先获取了受害者的亚马逊账户凭证”
,但转而又提到“此次攻击没有利用任何系统漏洞,而是利用了亚马逊云服务本身的安全机制”
。这两句前后矛盾的表述让许多人感到困惑,并担心自身系统安全。
为此,AWS官方也有一篇博客针对类似攻击事件给出了一些信息,英文原文在这里。基于这两篇文章,本文介绍下类似勒索攻击的由来,以及类似的防护方法。
Continue reading “针对S3存储的勒索攻击的防护以及关闭SSE-C的方法”在一些对数据安全有较高要求的场景中,需要对S3上的数据进行加密。有时候可能会遇到以下需求:
在以上情况下,可使用S3服务的SSE-C功能来满足以上加密需求。
此时可能有同学有疑问,在创建S3存储桶界面上选择加密算法的位置,并没有SSE-C加密方式的选项,那么它是如何运作的?这要从S3的几种加密方式说起。
Continue reading “使用S3存储的SSE-C方式加密数据”本文基于亚马逊云开发者微信公众号这篇文章的内容编写,对相关服务增加了介绍,操作过程做了截图,并汇总了冷启动、费用等问题。有疑问请参考原文。
在前一篇博客中介绍了使用Ollama在MacOS本机或者EC2 G系列实例上快速启动DeepSeek R1蒸馏后的1.5b模型/32b(均基于Qwen蒸馏而来)。在生产环境中,单机部署只能解决时效性要求不高的批量离线推理,对于在线的实时推理场景,单机部署是不能满足高可靠要求和并发要求的,一但单机遇到故障,整个应用就无法访问了。因此此时就需要在Bedrock上托管的方式部署。
Bedrock支持自定义模型导入功能。截至2025年1月Bedrock导入自定义模型仅支持Llama架构、不支持Qwen架构,因此导入DeepSeek R1模型蒸馏的一组模型时候,无法选择基于Qwen架构的32B参数的版本。可用的将是8B和70B参数的版本(基于Llama)。本文选择70B参数的版本,通过Custom Model Import功能在Bedrock上部署。
Continue reading “在Bedrock上以导入自定义模型的方式部署DeepSeek R1模型蒸馏的Llama70b模型”Ollama是一个在本地运行大语言模型(LLM)的开源框架,提供了针对Windows、Linux、MacOS预先封装好的一系列模型,可一键方式在开发者本地(例如笔记本)运行大模型,大大简化了体验和开发的过程。Ollma将不同模型封装到自定义的容器架构内,并针对不同硬件架构做好了适配,可在包括Apple M1处理器在内的多种机型上运行。
Continue reading “使用Ollama在MacOS本机和AWS EC2 G系列机型上运行DeepSeek R1蒸馏模型”在使用AWS Config服务开启内置规则、对本账号进行诊断的时候,可能会发现有一条规则是提示S3存储桶的Bucket Key功能没有打开,这会带来成本影响。这个选项是什么意思呢?本文讲解如何启用这个选项。
Continue reading “通过Python脚本设置S3存储桶的Bucket Key”Python语言被广泛使用,在数据处理、机器学习等领域有统治地位。Python作为解释型语言,其主要优势就是跨平台、代码简洁,然而这也带来负面的影响,那就是解释型语言的运行效率低。因此,针对Python语言的编译运行有很多解决方案,其中一种是Cython。Cython可以将Python代码转换为C语言并编译为动态链接库,然后Python代码中可直接调用这些动态链接库。如此虽然提升了速度,但也带来一系列问题。一是编译后的动态链接库失去了跨平台特性,每个硬件架构平台(如X86_64和ARM)、不同操作系统版本(Glibc版本差异)的动态链接库是不通用的,都需要重新编译。二是要达到和C相近的性能,Python代码需要做优化才可以完全按C语言编译执行,由此带来代码改动的工作量,即需要在代码中按照Cython语言的要求对变量添加类型声明。如果不做这些优化,那么使用Cython比直接运行原Python效率提升有限,有提升但没有上升一个数量级,远不及C的运行速度。
虽然有着这两点缺点,不过使用Cython还有一个额外的收获,那就是编译后的动态链接库可封装代码,在一定程度上起到保护源代码的作用,让原始代码不再直接可读。由于反编译C代码动态链接库的门槛较高,因此这个方式在一定程度上提升了获取源代码的难度,实现了比较初步的源代码保护。因此本文不探讨Cython编译后的加速效果,而是介绍编译后保护代码明文的效果。
Continue reading “使用Cython编译运行保护Python源代码”ASR的全称是Automated Speech Recognition,通俗的说就是语音输入识别。TTS的全称是Text to Speech,也就是从文本到语音的人工合成。在AWS这两个场景分别对应的是Amazon Transcribe服务,以及Amazon Polly服务。
本文的Demo演示ASR功能本机mic输入,以及TTS通过本机扬声器播放合成的语音。
Continue reading “使用AWS平台上的ASR(Transcribe)和TTS(Polly)服务”注意:Cloud9宣布了将在2024年7月之后不再为新账号提供服务,原有AWS账号可继续使用。请参考本文末尾的官网说明。
使用Cloud9时候经常遇到一个问题,创建Cloud9开发环境的是另外的IAM User或者是联合登陆的IAM Role,在环境创建好之后使用另外的账户去操作Cloud9,在本Region的Cloud9界面下的My environment
下是看不到别人创建的Cloud9的。由此必须切换到创建Cloud9的身份重新登陆AWS控制台。这样使用非常不便。另外,如果创建Cloud9的是一个IAM Role,可能无法直接登陆。
此时,可以通过CLI为现有的Cloud9增加新的权限,即可让其他人有权限使用。
Continue reading “如何切换Cloud9的Owner”本文基于Github上作者jief123的方案编写。Github官方文档方案采用CDK形式部署,而本文是描述如何手工部署。
Continue reading “配置CloudFront及Lambda@Edge为Bedrock加速”在云上用EC2运行一些集群式应用的时候,需要让多个节点之间可以无缝的访问,互相具有可信的权限,也就是通常说的免密码登陆。通常,在AWS云上的EC2默认是证书方式登陆的,那么这种免密码登陆与EC2内置的证书登陆有何区别?请看本文讲解。
Continue reading “在EC2 Linux之间免密码登陆”由于中美贸易战纠纷,一些高科技领域存在黑名单,禁止中国(含香港)地区的用户使用美国开发商的技术和服务。在这种政策要求下,作为业界最前沿的领先的2个大语言模型的供应商 OpenAI(ChatGPT)和 Anthropic(Claude)均宣布不向中国地区用户提供服务。同时,AWS Bedrock上的Claude模型,也需要遵循监管规则,即模型使用者必须是海外用户,包括AWS账户注册的联络地址、账单地址都必须在海外,这些地址不能是中国大陆、也不能是香港,但可以是新加坡。如果是存在Partner代付的场景,Partner也必须满足以上标准。
在以上背景下,海外应用使用Anthropic Claude模型是完全合规的,即模型使用者是在海外,应用代码部署位置也是在海外,处理的信息也是海外用户信息。虽然如此,由于大部分互联网公司的开发团队在国内,开发者经常会在本机使用国内网络直接调用Bedrock上的Claude服务进行开发测试。这种情况下,调用Bedrock Claude服务的来源IP依然是中国地区的IP,此时可能会存在不合规的情况。这种不合规场景有可能会导致账号异常。
为了避免这种不合规场景,可找到调用Bedrock服务的AKSK所对应的IAM User,在这个IAM User上增加对应的IAM Policy,以白名单方式只允许海外特定IP的请求,并拒绝来自其他地区(含中国区)的请求,避免不合规的调用。
Continue reading “使用IAM Policy指定IP范围以限制用户对Bedrock服务的调用”本文讲解加密相关知识、信封加密原理、KMS密钥类型、KMS与实际服务集合使用。同时针对常见的加密需求,本文将介绍AWS Encrption SDK对文件加密场景,并给出AWSCLI、CLI命令示例、Python代码示例供参考。此外,本文还介绍了使用KMS保护Data Key并使用对称加密算法对字符串加密、非对称加密算法对字符串加密等场景,同时也给出了Python代码示例。
Continue reading “KMS – 云上数据加密和保护”Tool use也叫做Function calling,这是指模型识别访问意图并调用外部工具的能力。例如在一个对话查询中,希望检索互联网上当前最火热的歌曲,或者触发另一个系统的特定的API。这种能力往往和Agent以及知识库搭配使用。需要注意的是,Tool use场景中大语言模型不会直接运行API Call,而是将需要API Call的请求拼接好返回给调用大语言模型的代码。API call的执行过程是完全由程序调用来负责执行的。因此当代码执行API Call获得返回结果之后,还需要将返回结果再次输入到大语言模型中,并且包含上次的聊天记录一起返回。这时即可获得预期的插叙结果。
本文以一个数学计算为例,输入一个计算要求,识别是Tool场景,程序完成Tool use获取结果,再将结果代回到大模型对话,完成整个流程。
Continue reading “Bedrock上的Claude模型的Tool use”