PCI 数据安全标准合规性

本指南可帮助您了解如何在 Google Cloud Platform (GCP) 上为您的企业实现支付卡行业数据安全标准 (PCI DSS)。本指南超出了 PCI SSC 云计算指南 (PDF) 的主题,提供了该标准的相关背景信息,介绍了您在云端合规性方面的角色,然后为您提供了如何使用 PCI DSS 设计、部署和配置付款处理应用的指南。该教程还详细阐述了监控、记录和验证应用的方法。

PCI 安全标准委员会建立的 PCI 数据安全标准是针对处理支付卡(信用卡借记卡)信息的企业的信息安全标准。此 PCI 安全标准委员会由各大支付卡公司组成。接受 Visa、MasterCard、Discover、American Express 或 JCB 的企业都应遵守 PCI DSS,否则可能会遭到罚款或处罚。

PCI DSS 针对从亲自收集付款信息的商家到全部外包付款处理工作的商家等多个商家类型提供了不同的数据安全标准类别。本指南将论述 SAQ A、SAQ A-EP 和 SAQ D 商家类型。

目标

  • 审核付款处理应用架构。
  • 设置付款处理环境。
  • 部署和配置应用服务器。
  • 设置日志记录和监控。
  • 验证付款处理环境。

定义

本指南会使用许多独特的词组。下面是其中几个最常见的词组。如需了解详情,请参阅 PCI DSS 术语库

CDE:持卡人数据环境的首字母缩写词。该首字母缩写词是指应用中持有或传输支付帐号或持卡人个人身份信息等持卡人数据的部分。

补偿性控制:既能满足原始要求的目的和严谨性又能提供类似防御级别的任何指定要求的替代解决方案。根据官方定义,补偿性控制必须“高于和超过”其他 PCI DSS 要求,并且必须与未遵守原始要求所带来的额外风险相匹配。

PAN:主帐号的首字母缩写词,也称为帐号。它是可确定发卡机构和持卡人帐号的唯一支付卡卡号。

QSA:合格安全评估机构的首字母缩写词。QSA 经过 PCI 安全标准委员会 (SSC) 认证后才有资格进行 PCI DSS 现场评估。如需详细了解关于 QSA 企业和员工的要求,请参阅 QSA 资质要求

SAQ:自我评估问卷的首字母缩写词,是用于记录实体 PCI DSS 评估的自我评估结果的报告工具。

范围:PCI DSS 评估中包含的系统、程序和人员。

令牌化:将主帐号 (PAN) 替换成名为令牌的代理值的过程。然后,在安全查询中存储 PAN。去令牌化是指按照令牌查找 PAN 的逆向过程。令牌可能是哈希或分配值

背景

PCI DSS 提供了一系列旨在增强持卡人安全性的要求。这些要求分为十二个带有编号的主要部分和许多子部分。本文档引用这些部分编号来添加背景信息,但本节参考文件并未全面列出所有适用要求。

您的 PCI DSS 合规性要求取决于您公司处理支付卡交易(类型)的方式和您公司每年执行的交易数量(级别)。

随着交易数量增加,您的 PCI DSS 商家级别会提高,PCI DSS 合规性指南也会变得更加严格。在最高的商家级别 1 级中,PCI DSS 需要进行审查。级别因卡的品牌而异。American Express 将 1 级定义为每年 250 万笔交易,而 Visa、Mastercard 和 Discover 为每年 600 万笔交易。每个品牌都有超出本文档范围的额外级别要求,因此请确保审查您的付款处理环境以支持您的商家级别。

由于 GCP 是 1 级 PCI DSS 3.2 合规服务提供商,因此无论您公司的商家为何级别,它都可以支持您的 PCI DSS 合规性需求。致力于合规性部分列出了 Google 将为您提供哪些方面的帮助。

另一个基本变量是您的 SAQ 类型。SAQ 概述了您要遵守 PCI DSS 而必须达到的标准。您的 SAQ 类型取决于您的应用架构和您处理支付卡数据的具体方式。云中的大多数商家都在以下类型中:

SAQ 类型 说明
A 已将支付卡处理工作完全外包给第三方网站的商家。客户离开您的域名(包括通过 <iframe> 网页表单),完成付款,然后返回到您的应用。

