速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

AWS Marketplace China AMI 制作技术指导

  • 2019-09-27
  • 本文字数:5759 字

    阅读完需:约 19 分钟

AWS Marketplace China AMI 制作技术指导

第 1 章 AMI 安全指导原则

Amazon 系统映像 (AMI) 提供启动实例 (云中的虚拟服务器) 所需的信息。 AMI 包括以下内容:


  • 一个用于实例 (例如,操作系统、应用程序服务器和应用程序) 根卷的模板

  • 控制可以使用 AMI 启动实例的 AWS 账户的启动许可

  • 一个指定在实例启动时要附加到实例的卷的块储存设备映射。

  • AWS Marketplace 是一个在线商店,您可以在商店中出售或购买在 Amazon Web Services (AWS) 上运行的软件,AWS Marketplace 现在是通过 AWS 销售软件和服务的统一电子商务平台。您可以使用 AWS Marketplace 销售 AMI,AWS Marketplace 提供组织有序的购物体验,为提高您创建的 AMI 的可靠性,并缩小攻击面,请遵循以下指导性原则:

1.1 AMI 创建阶段

  • 从现有的、维护良好的 EBS 支持的 AMI 中创建定制的 AMI,并具有明确定义的生命周期,请不要使用来历不明的 AMI,为节省成本推荐使用 Amazon Linux。

  • 开发一个可重复的过程来构建、更新和重新发布 AMI。

  • 在构建映像之前,请提前配置一个符合您软件运行环境的 EC2 实例。

  • 构建映像后,在 Amazon EC2 环境中运行它以检查安装,功能和性能等内容。

  • 使用最新的操作系统、软件包和软件构建 AMI。

1.2 AMI 安全防护

  • 确保您的 AMI 不包含没有密码的用户帐户或包含默认密码的用户帐户。

  • 使用为每个用户创建唯一密码或密钥的服务生成密码,并将密码直接发送给用户或创建强制功能以供用户更改密码。

  • 只要有可能,对网络流量使用端对端加密。例如,使用安全套接字层(SSL)来保护您和您的客户之间的 HTTP 会话。确保您的服务仅使用有效和最新的证书。

  • 使用安全组来控制对您的实例的入站流量访问。确保您的安全组被配置为只允许访问为您的服务提供必要功能所需的最小端口集。另外,只允许管理员访问必要的最小的一组端口和源 IP 地址范围。

  • 构建您的 AMI 作为最低限度的安装来减少攻击面。您应该禁用或删除不必要的服务和程序。

  • 禁用 sshd(SSH 守护进程)的远程 root 登录。要求所有用户使用他们的标准用户名进行 SSH。如果他们需要访问 root 权限,他们应该使用 sudo 命令。sudo 允许您控制允许哪些用户执行根功能并记录活动,以便有审计跟踪。

  • 用户帐户的 SSH 访问应该通过为每个用户生成安全密钥来完成。不要为用户提供简单的基于密码的帐户。为每个用户生成安全密钥以启用对实例的 SSH 访问。

  • 请确保敏感信息(如密码或密钥材料)绝不会以明文形式写入日志,标签或控制台等地方。对于 Windows,应检查 Ec2Config 服务配置以确保其符合您的安全策略。

  • 通过仅允许具有访问系统的有效理由的 IP 地址范围(例如公司或组织中的 IP 地址范围)来限制对用于管理访问的端口的访问。

  • 当发现新的 Internet 漏洞时,请及时更新 AMI 中的所有 Web 应用程序。

