入门 / 动手实践 / ...

安全基础知识

入门指南

简介

保护您的账户和云资源很可能是一项艰巨的任务。由于恶意攻击者的技术不断演进,安全实践必须持续调整和重新评估。本指南为您提供了可从云旅程的第一天开始执行的基本任务。我们认为,以下实践对组织安全态势至关重要,但并非最终方案,也不能确保万无一失。在为云安全恪尽职守的过程中,请您尽可能地遵循这些实践。对于以下每个领域,我们都提供了进一步深入了解各主题的附加链接。

  • 什么是云安全?与传统的本地网络安全类似,云安全同样涉及为应用程序构建安全、高性能、弹性而高效的基础设施的实践。云安全涉及实施以下两类控制措施:防止未经授权访问的控制措施,以及按需进行检测、响应和补救的控制措施。云安全可涉及下列各类领域:网络和基础设施安全、主机和端点安全、数据保护和加密、身份管理、应用程序安全、日志记录、监控和威胁检测。云安全并非单一事务,而是一套使用工具和技术来保护组织的数据、资源和流程安全的实践。

  • 安全和合规是 AWS 和客户共同承担的责任。通过遵循这一共担模式,客户可以减轻运营负担,因为 AWS 负责运营、管理和控制“云本身的”组件。这样客户可以专注于构建应用程序和实施服务,同时负责保护这些“云内部的”服务。若想了解更多信息,请参阅责任共担模式

  • 当您第一次创建 AWS 账户时,可以遵循一些推荐步骤,从而更加安全地管理和访问它。

    根用户

    创建 AWS 账户后,最初使用的是所谓的根用户。这是您 AWS 账户中的第一个 AWS 用户。由于根用户具有账户的完整访问和控制权限,AWS 建议您不要用其执行日常操作。您应当遵循推荐的最佳实践来保护根用户。这包括锁定根用户访问密钥、使用强密码、启用 AWS 多重身分验证,以及创建 IAM 用户来访问您的账户。您可以给此账户分配管理员权限,并且应当使用此账户执行后续的所有管理任务。

    安全联系人

    接下来,您应当为您的账户分配备用安全联系人。备用安全联系人将收到与安全相关的通知,包括来自 AWS 信任与安全团队的通知。您可以通过博客文章更新 AWS 账户中的备用安全联系人以及时获取安全通知深入了解在账户设置中尽早设定这一联系人信息的重要性。

    区域控制

    确认安全联系人之后,您需要考虑您的工作负载应当以及不应当在哪些 AWS 区域运行。然后,您可以锁定不使用的区域以确保工作负载无法在这些区域运行。这不仅有助于成本优化,更有利于提高安全性。为什么呢?原因是,通过锁定您不希望运行工作负载的区域,您可以专注于监控您常常使用的那些区域。

    AWS CLI 和控制台访问

    现在,您已经完成了对根用户的保护,创建了一个或多个 IAM 用户,分配了安全联系人,并锁定了工作负载可以运行的区域。接下来,我们需要考虑用户如何与 AWS 资源进行交互。目前主要有两种交互方法:AWS CLI 和 AWS 管理控制台。建议为 AWS CLI 和控制台设置单点登录。若想详细了解如何通过 AWS IAM Identity Center 集中管理访问权限,请参阅文章配置 AWS CLI 以使用 AWS IAM Identity Center(AWS Single Sign-On 的后续版本)

    IAM 用户组

    保护账户安全性的下一步是设置 AWS IAM 用户组来控制访问权限。相较于直接为单个用户设置策略来控制其访问权限而言,最好是创建一个用户组,为该组分配所需的权限,然后将用户分配到该组。用户将继承该组的权限。这对大量用户实现访问控制提供了一种更加可扩展的方式。IAM 和 IAM 用户组涉及多项服务,因此有必要对其进行了解。IAM 这项服务会在某种程度上与所有 AWS 服务进行交互,因此请务必花时间熟悉 IAM。

    从一开始就遵循这些实践将有助于为您的 AWS 资源提供安全访问。接下来,我们将讨论如何保护您在 AWS 上构建的基础设施。

  • 由于基础设施是底层架构的一部分,并非直接面向客户,它们往往得不到重视。然而,如果基础设施出现故障,您向客户提供的服务也会受到影响。因此,从一开始就确保基础设施的安全性至关重要。

    Amazon VPC 安全性

    在构建云基础设施时,您首先要创建一个 Amazon 虚拟私有云 (Amazon VPC)。这是一个由您定义的虚拟网络(在创建账户时,每个区域都会创建一个默认的 VPC),您可以在其中启动资源。VPC 与传统网络的相似之处在于,它也具有分配好的 CIDR IP 地址范围,并通过创建子网进行划分。您的子网可用于隔离不同的资源集。子网可以是公有的,也可以是私有的。公有子网包含指向互联网网关的路由,可以通过此网关访问互联网,如果相关访问控制允许,也可以从互联网对其进行访问。私有子网也有一个路由表,但没有指向互联网网关的路由,因此默认情况下无法访问互联网,也无法从互联网对其进行访问。若要使私有子网中的资源访问互联网,则需要使用 NAT 网关。在子网级别,网络访问控制列表 (ACL) 允许或拒绝特定的入站或出站流量。您可以为您的 VPC 使用默认网络 ACL 或创建自定义网络 ACL。网络 ACL 是按自上至下的顺序处理的、无状态的有编号列表。这意味着您需要设置入站和出站网络 ACL 规则才能允许双向流量。

    安全组

    将 EC2 资源部署到您的 VPC 时,您会将其与一个安全组进行关联。安全组可以控制 EC2 资源的入站和出站流量。安全组类似于防火墙,但安全组不仅仅使用 IP 地址列表或范围,而是可指向一种称为资源引用的东西。资源引用是一个命名组,维护着一个持续更新的列表,其中包含为该组中每个资源分配的 IP 地址。举个例子,如果您创建一个自动扩展组来启动 Amazon EC2 实例,那么每个实例在启动时都会分配一个新的 IP。通过为这些实例添加一个安全组,您可以借助 EC2 实例的安全组 ID 授予对您的数据库服务器安全组的访问权限,这样,任何新启动的 EC2 实例都可以访问该数据库,而无需将其 IP 地址添加到白名单中。

    安全组规则类似于网络 ACL,因为在创建它们时,您可以匹配端口、协议和地址,但它们是有状态的,您可将其视为类似于有状态的防火墙。在创建允许特定类型流量的条目时,您无需创建一个匹配返回流量的规则;规则是有状态的,所以系统会自动允许其返回流量。这种比较有利于更好地理解安全组和 ACL 之间的交互。

    AWS 网络防火墙和 DDoS 防护

    若想为基础设施增加一层安全保护措施,您可以部署 AWS 网络防火墙。网络防火墙是一款托管服务,可为您的 Amazon VPC 部署保护措施。与安全组相比,网络防火墙可提供更细致的保护服务,因为网络防火墙可结合流量的上下文(如跟踪连接和协议识别)来执行策略,例如防止您的 VPC 使用未经授权的协议访问域。这是通过配置自定义 Suricata 规则来实现的。例如,您可以配置网络防火墙来防止恶意软件攻击。若要更进一步,您可以部署另一个托管服务 AWS Shield Advanced 来防止 DDoS 威胁。

  • 在 AWS 云上创建资源时,您必须根据当前的最佳实践来考虑如何保护这些资源的安全性。无论是部署 EC2 实例、数据库还是无服务器资源,这个原则都适用。在本节中,我们将为您提供一些基本步骤来保护您创建的资源。

    Amazon EC2 安全性

    在 AWS 上创建资源时,您应当注意遵循我们针对您使用的资源类型推荐的最佳安全实践。保护 EC2 实例的安全性要从控制对实例的网络访问开始,例如通过配置您的 VPC 和安全组进行保护。(若想了解更多信息,请参阅本文中“保护您构建的基础设施”部分下的“Amazon VPC 安全性”部分。)

    保护实例安全性的另一个方面则是对连接到实例的凭据进行管理。这不仅包括您分配的 IAM 用户权限,还包括所分配的用户组。这为使用 EC2 实例的用户提供了一定级别的安全保护,但没有为实例本身提供安全保护。您还应配置附加到实例的 IAM 角色以及与这些角色相关联的权限。在访问 EC2 实例时,请不要开启用于 SSH 的端口,也不要设置堡垒机或跳板机,您应当使用的是 EC2 Instance Connect

    您应当确保部署到实例上的客户操作系统和软件都安装了最新的操作系统更新和安全补丁。若想了解更多详细信息,请访问 Amazon EC2 中的安全性

    数据库安全性

    保护数据库的安全性是您安全策略中的一个重要方面。如 Amazon VPC 安全性部分所述,建议将数据库部署到私有子网中,以防止外部用户通过互联网访问数据库。AWS 提供 15 个专门构建的数据库。每个数据库的安全机制各不相同,但都具有以下共同点。

    身份验证

    若要访问数据库,需要通过某种形式的身份验证。您可以采用用户名和密码的形式,但应当 定期更换密码。您还可以选择使用  Amazon RDS 代理,利用 IAM 角色管理对数据库的访问权限。一些数据库服务(如  Amazon DynamoDB)使用  IAM 角色提供访问权限,因此您无需自行管理任何凭据。

    基于控制台的 SSH 访问

    SSH 是一种最常见的 EC2 实例管理方法。借助 Amazon EC2 Instance Connect,您可以在控制台上直接使用一次性 SSH 密钥通过 SSH 连接到 EC2 实例。下列文章讲解了如何  启用 Amazon EC2 Instance Connect,并说明了典型使用场景。您也可以在创建 EC2 实例时生成 SSH 密钥,将其下载到本地,并使用此密钥连接到您的实例。然而,这意味着您必须保护这些密钥,确保它们存储在您始终可以访问的地方,并且您只能从已下载这些密钥的机器连接到您的实例。EC2 Instance Connect 以一种简单易用、安全可靠的方式,通过控制台提供跨机器一致的 SSH 访问。
    最低权限

    最低权限

    我们建议您最好将数据库访问权限仅授予有访问需求的服务和基础设施。其方法是为您的 RDS 实例、 Amazon Neptune 数据库或  Amazon Redshift  集群 设置安全组

    备份和测试恢复

    您应当优先备份您的数据并经常执行数据恢复以确认备份是否正常运行。您可以使用  AWS Backup,轻轻松松即可为包括 Amazon RDS、DynamoDB 和 Neptune 在内的特定 AWS 服务配置和管理备份。

    无服务器安全性

    在无服务器安全性方面,您应当熟悉 AWS LambdaAmazon API Gateway、Amazon DynamoDB、Amazon SQS 以及 IAM。与责任共担模式相比,AWS 采用无服务器安全性的方法时会承担更多的责任,但客户仍需了解其有一定的责任。在无服务器环境中,AWS 负责管理基础设施、计算、执行环境和运行时语言。客户负责的是客户函数代码和库、资源配置,以及身份和访问管理,如下图所示。

    在下面的内容中,我们将提供客户负责的安全实践的详细信息。若想了解更多详细信息,请查看  AWS Lambda 中的安全性
    客户函数代码和库
    AWS Lambda 所提供的运行时环境可在基于 Amazon Linux 的执行环境中运行您的函数代码。然而,如果您在函数中使用额外的库,那么您要负责更新这些库。确保您的库保持最新版本有助于维护您的安全态势。
    资源配置
    AWS Lambda 与多种 AWS 资源集成,如 Amazon DynamoDB、Amazon EventBridge 和 Amazon Simple Notification Service (Amazon SNS)。对于您作为函数部分使用的每项服务,遵循推荐的安全实践将有助于加强您的安全态势。各服务的文档可为您提供更多指导。
    身份和访问管理
    执行 Lambda 函数可能需要特定 IAM 权限和角色。您可以在 AWS Lambda 开发人员指南的 权限部分找到更多详细信息。
    库存和配置

    您的安全战略还应包括监控、日志记录和配置管理。例如,许多组织使用 TACACS+ 协议、RADIUS 或 Active Directory 日志来启用设备的核算功能。这有助于确保为所有管理活动创建审计跟踪记录。在 AWS 云上,可以利用 AWS CloudTrail 来实现这一点。CloudTrail 通过跟踪用户活动和 API 使用情况,实现审计、安全监控和操作故障排除。AWS Serverless Application Repository 与 AWS CloudTrail 集成,使开发人员和企业能够在 AWS 云上快速查找、部署和发布无服务器应用程序。若想了解更多详细信息,请查看 AWS Serverless Application Repository 开发人员指南

    您仍然需要为无服务器环境提供一定程度的拒绝服务 (DoS) 和基础设施保护,这可以借助 AWS Shield 和 AWS Shield Advanced 来实现。监控和威胁检测会在“监控您的环境”部分进行更详细的讨论。

  • 客户可以在 AWS 云上存储大量数据。这些数据包含对组织运营至关重要的信息。其中包括客户数据、知识产权、直接与收入相关的订单等等。在本节中,我们将分享有关如何配置以下两类数据的基础知识:存储在 AWS 上的数据以及经由网络传入和传出 AWS 的数据。

    Amazon S3 安全性

    在 AWS 上,数据存储在 Amazon S3 中,它采取了多种控制措施来保护数据。文章保护 Amazon S3 中数据的十大最佳安全实践讲解了最基本的技术。这些技术包括:在组织级别阻止可公开访问的 S3 存储桶,使用存储桶策略验证授予的所有访问权限是否都受到限制且针对特定产品或服务,以及对数据进行加密和保护。

    静态数据加密

    在加密方面,AWS Key Management Service (AWS KMS) 允许您创建和管理用于对数据进行加密或数字签名的密钥。如果您想在 AWS 上加密数据,可选择以下几种方法。第一种方法是使用具有 Amazon S3 托管式加密密钥的服务器端加密 (SSE-S3)。若使用此方法,系统会在数据发送到 AWS 后使用由 AWS 托管的密钥进行加密。

    第二种方法是在数据进入 AWS 后对其进行加密,但您可以不使用由 AWS 创建和管理的密钥,而是使用存储在 AWS KMS 中的客户主密钥 (CMK) 执行服务器端加密 (SSE-KMS)。

    在 AWS 上存储加密数据的第三种方法是使用客户端加密。若使用此方法,数据会在传输到 AWS 之前进行加密。

    以下示例图片展示了客户端加密和服务器端加密具体如何使客户受益。

    虚拟私有网络 (VPN)

    VPN 涵盖多种技术。VPN 背后的理念是保持数据在传输过程中的完整性,并使之可以在通信双方之间进行安全交换。AWS 提供多种技术来确保数据传输的安全性。其中之一是 AWS PrivateLink,可提供 VPC、AWS 服务和您的本地网络之间的加密私有连接。同时,它避免了将流量暴露在公共互联网上。这也可视为一种虚拟私有网络。

    然而大多数情况下,VPN 方面的讨论都围绕着数据加密的使用。根据具体情况,您可能需要在客户端和您的 AWS 云资源之间提供加密功能。这种情况就需要使用 AWS Client VPN。另一方面,您也可能需要在数据中心或分支机构与您的 AWS 资源之间传输数据。为实现这一目标,您可以在您的本地资源和我们的 Amazon VPC 或 AWS Transit Gateway 之间使用 IPsec 隧道。这种安全连接被称为 Site-to-Site VPN

    最后,使用 AWS 管理控制台管理云资源也能实现加密数据传输。虽然您通常不会将与控制台的连接称为 VPN,但您的会话要使用 TLS(传输层安全)加密。因此,当您构建安全架构时,系统会对您的配置严格保密。TLS 还可以与 AWS API 一起使用。

  • 在确保上述每个方面都安全后,监控环境中发生的情况就有必要了。这有助于识别威胁并主动采取行动减小其影响。

    洞悉流量

    AWS 提供了多项托管服务以协助您监控环境,同时还提供了自助服务选项。例如,您可以使用 VPC 流日志来记录和查看网络流量,或者使用 Amazon CloudWatch 来分析 AWS WAF 日志,甚至是为 EC2 实例创建警报。您可以在该研讨会中了解更多关于 Amazon CloudWatch 的内容。

    洞悉账户活动

    此外,AWS CloudTrail 可监控并记录您 AWS 基础设施上的账户活动,使您对存储、分析和修复措施拥有控制权。这对于创建管理审计跟踪记录、识别安全事件以及对操作问题进行故障排除至关重要。

    检测威胁

    最后,Amazon GuardDuty 可用于威胁检测,它甚至还可以通过让已发现的威胁在您的 AWS 环境中启动自动修复措施来采取进一步行动。

    通过解决这些业务领域中的每一个问题,您就可以顺利地为云环境建立起基本的安全功能。

此页内容对您是否有帮助?