换句话说,您的公司不会以任何方式接触客户的卡数据。
A-EP 将付款处理工作外包给第三方提供商,但可以在流程中随时访问客户卡数据的商家。可以访问卡数据的商家包括商家控制的页面元素,包括第三方付款页面中嵌入的 JavaScript 或 CSS。

换句话说,您的付款处理应用会将卡数据转发给客户端的处理方,或处理方呈现您托管的任何内容。
D 接受在线付款且未满足 SAQ A 或 SAQ A-EP 资格的商家。此类型包括从自己的服务器调用支付处理方 API 的所有商家(无论是否令牌化)。

换句话说,如果您不是 SAQ A 或 SAQ A-EP,那么您就是 SAQ D。

SAQ D 对商家服务提供商有所区别。本文档不讨论服务提供商,所有提到 SAQ D 的地方都是指 PCI DSS 中定义的商家。
SAQ 要求的维恩图。SAQ A-EP 是 SAQ A 的一个超集,SAQ D 是 SAQ A-EP 的一个超集。
SAQ 要求的维恩图。SAQ A-EP 是 SAQ A 的一个超集,SAQ D 是 SAQ A-EP 的一个超集。

商家可以是任何级别和类型的组合体,您的合规性要求将因您的具体情况而产生较大差异。

致力于合规性

Google 使用各种各样的技术和流程保护存储在 Google 服务器上的信息。Google 独立验证适用于 Google 管理的 GCP 技术和基础架构的 PCI DSS 要求。虽然 Google 让商家可以极大地控制其在 Google 基础架构上运行的计算实例,但 Google 无法控制商家在 GCP 上部署的操作系统、软件包或应用的安全性。除了架构所需的其他自定义外,您还有责任遵守对您所部署的操作系统软件包和应用的 PCI DSS 要求。

GCP 遵循为 1 级服务提供商制定的 PCI DSS 要求以及所有适用的服务提供商要求。GCP 客户责任矩阵概述了 PCI DSS 的合规性义务。当您追求 PCI DSS 合规性,执行自己的 PCI DSS 审查时,责任矩阵可以作为有用的参考。

产品指南

App Engine

App Engine 入站防火墙规则可用,但出站规则目前不可用。根据要求 1.2.1 和 1.3.4,您必须确保所有出站流量都经过授权。SAQ A-EP 和 SAQ D 类型商家必须提供补偿性控制,或者使用另一种不同的 GCP 产品。Compute Engine 和 GKE 是首选替代方案。

Cloud Functions

与 App Engine 类似,Cloud Functions 目前不支持出站防火墙规则。SAQ A-EP 和 SAQ D 类型的商家必须提供补偿性控制,或者使用其他 GCP 产品。 Compute EngineGKE 是首选替代方案。

Google Kubernetes Engine

处理 GKE 集群中节点和 pod 的方式与任何商家托管的服务器相同。在节点和 pod 级别,实现日志记录、检测和修补。请勿在节点级别保存持卡人数据,但是,如果节点包含或可能包含任何范围内的 pod,则它们仍将在范围内。

要限制对集群主服务器的访问,请使用已授权网络阻止来自 GCP 外部的不受信任的 IP 地址。这些 CIDR 规则与专用集群兼容并充当白名单。

当您在范围内的项目包含不同类型的 pod 时,请在 GKE 集群中实现网络政策。网络政策的工作原理类似于您可能熟悉的虚拟私有云 (VPC) 防火墙。您可以根据 IP 规则或标签准许或拒绝流量。

要求 2.2.1 规定每个服务器只能实现一个主要功能。此要求不禁止单个 GKE 集群托管超过一个 pod 类型的情况。GKE 节点的主要功能是服务和托管容器。如果设计合理,单个 pod 也可以在单个集群中遵循此主要功能规则。

Cloud Storage

要求 3.4 规定 PAN 不论存储在什么地方都必须是不可读的。虽然 Google 会自动进行静态加密,但它不会自动执行规则另外要求的单向哈希、截断或令牌化。

示例架构

本节说明了实现遵守 SAQ A、SAQ A-EP 和 SAQ D 的环境的方法。

架构概览

SAQ A

SAQ A 是最基本的付款处理架构。付款由第三方处理,商家应用或页面不会访问任何卡数据。