1.3 AMI 提交阶段

  • 在 AWS Marketplace 上提交 AMI 之前,我们建议您尽可能确保映像不存在已知的漏洞和恶意软件。Chkrootkit,rkhunter 和 Nessus 都有一些工具可用于此目的。

  • 在测试之后,确保通过移除测试中使用的所有用户,帐户,密码,密钥和文档(无论这些项目可能存储在哪里),从系统中删除所有用户凭据。

  • 在 AWS Marketplace 上提交产品之前,请确保已经删除了用于测试目的的所有 SSH 密钥。有时 SSH 密钥存储在 AMI 的多个地方。检查您是否找到并删除了您不打算在 AMI 中运送的所有 SSH 密钥。

  • 不要在您的 AMI 中包含收集和输出客户数据的软件。

1.4 AMI 维护阶段

  • 一旦您的 AMI 发布,就有一个流程来监控 AMI 中部署的软件的漏洞和安全更新。确保基于 AMI 的正在运行的实例经常更新,尤其是在有新的更新可用时。

  • 定期用最新的更新重建 AMI,以便基于 AMI 新创建的实例将具有最新的补丁。

  • 考虑定期对 AWS 计算环境进行渗透测试。

第 2 章 AMI 上线操作指南

Marketplace AMI 主要是包括了 Seller 应用软件的一种分发形式,预安装、预配置,用户通过订阅快速部署到自己的 VPC,简化软件的安装配置过程。


首先,Seller 需要在 AWS 中国(宁夏)区域(cn-northwest-1)创建、共享 AMI,并通过安全审核,然后进行 Listing,需要选择 AMI 所要支持的 Region 以及产品相关的一些信息,最后到 Publishing,此时将由 Marketplace 运营团队分发 AMI 到所支持的 Region,并能在 Marketplace 进行订阅。


后面我们将详细介绍从零开始制作 AMI、从共享 AMI 生成自己的 AMI、从北京往宁夏复制 AMI、把虚拟机导入成一个 AMI 四种种情况进行说明。

2.1 从零开始制作 AMI

登录 AWS 中国控制台,选择 EC2,并从右上角切换到中国(宁夏)区域;


2.1.1 Linux AMI 制作过程

启动一个全新的 EC2 实例并安装、配置、打包您的软件到实例操作系统;


1.为了系统完全,尽可能选择较新的 AMI 作为基础环境;


2.为了节省成本,尽可能选择 Amazon Linux 作为基础环境;


3.做好磁盘规划,EBS 空间不要过大,以满足需要的最小空间为限,后期客户可根据需要自行调整;


4.如果软件有默认密码,请选择部署后的实例 ID(AMI 启动过程中可以通过实例元数据获得)作为密码;


在打包结束后,请参考第一章清理 SSH Key 相关信息,主要是清除下面的 Key 文件,不留后门,如果不清理过不了安全检查。


sudo shred -u /etc/ssh/_key /etc/ssh/_key.pub


sudo rm /root/.ssh/authorized_keys


sudo rm /home/ec2-user/.ssh/authorized_keys



sudo rm /home/用户/.ssh/authorized_keys


用户根据不同的操作系统会有所区别。

2.1.2 Windows Server 2016 及更高版本 AMI 制作过程

如果采用 Windows AMI 请参考下面的内容:


https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/ami-create-standard.html


系统准备 (Sysprep) 工具可简化复制 Microsoft Windows 自定义安装的过程。我们建议您使用 Sysprep 创建标准化 Amazon 系统映像 (AMI)。随后可以通过此标准化映像为 Windows 创建新的 Amazon EC2 实例。


建议您将 Sysprep 与 EC2Launch(Windows Server 2016 及更高版本)或 EC2Config 服务(Windows Server 2016 之前的版本)一起运行。


不要使用 Sysprep 创建实例备份。Sysprep 会删除特定于系统的信息;删除这些信息可能会对实例备份导致意外结果。


Windows 2016 及更高版本操作系统,生成 AMI 前请执行下面的操作:


制作 AMI 前需要运行一个操作(将 Sysprep 与 EC2Launch 结合使用)进行设置,并会自动停止 Windows,在停止的 Windows 实例上再做 AMI,就可以正常解密出密码了,如果不运行此操作生成的 AMI 无法获取密码。详细参考如下:


