亚马逊AWS官方博客
通过 FluentBit 收集 Nitro Enclaves 日志
背景
AWS Nitro Enclaves 使客户能够创建隔离的计算环境来进一步保护和安全地处理高度敏感的数据,例如其 Amazon EC2 实例中的个人身份信息 (PII)、医疗保健、金融和知识产权数据。Nitro Enclaves 使用为 EC2 实例提供 CPU 和内存隔离的相同 Nitro 管理程序技术。
AWS Nitro Enclaves 在给用户提供安全可信的运行环境的同时,也会引入一些其他的风险,例如用户无法真正登录到应用运行环境中进行错误排查。如何收集 AWS Nitro Enclaves 中应用程序的日志是开发者首先要考虑的。
FluentBit 是一款非常轻量级的高性能高扩展性的的开源日志收集器,可以帮助用户在云端快速构建日志收集,处理,转发能力。
这里我们可以通过 FluentBit 或其他日志收集器收集 AWS Nitro Enclaves 应用日志。
部署 AWS Nitro Enclaves 应用
1、创建一台EC2 用作 Nitro Enclaves partner instance:“`
2、登录 EC2
以后内容均在 partner instance 上执行
3、按照文档安装Nitro Enclaves CLI
https://docs.aws.amazon.com/zh_cn/enclaves/latest/user/nitro-enclave-cli-install.html
4、构建应用程序
安装完成后,示例应用程序源文件会保存在/usr/share/nitro_enclaves/examples/hello
目录下
从应用程序构建一个 docker 映像。以下命令构建一个名为 hello 的 Docker 镜像,其标签为 latest。
使用 nitro-cli build-enclave 命令将 Docker 映像转换为 enclave 映像文件。以下命令构建名为 hello.eif 的 enclave 映像文件。
会得到类似下文的返回
使用 nitro-cli run-enclave 命令。指定 vCPU、内存和 enclave 映像文件的路径,以 Debug 模式部署应用
会得到类似下文的返回
现在您已经创建了 enclave,您可以使用 nitro-cli describe-enclaves 命令来验证它是否正在运行。
会得到类似下文的返回
由于我们在调试模式下创建了 Nitro Enclaves 应用,因此可以使用 nitro-cli console 命令查看 Nitro Enclaves 应用的只读控制台输出。
部署 FluentBit
在 EC2 上安装 FluentBit:
复制如下配置到 FluentBit Config /etc/fluent-bit/fluent-bit.conf
FluentBit 的输入是通过命令的方式读取 Nitro Enclaves 日志数据,并持续写入到Cloudwatch中。OUTPUT 可根据实际需求调整为ElasticSearch, S3, Kinesis Data Stream 等平台
在启动 FluentBit 之前,需要为 EC2 赋予一个角色,让 FluentBit 有权限写入日志到 Cloudwatch Logs。
完成了以上的操作之后,可以启动 FluentBit:
在一段时间后,就可以在 Cloudwatch Logs 中对应的 log group 里看到 Nitro Enclaves 应用的日志了:
总结
Nitro Enclaves 是一个非常易用的安全运行环境,可以和 AWS 多个服务紧密集成,实现业务快速开发。
引用资料
Nitro Enclaves 安装:
Installing the Nitro Enclaves CLI on Linux – AWS (amazon.com)
FluentBit:
Fluent Bit v1.9 Documentation – Fluent Bit: Official Manual