概括来讲,付款处理流程如下:

  1. 客户做出选择,然后结账。

  2. 结算应用将客户重定向到第三方付款处理方。

  3. 客户将其支付卡信息输入到第三方处理方拥有和维护的支付表单中。

  4. 第三方付款处理方检查支付卡信息,然后向该卡收取费用或拒绝该卡。

  5. 处理完交易后,第三方付款处理方会将客户连同交易详情一起发回给商家应用。

  6. 商家应用会给付款处理方发送验证请求以确认交易。

  7. 付款处理方作出回应,验证交易详情。

SAQ A 第三方付款处理环境的架构

SAQ A-EP

SAQ A-EP 付款处理架构以在 Compute Engine 虚拟机实例上运行的付款处理应用为中心。这些实例位于安全的专用网络中,使用安全通道与网络外部的服务通信。

概括来讲,付款处理流程如下:

  1. 客户将其支付卡信息输入到您公司拥有和维护的支付表单中。

  2. 当客户提交信息时,表单信息会被安全地传递给第三方付款处理方。

  3. 第三方付款处理方检查支付卡信息,然后向该卡收取费用或拒绝该卡。

  4. 付款处理方会给您的付款应用返回响应,然后付款应用会将一则信息传递给您的核心应用。

Stackdriver LoggingStackdriver Monitoring 会记录和监控所有的这些交互操作。

SAQ A-EP 付款处理环境的架构
SAQ A-EP 付款处理环境的架构

SAQ D

SAQ D 付款处理架构以在 Compute Engine 虚拟机实例上运行的付款处理应用为中心。这些实例位于安全的专用网络中,使用安全通道与网络外部的服务通信。

概括来讲,付款处理流程如下:

  1. 客户将其支付卡信息输入到您公司拥有和维护的支付表单中。

  2. 当客户提交信息时,您的付款应用会收到表单信息。

  3. 您的付款应用会验证付款信息,并通过后端 API 安全地将其传递给第三方付款处理方。

  4. 第三方付款处理方检查支付卡信息,然后向该卡收取费用或拒绝该卡。

  5. 付款处理方会给您的付款应用返回响应,然后付款应用会将一则信息传递给您的核心应用。

LoggingMonitoring 会记录和监控所有的这些交互操作。

SAQ D 付款处理环境的架构
SAQ D 付款处理环境的架构

付款处理面向客户的流程

SAQ A

本节将从使用您应用的客户角度介绍第三方付款处理流程。

面向客户的 SAQ A 第三方付款处理流程
面向客户的 SAQ A 第三方付款处理流程

当您的客户访问您的付款表单时,该应用会显示付款处理方托管的 <iframe>。由于存在跨源资源共享限制,因此您的应用无法访问或监控 <iframe> 的内容。当客户提交支付卡信息时,付款处理方会接受或拒绝该卡,然后引导客户回到您的应用。接着,您的应用会检查来自付款处理方的交易响应,并采取相应的行动。您的应用不能访问或处理任何支付卡信息。

SAQ A-EP

本节介绍的内部付款处理流程和上文所述的完全一样,但却是从使用您应用的客户角度出发的。

面向客户的 SAQ A-EP 第三方付款处理流程
面向客户的 SAQ A-EP 第三方付款处理流程

当您的客户访问您的付款表单网址时,网站会显示您的付款应用托管的表单。当客户提交支付卡信息时,表单会直接转到付款处理方。处理方接受或拒绝该卡,然后引导客户发回到给您的应用。接着,您的应用会检查来自付款处理方的交易响应,并采取相应的行动。客户可能不会看到第三方付款处理方,但您的应用不能访问服务器端的任何支付卡信息。

SAQ D

本节将从使用您应用的客户角度介绍内部付款处理流程。

面向客户的 SAQ D 第三方付款处理流程
面向客户的 SAQ D 第三方付款处理流程

当您的客户访问您的付款表单网址时,会通过 HTTPS 负载平衡器安全地将他们路由到表单。当客户提交支付卡信息时,您的付款处理应用会安全地将信息发送给第三方付款处理方。第三方付款处理方接受或拒绝该卡,然后向您的付款处理应用返回响应。

付款处理内部流程

SAQ A 和 A-EP

本节将从运行您应用的服务器角度介绍付款处理流程。

SAQ A 和 SAQ A-EP 内部流程
SAQ A 和 SAQ A-EP 内部流程