https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/ec2launch.html


使用 EC2Launch Settings 应用程序运行 Sysprep,步骤如下:


1.在 Amazon EC2 控制台中,找到或创建 Windows Server 2016 或更高版本 AMI。


2.从该 AMI 中启动 Windows 实例。


3.连接到您的 Windows 实例并对其进行自定义。


4.搜索并运行 EC2LaunchSettings 应用程序。默认情况下它位于以下内容:


C:\ProgramData\Amazon\EC2-Windows\Launch\Settings。



5.根据需要选中或清除选项。这些设置存储在 LaunchConfig.json 文件中。


6.对于 Administrator Password,请执行以下操作之一:


  • 选择 Random。EC2Launch 生成一个密码并使用用户的密钥对其进行加密。系统会在实例启动后禁用此设置,以便在重新启动或停止再启动实例后该密码仍然存在。

  • 选择 Specify 并键入一个符合系统要求的密码。该密码以明文方式存储在 LaunchConfig.json 文件中,并且在 Sysprep 设置管理员密码时会被删除。如果现在就关闭,则会立即设置密码。EC2Launch 使用用户的密钥对密码进行加密。

  • 选择 DoNothing 并在 unattend.xml 文件中指定密码。如果未在 unattend.xml 中指定密码,管理员账户会被禁用。

  • 7.选择 Shutdown with Sysprep (使用 Sysprep 关闭)。

2.1.3 Windows Server 2016 之前版本 AMI 制作过程

通过以下过程可使用 Sysprep 和 EC2Config 服务创建标准化 AMI。


1.在 Amazon EC2 控制台中,查找或创建要复制的 AMI。


2.启动并连接到您的 Windows 实例。


3.对它进行自定义。


4.在 EC2Config 服务应答文件中指定配置设置:


C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml


5.在 Windows 开始菜单中,选择所有程序,然后选择 EC2ConfigService Settings。


6.在 Ec2 Service Properties 对话框中选择 Image 选项卡。有关 Ec2 Service Properties 对话框中的选项和设置的更多信息,请参阅 Ec2 服务属性


7.选择管理员密码选项,然后选择 Shutdown with Sysprep 或 Shutdown without Sysprep。EC2Config 会根据您选择的密码选项编辑设置文件。


  • Random:EC2Config 生成一个密码,使用用户的密钥加密,并向控制台显示加密的密码。我们会在首次启动后禁用此设置,以便在重启或停止再启动实例后该密码仍然存在。

  • Specify:密码以非加密格式(明文)存储在 Sysprep 应答文件中。下一次运行 Sysprep 时,它将设置管理员密码。如果现在就关闭,则会立即设置密码。服务再次启动时,则会删除管理员密码。务必要记住此密码,因为以后无法将其取回。

  • Keep Existing:运行 Sysprep 或重新启动 EC2Config 时,管理员账户的现有密码不变。务必要记住此密码,因为以后无法将其取回。

  • 8.选择 OK。


如果系统询问您是否想运行 Sysprep 并关闭该实例,请单击 Yes。您会看到 EC2Config 运行 Sysprep。然后,您会退出实例并且实例会关闭。如果您在 Amazon EC2 控制台中查看 Instances (实例) 页面,实例状态会从 running 变为 stopping,然后最终变为 stopped。此时,从该实例创建一个 AMI 是安全的。


第四步:创建映像(建议先停止实例)




创建时间因 EBS 卷大小而异,等待创建结束,在 AMI 里面可以看到刚创建的 AMI,请用此 AMI 去启动新的 AMI,看是否符合预期;


2.2 从共享 AMI 生成自己的 AMI

由于 Seller 需要提定专门的 AWS 帐户来共享 AMI 给 Marketplace 的帐户,如果是其他帐户共享给你的 AMI,你不能再次共享给 AWS 指定的 Marketplace 帐户,需要先拿共享 AMI 启动一个新的 EC2 实例,再创建一个属于自己的 AMI 并共享。