您的付款处理应用接收并解析第三方付款处理方返回的响应,然后将部分或全部的响应数据发送给核心应用。此时,您的付款处理应用不再需要涉入该交易。核心应用会处理通知客户的任务。

SAQ D

本节将从运行您应用的服务器角度介绍内部付款处理流程。

SAQ D 内部流程
SAQ D 内部流程

您的付款处理应用会验证客户提交的支付卡信息,然后通过后端 API 将其发送到付款处理方。处理方会尝试扣款,并返回交易详情。您的应用会接收处理该响应,然后将部分或全部的响应数据发送给核心应用。此时,您的付款处理应用不再需要涉入该交易。核心应用会处理通知客户和交付产品的任务。

监视和记录数据流

监控和日志记录流程的设计如下:

监控和日志记录流程
监控和日志记录流程

设置付款处理环境

本节介绍了如何设置您的付款处理环境。设置包括以下操作:

  • 创建新的 GCP 帐号,将您的付款处理环境与生产环境相隔离。
  • 限制对环境的访问权限。
  • 设置您的虚拟资源。
  • 设计您设置应用服务器时要使用的基础 Linux 映像。
  • 实现安全的软件包管理解决方案。

设置新帐号

要简化访问限制和合规性审核,请创建一个完全与标准生产环境和任何开发/质量检查环境(要求 6.4.1)隔离的生产级质量付款处理环境。要确保隔离,请创建和使用一个独立于核心生产环境帐号的 GCP 帐号。熟悉 Cloud Identity and Access Management (Cloud IAM) 配置的用户可以将不同项目用于范围中的工作,完成同等效力的隔离。

限制对环境的访问权限

只允许部署支付系统代码或管理支付系统计算机的个人访问付款处理环境(第 7.1 节和要求 8.1.1)。这被称为最小权限原则。使用 Cloud IAM 角色限制访问。最佳做法包括尽可能使用角色、仅授予执行预期工作所需的权限,以及仅将所有者角色授予有合理原因需要对您的服务有全部根目录访问权限的成员。如需了解详情,请参阅 Cloud IAM 安全指南

对任何托管式服务的自动访问,应取决于服务帐号。服务帐号通过为您提供一种管理应用身份验证和授权的方式,简化应用管理生命周期。这些帐号为您提供一种灵活却安全的方法,来将具有共同标识且带有类似应用和功能的虚拟机实例分成一组。您可以通过 Cloud IAM 角色和 VPC 防火墙规则执行服务帐号级别的安全和访问控制。

您应用于文件夹的 Cloud IAM 规则由该文件夹中包含的所有项目继承。默认权限为拒绝所有(要求 7.2.3),您应用的每个规则仅添加权限。

要求 8.2.3 为用户密码提供了一些基本规则。美国国家标准与技术研究院 (NIST) 在 NIST SP800-63B 的第 5.1.1 节中为安全密码定义了一组更加安全的规则。Google 建议尽可能遵守 NIST 数字身份准则。

PCI DSS SAQ D 第 12.7 节要求可访问您范围中环境的个人先通过背景调查,遵守当地法律,然后才能获得访问环境的权限。要降低违规风险,无论您属于哪种合规类型,请考虑对每个人进行这些犯罪背景调查和证明人调查。

保护您的网络

要保护进出您的付款处理应用网络的入站和出站流量,您需要创建以下各项:

  • Compute Engine 防火墙规则
  • Compute Engine 虚拟专用网 (VPN) 隧道
  • Compute Engine HTTPS 负载平衡器

为了创建您的 VPC,我们推荐使用 Cloud NAT(测试版)作为额外的网络安全层。有许多强大的选项可用于保护 Compute Engine 和 GKE 实例的网络。

创建防火墙规则

使用防火墙规则限制每个 Compute Engine 实例的入站流量(要求 1.2.1 和 1.3.2)。仅允许来自以下三个来源的入站流量:

  • 公共 HTTPS,便于客户访问您的付款页面。
  • 您的应用网络,便于您的付款处理应用接收第三方付款处理方的响应。
  • 您的内部办公网络,便于您访问实例进行审核和管理。

使用单个实例的防火墙规则限制出站流量。您可以使用 iptables 或者使用 VPC 防火墙规则和网络标记在本地实现这些规则。仅允许出站流量从您的付款表单传送至第三方付款处理方。此连接仅限 HTTPS。请参阅下面的“防火墙规则日志记录”部分以测试您的工作。

Cloud DNS 提供专用 DNS 地区,因此您可以安全地在 CDE 中命名主机,而不会将敏感的网络拓扑数据泄露给公众。

流量限制如下:

来源 目标 端口 方向和原因
公共负载平衡器 第三方付款表单 tcp:443 入站
公开访问付款处理应用
第三方付款表单 第三方付款处理方 tcp:443 出站
将身份验证请求转发给支付服务提供商
第三方付款处理方 您的付款处理应用 tcp:5480 入站
接受支付系统的身份验证请求(不包含任何持卡人数据)
您公司的办公网络 vpn 网关 tcp:8000 入站
访问付款处理环境,以访问日志和开发计算机

此外,以下流量出现在您的付款处理应用内部网络中是安全的:

来源 目标 端口 原因
卡表单 PCI 代理 tcp:5480 交换加密卡数据以获取付款方式令牌
所有主机 Google NTP 服务器 udp:123 时间同步
VPN 网关 所有主机 tcp:22 Secure Shell (SSH) 连接

建立安全的 VPN 隧道

Compute Engine 提供 VPN 服务,您可以使用此服务在本地环境和付款处理环境之间建立一个安全的 VPN 隧道(第 2.3 节和第 4.1 节)。

创建 HTTPS 负载平衡器

您可以创建 Compute Engine HTTP(S) 负载平衡器,帮助确保传入客户流量的安全(第 2.3 节和第 4.1 节)。要创建 HTTPS 负载平衡器,您需要以下各项:

  • 用于付款处理表单的网站的子网域,例如 payments.your-domain-name.com
  • 已为子网域注册有效的签名 SSL 证书。

通过在您的网络注册商域名配置界面查看 DNS 设置,以确保您的域名是有效的。

创建基础 Linux 映像

PCI DSS 中包含的要求介绍了如何设置合规付款处理架构中的计算机。您可以通过多种方式实现这些要求,但最简单的方法如下:

  1. 创建必须在符合付款处理应用要求的各个服务器上安装的软件和库的列表。为避免给系统带来不必要的风险(要求 2.2.2),该列表应仅包含您在运行应用时必不可少的软件和库。候选项可能包括 Cloud SDK、特定语言的运行时和库,或者一个网络服务器。

  2. 创建使用 Compute Engine 预配置操作系统映像之一的 Compute Engine 实例。

  3. 安装前面列出的库和软件。

  4. 安装和配置 ntp 以确保系统时钟同步。使用网络时间协议管理服务器时钟,确保日志中时间戳的完整性(第 10.4 节)。

  5. 确保映像遵循创建安全 Compute Engine 映像的最佳做法(第 2.2 节所有部分)。

  6. 配置基础映像后,从您的映像创建自定义 Compute Engine 磁盘映像。在您创建虚拟机实例时,此映像允许您使用基础 Linux 映像。

使用安全的软件包管理

软件包管理是安全强化托管环境的一个关键组件。根据第 2.2 节所述,您必须实现行业认可的安全强化标准。除非您使用 Google 的容器优化型操作系统,否则您可能需要安装软件包管理器(如 RPM、Yum 或 Apt)。您的应用可能使用其专属的特定编程语言软件包管理器(如 NPM、PyPi 或 Composer),并在首次运行时下载依赖项。

如果您的应用可以从互联网上获取更新,您必须将更新源视为潜在的安全风险。目前,公开托管软件包中恶意包含的供应方或上游攻击正在变得越来越常见。因此,不难想象安装包含恶意代码的 SSH 更新会有怎样的后果。

您可以为软件包创建一个安全收件人列表,并验证软件包是否与该列表匹配,以此降低供应方攻击的风险。为使用的各个软件包保留一份经过测试和批准的版本号列表。记录版本号以及其哈希或签名。确保软件包管理器在安装或更新应用之前,验证哈希或签名。

大多数软件包管理系统都允许进行私有托管。如果可能,请启动您的专属私有软件包管理服务器,并且仅托管经过测试和批准的软件。锁定软件包管理器,使其不能联系其他服务器以进行更新。