第一步:拿 AMI 启动一个新的实例



如果只是为了生成自己的 AMI,并不需要进系统做配置,可以选无密钥对方式。



创建 AMI 之前,如果是无密钥对方式可以忽略此步骤,如果有密钥对,请参考第一章清理 SSH Key 相关信息,主要是清除下面的 Key 文件,不留后门,如果不清理过不了安全检查。


sudo shred -u /etc/ssh/_key /etc/ssh/_key.pub


rm /home/ec2-user/.ssh/authorized_keys


2.3 从北京往宁夏复制 AMI


如果 Seller 已经在北京有了 AMI,可以直接复制到宁夏,但你必须 AMI 拥有者才允许此操作,否则参照第 2.2 章先生成自己的 AMI。




2.4 把虚拟机导入成 AMI


由于一些 Seller 采用自己定制 Linux 版本进行 AMI 的分发,现阶段没办法完全 100%能导入成功,可以参考 VMimport 的说明进行操作。


https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html


如果 VMimport 不能成功导入 AMI,请自行开 Case 寻求 AWS Support 或直接电话咨询 AWS 售后热线。


中国的 EC2 平台和 AWS Global 存在差异,在 Global 能导入的在中国不一定能导入,请提前测试,如果找不到好的解决办法,建议选中国的标准 AMI 重新部署您的软件。


2.5 如何共享 AMI


选中需要共享给 Marketplace 的 AMI,在权限 Tab 页选择“编辑”,输入帐号即可,大约 5 分钟之后 Marketplace 帐号那边就能看一共享过来的 AMI。


建议不要随便选择公有,在私有模式下



输入 12 位的 Marketplace 帐号


第 3 章 参考资源

3.1 EC2 AMI 技术说明

EC2 AMI 相关说明


https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/AMIs.html


https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/AMIs.html


Linux AMI 指导原则


https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/building-shared-amis.html


Windows AMI 指导原则


https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/ami-create-standard.html


https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/WindowsGuide/ec2launch.html#ec2launch-sysprep


共享 AMI


https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/sharing-amis.html


VM Import/Export 虚拟机导入 AMI 说明


https://docs.aws.amazon.com/zh_cn/vm-import/latest/userguide/vmie_prereqs.html


Public AMI Publishing: Hardening and Clean-up Requirements


https://aws.amazon.com/cn/articles/public-ami-publishing-hardening-and-clean-up-requirements/


How to Share and Use Public AMIs in A Secure Manner


https://aws.amazon.com/cn/articles/how-to-share-and-use-public-amis-in-a-secure-manner/

3.2 Global Marketplace AMI 指导

由于还没有 For China 的 Marketplace 门户网站,有一些 Global 的资源可以参考:


AWS Marketplace 文档中心


https://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/what-is-marketplace.html


AWS Marketplace 产品和 AMI 策略


https://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/product-and-ami-policies.html


Building AMIs for AWS Marketplace


https://aws.amazon.com/marketplace/help/seller-building-AMIs?ref=help_ln_sibling


Pricing, Listing and Updating AMIs


https://aws.amazon.com/marketplace/help/seller-AMIs?ref=help_ln_sibling


Help and FAQ


https://aws.amazon.com/marketplace/help?ref_=header_modules_help


Seller Help


https://aws.amazon.com/marketplace/help/seller-before-you-begin?ref=help_ln_sibling


Best Practices Guides


https://aws.amazon.com/marketplace/help/seller-naming-guidance


作者介绍:


蒋华