理想情况下,您的应用构建过程会提取和验证所有软件包,然后创建包含容器所需一切的自定义磁盘映像的修订版本。这样,您的服务器启动和扩大规模时,安装程序就不会延迟,并且启动时出现随机错误的可能性也会降低。您还可以只启动应用映像,重新访问以前生产环境中使用的任何版本的应用,这可能对诊断和取证非常有用。

部署和配置

接下来,以您的基础映像为基础,设置实例的部署和配置。

部署您的环境

要满足 PCI DSS 要求,请确保您每次都部署正确的应用,安全地部署应用,以及在部署期间不安装任何其他软件包。要简化部署过程,请考虑使用 Cloud Deployment Manager 为您的应用创建自动部署。

通过 Deployment Manager,您可以描述整个付款处理环境,包括其防火墙规则、网关、负载平衡器和实例。Deployment Manager 还可以帮助您构建一个审计跟踪,以显示各个应用环境的创建方式,并允许您在改进和修改这些应用时命名环境的版本。

在自动部署中,不论要部署的软件是来自第三方还是属于您自己的,您都必须验证其完整性。安装软件包时,您可以对各个软件包运行自动哈希来验证您的软件。验证哈希后,您可以使用自动测试框架运行安全性和其他方面的测试,以及验证测试是否已通过。

最后,部署 Compute Engine 实例时,请设计一个恢复计划,以防实例发生故障。如果可接受的停机时段足够长,手动恢复计划可能就足够了;如果不够长,您必须设计一个自动恢复计划。如需指导,请参阅灾难恢复规划指南设计可靠系统以及构建可扩缩的弹性 Web 应用

配置您的环境

实例部署后,请确保正确配置实例。根据需要,在每个实例基础映像上安装额外软件和库。为避免因手动配置造成的复杂性、开销和总体风险,请使用自动配置管理工具,如 SkaffoldChefPuppetAnsibleSalt

针对上游源的供应链攻击越来越令人担忧,因此除使用基础 Linux 映像之外,您可能还要使用 Grafeas API 等工具来审核上游代码。

实施 Forseti Security

Forseti Security 是一个社区驱动的开源工具集合,可帮助您提高 GCP 环境的安全性。它的模块化架构允许您启用单个组件,其中一些组件可以满足 PCI DSS 中的特定要求。

Inventory 会创建 GCP 资源的库存快照,以便您拥有架构的历史记录。

Scanner 使用 Forseti Inventory 收集的信息定期比较 GCP 资源的基于角色的访问政策。Scanner 应用规则来审核 GCP 资源,如下所示:

  • 组织、文件夹和项目的 Cloud Identity and Access Management (Cloud IAM) 政策
  • 存储分区 ACL
  • BigQuery 数据集 ACL
  • Cloud SQL 授权网络

使用 Scanner,您可以指定资源中允许、强制或排除的用户、群组和域,并且可以确保这些访问政策保持一致。如果 Scanner 发现任何与其规则不匹配的访问政策,则可以将有关这些规则违规行为的信息保存到 Cloud SQL 或 Cloud Storage。这有助于避免不安全或意外的更改。

Enforcer 使用您创建的政策将 Compute Engine 防火墙的当前状态与指定状态进行比较。Enforcer 是一种按需命令行工具,可以在批处理模式下比较所有托管项目或选定项目的政策。如果 Enforcer 发现任何政策差异,它将使用 GCP API 进行更改并显示结果的输出。

Explain 附加模块可帮助您了解 Cloud IAM 政策。Explain 可以帮助您了解:

  • 谁有权访问哪些资源以及该用户能如何与该资源互动。
  • 为什么主帐号对资源拥有权限,或者为什么他们没有权限以及如何修复这个问题。
  • 哪些角色授予权限,以及哪些角色与最近的更改不同步。

配置完成后,电子邮件通知可以为 Inventory 和 Scanner 发送电子邮件通知。

实现不可变的审核日志记录

Stackdriver 会自动为跨多种产品的各种活动生成审核日志。从长远来看,您可以使用 Cloud Storage 存储分区锁安全地存储不可变的日志(第 10.5 节)。通过存储分区锁,您可以设置政策让所有对象在您指定的一段时间内(从几秒到几年)都不可变且不能删除。如果您需要访问抢先体验版程序,请联系您的 GCP 代表。

实现虚拟私有云流日志

VPC 流日志服务旨在记录虚拟机实例发送或收到的网络流。您可以将这些日志用于网络监控(第 10.2 节)、取证(要求 10.6.3)和实时安全分析。

安装 Logging 代理

您在专属服务器上设置 iptables 后,各个服务器都会将每项活动记录到服务器的 块存储。如需详细了解免费配额和数据传输价格,请查看 Stackdriver 价格页面。要保留这些日志并根据异常活动生成提醒,请通过在每台服务器上安装 Logging 代理,将日志和提醒流式传输到日志记录和监控(要求 10.5.3)。

集成入侵检测系统

要帮助确保第 11.4 节中所述的付款处理环境的安全性,请使用入侵检测系统 (IDS),以便了解不法分子试图攻击系统的时间。在付款处理环境中设置 IDS 的方式有两种,包括在每个入口点设置 IDS 或在每台服务器上安装 IDS。

要降低环境架构的复杂性和简化遵守 11.5 规定的程序,请在每台服务器上安装一个 IDS。您在研究并选择了要使用的 IDS 软件后,请将 IDS 安装设置为每台服务器的启动安装脚本的一部分。

IDS 日志属于 PCI DSS 合规的范围,必须发送给日志记录和监控进行报告、提醒和审核。

实现 Cloud Security Command Center

Cloud SCC(测试版)服务可帮助安全团队收集数据、识别并应对威胁,让企业免遭损害或损失。它还提供针对应用和数据风险的深度洞见,便于您迅速缓解对云资源的威胁和评估整体运行状况。借助 Cloud SCC,您可以从一个集中式信息中心同时查看并监控您的云资产库、扫描存储系统中是否存在敏感数据、检测常见网络漏洞,并审核对您关键资源的访问权限。它还可以帮助您遵守多项要求,包括第 5 节和第 6.6 节的要求。

实现应用部署自动化

构建配置管理工具,安全地检索和启动最新版本的应用。只要您的应用位于安全的地点,就可以从任何地点(如 Cloud Storage)进行检索。

上文提到的许多配置管理工具都支持持续集成和部署 (CI/CD) 工作流,还可用于执行自动扫描(要求 11.2.3)和确保审核代码(要求 6.3.2)。

获取配置管理器日志

设置配置管理器时,请确保其记录所有安装详细信息。完成配置过程后,请确保其将日志传递给日志记录和监控。

日志记录和监控

要确保第 10 节下的 PCI DSS 合规性,请确保监控和记录您在付款处理环境中采取的每一个步骤。必须记录每个实例上的每一项服务器活动,而且必须能在日后检查每个用户操作。

启用 Access Transparency

通过名为 Access Transparency 的功能,Stackdriver 现在可在 GCP 管理员访问您的内容时提供近乎实时的日志。借助 Cloud Audit Logs,您可以查看贵组织管理员的操作。但是,此审计跟踪通常不包括您的云服务商的支持团队或工程团队执行的操作。例如,在提供 Access Transparency 日志记录之前,如果您使用 Google 支持开启了需要数据访问权限的工单,它将不会反映在 Cloud Audit Logs 中。Access Transparency 功能弥补了这一缺陷,可以近乎实时地记录支持或工程人员有针对性的人工访问日志。

Google 最近发布了 Access Approval。(Access Approval 正处于抢先体验发布阶段。)虽然 Access Transparency 可让您了解 Google 支持和工程部门的访问,但 Access Approval 允许您在此访问之前明确批准对 GCP 上数据或配置的访问。如需了解详情并请求抢先体验,请参阅链接页面。

启用 Firewall Rules Logging

Firewall Rules Logging 允许您在单个规则级层启用日志记录。它可以记录您自己创建的任何规则的 VPC 内的 TCP 和 UDP 连接。这些对于审核网络访问或提供未经批准的网络使用方式的早期警告非常有用。

使用 VPC Service Controls

VPC Service Controls(测试版)让您可以定义围绕 Google Cloud Platform 资源(如 Cloud Storage 存储分区、Cloud Bigtable 实例和 BigQuery 数据集)的安全边界,以便将数据限制在某个 VPC 的范围内并帮助降低数据渗漏风险(要求 1.2.1 和 1.3.4)。借助 VPC Service Controls,您可以在利用 Google Cloud Platform 的完全托管存储和数据处理功能时,保持敏感数据的隐私。如需了解详情,请求抢先体验