AWS APN 合作伙伴解决方案架构师,主要负责 AWS (中国)合作伙伴的技术支持工作,同时致力于 AWS 云服务在国内的应用及推广,并在关系型数据库服务、存储服务、分析服务、 HA/DR 及云端应用迁移方面有着丰富的设计和实战经验。加入 AWS 之前,曾在 IBM(中国) 工作 12 年,历任数据库售前工程师、UNIX 服务器资深售前工程师及解决方案架构师,熟悉传统企业 IT 架构、私有云及混合云部署,在数据库、数据仓库、高可用容灾及企业应用架构等方面有多年实践经验。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/aws-marketplace-china-ami-made-technology-direction/


2019-09-27 16:57885
用户头像

发布了 1851 篇内容, 共 119.3 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

深刻理解JAVA并发中的有序性问题和解决之道

JAVA旭阳

Java Java并发

架构实战营-模块1作业

小圆

【愚公系列】2022年12月 微信小程序-组件模板和组件样式

愚公搬代码

12月月更

编码开发如何开展API安全实现

穿过生命散发芬芳

12月月更

足球比赛中的数据科学

CnosDB

数据库 时序数据库 开源社区 CnosDB infra

架构训练营模块1作业

附加信息

架构训练营

iMazing2023全新版下载安装使用介绍

茶色酒

imazing2023

Camtasia2023录屏和剪辑合一的软件

茶色酒

Camtasia2023

实时数据赋能制造业产能升级:详解半导体和汽车制造行业最佳实践(活动报名)

tapdata

制造业 数据集成 汽车制造 实时数据 半导体行业

bat脚本常用命令及测试

@下一站

软件开发 BAT 12月日更 12月月更

Python:灵活的开发环境

eng八戒

Python Python自动化办公

Golong Context package

陈庆宗

Context #go

自制操作系统番外:编程语言中变量是如何存储的

编程语言

AngularJS进阶(十七)在AngularJS应用中集成微信认证授权遇到的坑

No Silver Bullet

AngularJS 12月月更 微信认证授权

Camtasia Studio2023软件和谐版录制电脑屏幕软件

茶色酒

Camtasia Studio2023

深入理解PKI

俞凡

架构 网络安全 网络

Flink on Yarn三部曲之三:提交Flink任务

程序员欣宸

flink YARN 12月月更

AngularJS进阶(二十)HTML5实现获取地理位置信息并定位功能

No Silver Bullet

H5 AngularJS 12月月更 地理位置

MySQL锁,锁的到底是什么?

蝉沐风

MySQL innodb MVCC

为什么FDA和MITRE也提及SBOM ? - 解读《医疗器械网络安全区域事件准备和响应手册》

安势信息

网络安全 SCA工具 SBOM 医疗器械 安势信息

2022-12-04:给定一个由 ‘[‘ ,‘]‘,‘(‘,‘)’ 组成的字符串, 请问最少插入多少个括号就能使这个字符串的所有括号左右配对, 例如当前串是 “([[])“,那么插入一个‘]‘即可满足

福大大架构师每日一题

算法 rust 福大大

Flutter — 仅用三个步骤就能帮你把文本变得炫酷!

编程的平行世界

flutter android

MongoDB源码学习:catalog与storage

云里有只猫

mongodb 源码刨析

极客时间架构训练营作业-模块一

张建闯

架构实战营

AngularJS进阶(十九)在AngularJS应用中集成百度地图实现定位功能

No Silver Bullet

定位 百度地图 AngularJS 12月月更

Centos7.x部署K8S集群 (基于containerd 运行时)

蜗牛也是牛

架构实战营模块一作业

张Dave

企业如何应对开源软件供应链安全问题?

安势信息

开源 开源安全 软件供应链安全 开源安全与治理 清源CleanSource SCA

【愚公系列】2022年12月 微信小程序-Behavior

愚公搬代码

12月月更

DevOps真死了?平台工程真有用?

agnostic

DevOps 平台工程

再突破!MatrixDB 在 PostgreSQL 领域获双重大奖!

YMatrix 超融合数据库

数据库 postgresql 超融合数据库 YMatrix

AWS Marketplace China AMI 制作技术指导_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章