设置 VPC 流日志

已启用 VPC 流日志的持卡人数据环境
已启用 VPC 流日志的 CDE

VPC 流日志会记录虚拟机实例发送和接收的网络流量流。这些日志在 PCI DSS 下非常有用,可用于监控、审核、取证和实时安全分析。每个 VPC 网络子网都可以独立启用或停用流日志。您可以仅在范围内的 CDE 中启用流日志,以尽量减少日志数据量。

通过流日志再加上出站防火墙规则,您能够以可审核和难以规避的方式将出站流量限制到授权端点(要求 1.2.1 和 1.3.4)。

如果您需要比流日志更加详细的数据(如单个 HTTP 请求日志记录),您可以在应用或代理出站请求中实现控制。您可通过配置自己的逆转代理服务器,将访问日志转发给 Stackdriver 来实现这一点。有关如何在 Compute Engine 上设置 Squid 代理服务器的说明,请参阅设置网络代理。要避免出现瓶颈,请设置至少两个冗余代理服务器。

记录内部访问数据

除记录外部威胁之外,还请监控和记录对您的付款处理环境具有管理员访问权限的个人的活动(第 10.2 节)。要实现这一点,您可以记录 shell 命令。目前,有些开源工具可以审核 shell 命令,并将其发送到日志记录。适合这项任务的热门工具包括 OSSECTripwire

设置监控提醒

如果您的付款处理环境出现问题,请配置监控以发送提醒(第 10.6 节)。确保您的提醒涵盖环境、审核和内部应用事件。您的提醒策略要基于您的付款处理应用各个组件的潜在风险或攻击途径。例如,如果您的 IDS 检测到任何入侵尝试,则不论入侵尝试是否成功,都会触发 Monitoring 提醒。您还可以使用 Firewall Rules Logging 来触发提醒,对违反特定网络政策的尝试作出响应。

将日志流式传输到 BigQuery

Stackdriver 将日志流式传输给 Cloud Storage 和 BigQuery
Stackdriver 将日志流式传输给 Cloud Storage 和 BigQuery

作为选项,您可以将 Stackdriver 日志导出到 BigQuery 供日后分析之用。由于 BigQuery 经过优化可查询大型数据集,因此它是大规模日志分析的理想工具。Stackdriver 甚至还可以将日志直接记录到 BigQuery,供需要进行近乎实时分析的日志使用(要求 10.6.1)。

使用 Cloud Data Loss Prevention 清理数据

有很多原因需要使用您的范围内应用所包含的一部分本身不在范围内的数据,如用于分析或开发目的。但仅在使用 Cloud Data Loss Prevention 清理 PCI 数据之后,才可授予应用访问这些数据的权限(要求 6.4.3)。

应用安全性

要帮助保护应用,您首先需要评估管理接口。您还可能要使用 Cloud Key Management Service。

评估管理接口

大多数电子商务应用都有专属非控制台管理接口,如客户服务结算门户。此类工具必须具有强大的访问权限控制机制,必须具有使用多因素身份验证的单个访问权限(第 8.3 节),还必须使用审核日志进行检测(第 10.2 节)。

您创建的任何日志都应回答以下问题:哪些人做了哪些事情?他们在什么地方做的事情?他们什么时候做的事情?根据第 2.3 节的规定,对此类工具的所有访问都必须使用高强度的传输加密。在任何管理工具中显示敏感信息之前,请使用 Cloud Data Loss Prevention 过滤敏感信息。

使用 Cloud Key Management Service (Cloud KMS)

Cloud KMS 是口令的一个托管式存储系统。它可以生成、使用、轮替和销毁 AES-256 加密密钥。它还可以存储和管理长度高达 64 KB 的其他口令。Cloud KMS 允许您移除代码或配置文件中存储的密码,这简化了遵守要求 3.5、3.6、6.3.1 和 8.2 节规定的程序。

验证您的环境

实现您的环境后,但在任何生产流量通过该环境之前,您必须验证该环境:

  • 如果您是 1 级商家,则您的环境必须经过合格安全评估机构 (QSA) 的验证。QSA 是指经过 PCI 安全标准委员批准可验证 PCI 环境并盖章批准通过的公司或个人。
  • 如果您是 2 级或更低级别的商家,您可以填写自我评估问卷来验证自己的环境。

后续步骤