您的位置:首页 > 娱乐 > 明星 > 免费高清图片素材网_外贸卖货哪个平台好_可以直接进入的舆情网站_新闻头条今日要闻

免费高清图片素材网_外贸卖货哪个平台好_可以直接进入的舆情网站_新闻头条今日要闻

2025/6/29 13:20:02 来源:https://blog.csdn.net/weixin_52179956/article/details/144476038  浏览:    关键词:免费高清图片素材网_外贸卖货哪个平台好_可以直接进入的舆情网站_新闻头条今日要闻
免费高清图片素材网_外贸卖货哪个平台好_可以直接进入的舆情网站_新闻头条今日要闻

本文介绍了 VPC 服务控制的试运行模式。

什么是 VPC Service Controls

VPC Service Controls 是 Google Cloud(以前称为 GCP)的一项安全功能。它通过设置一个被称为 边界 的逻辑围栏,防止从内部到外部和从外部到内部的双向意外访问,从而增强对 Google 云各种服务 API 的安全保护。

详情说明如下另请参见

  • VPC Service Controls 解说

试运行模式

试运行模式(试运行配置) 是指在 Google Cloud 上对资源和服务进行评估时,虚拟地应用设定的边界以检查其影响的一种模式。

如果不经过评估就直接应用这些边界,可能会因为潜在的问题而引发意外的访问拒绝等问题。

因此,在使用 VPC Service Controls 功能时,通过试运行模式对边界设置进行适当的评估,然后再将其应用于实际环境,是一种更为稳妥的做法。

  • 参考:服务边界的试运行模式

试运行模式的工作原理

设置为试运行模式的边界是虚拟应用的,因此实际访问并不会被阻止。

然而,在 Cloud Logging 中会记录这些日志。因此,管理员可以通过查看记录的日志来识别并解决潜在的问题,从而将边界设置调整到正确的状态。

  • 参考:试运行模式的优势

试运行模式

概要

构成

在此部分中,我们将通过一个案例来解释如何通过干运行模式(dry run mode)对边界设置进行评估。

假设存在一个用于存储验证项目日志的 BigQuery 数据集,在这种情况下,我们将评估边界设置是否允许来自特定 IP 地址的访问。

设定项目

上述配置使用以下服务

#服务设置目的
1VPC 服务控制边界(Perimeter)周边根据访问条件保护 BigQuery API
2访问上下文管理器访问级别(访问条件)定义上下文(此处为访问源的 IP 地址)

Access Context Manager 访问上下文管理器

访问上下文管理器是 BeyondCorp Enterprise 零信任安全组件之一。它可以定义背景信息(上下文),如设备信息、账户信息和连接状态,这些信息可以与 VPC 服务控件关联。

  • 参考:访问上下文管理器概述
  • 参考:访问级别

设置

权限

要进行以下设置操作,需要按照官方文档为 principal 分配IAM角色。

  • 参考:通过IAM进行访问控制

访问级别

通过访问级别设置,使用Access Context Manager根据特定的IP地址来控制对边界内的BigQuery的访问。

访问级别设置示例

配置方法可参考如下所述的官方文档:

  • 参考:创建基本访问权限级别

边界(试运行模式)

接下来,我们将从 VPC Service Controls 中以干运行模式设置边界。

请按照以下图片所示,在选择试运行模式标签的情况下,点击新建边界

在这里插入图片描述

边界(试运行模式)配置示例

配置方法参考如下所述的官方文档:

  • 参考:创建服务边界

实例解说

评估过程

在完成试运行模式下的边界设置后,我们将按照以下流程对设置进行评估:

  1. 检查是否存在错误日志;
  2. 查看日志中的 metadata.violationReason 字段,以确定错误的原因并进一步核实详细信息;
  3. 再次确认日志、边界设置和访问级别,以定位可疑部分并进行修正。

实例1

日志检查

首先,我们将通过日志确认是否存在错误。

访问 BigQuery 后,我们将在 Cloud Logging 的日志浏览器中执行以下查询,以检查错误日志。

如果如图所示记录了错误日志,则我们将进一步确定其原因。

  • 参考:确定被阻止的请求

错误原因的确认

以下是实际的错误日志。(项目ID等值已做部分处理)

从第46行的 metadata.violationReason(错误原因)可以看出,其记录的内容为 NO_MATCHING_ACCESS_LEVEL

{"protoPayload": {"@type": "type.googleapis.com/google.cloud.audit.AuditLog","status": {"code": 7,"message": "(Dry Run Mode) Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: 9eFMI2pfYddKGBxQtFGub4I66MZpMSBV0li3aN0EkyYmGOiL6T0-Sg","details": [{"@type": "type.googleapis.com/google.rpc.PreconditionFailure","violations": [{"type": "VPC_SERVICE_CONTROLS","description": "9eFMI2pfYddKGBxQtFGub4I66MZpMSBV0li3aN0EkyYmGOiL6T0-Sg"}]}]},"authenticationInfo": {"principalEmail": "yu...i@g-...p"},"requestMetadata": {"callerIp": "2.3.4.5","requestAttributes": {},"destinationAttributes": {}},"serviceName": "bigquery.googleapis.com","methodName": "bigquery.datasets.get","resourceName": "projects/111111111111","metadata": {"securityPolicyInfo": {"organizationId": "333333333333","servicePerimeterName": "accessPolicies/596827900003/servicePerimeters/test"},"@type": "type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata","vpcServiceControlsUniqueId": "9eFMI2pfYddKGBxQtFGub4I66MZpMSBV0li3aN0EkyYmGOiL6T0-Sg","ingressViolations": [{"targetResource": "projects/111111111111","servicePerimeter": "accessPolicies/596827900003/servicePerimeters/test","targetResourcePermissions": ["bigquery.datasets.get"]}],"violationReason": "NO_MATCHING_ACCESS_LEVEL","dryRun": true,"intermediateServices": ["bigquery.googleapis.com"],"deviceState": "Unknown","resourceNames": ["projects/111111111111/datasets/logdestination"]}},"insertId": "4fwkn7d1pqp","resource": {"type": "audited_resource","labels": {"project_id": "yutakei-test-prj","method": "bigquery.datasets.get","service": "bigquery.googleapis.com"}},"timestamp": "2024-01-30T13:05:14.094591814Z","severity": "ERROR","logName": "projects/yutakei-test-prj/logs/cloudaudit.googleapis.com%2Fpolicy","receiveTimestamp": "2024-01-30T13:05:14.915645252Z"
}

详细确认

根据以下官方指南,NO_MATCHING_ACCESS_LEVEL 是这样描述的。

如果 IP 地址、设备要求或用户身份与分配给边界的任何入站流量规则或访问权限级别都不匹配,就会出现此问题。

例如,与审核记录的 callerIp 字段对应的 IP 地址与服务边界的访问权限级别中定义的任何 CIDR 范围都不匹配。

  • 参考:调试被 VPC Service Controls 阻止的请求

理解与应对

再次查看日志后发现,第23行的 callerIp(呼叫源IP地址)为 2.3.4.5

因此,可以认为这个错误是由“访问级别中定义的IP地址与呼叫源IP地址不匹配”导致的(即访问级别的设置有误)。所以,我们将对相应的设置进行修正以解决此问题。

实例2

日志检查

我们将再次检查是否有错误。这次记录的错误与之前的不同。

错误原因的确认

以下是实际的错误日志内容(项目ID等值已做部分处理):

虽然metadata.violationReason仍为NO_MATCHING_ACCESS_LEVEL(访问级别不匹配),但其他字段中显示出不同的特征。

{"protoPayload": {"@type": "type.googleapis.com/google.cloud.audit.AuditLog","status": {"code": 7,"message": "(Dry Run Mode) Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: RmvvqAujYKJhXMxPzN-bkSzBmHGRHuIXUXvLuvR8Gbh_ZZYCtEFOlQ","details": [{"@type": "type.googleapis.com/google.rpc.PreconditionFailure","violations": [{"type": "VPC_SERVICE_CONTROLS","description": "RmvvqAujYKJhXMxPzN-bkSzBmHGRHuIXUXvLuvR8Gbh_ZZYCtEFOlQ"}]}]},"authenticationInfo": {"principalEmail": "service-222222222222@gcp-sa-logging.iam.gserviceaccount.com"},"requestMetadata": {"callerIp": "private","requestAttributes": {},"destinationAttributes": {}},"serviceName": "bigquery.googleapis.com","methodName": "google.cloud.bigquery.v2.TableDataService.InsertAll","resourceName": "projects/111111111111","metadata": {"@type": "type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata","ingressViolations": [{"servicePerimeter": "accessPolicies/596827900003/servicePerimeters/test","targetResource": "projects/111111111111"}],"dryRun": true,"resourceNames": ["test-prj","projects/222222222222"],"securityPolicyInfo": {"servicePerimeterName": "accessPolicies/596827900003/servicePerimeters/test","organizationId": "333333333333"},"vpcServiceControlsUniqueId": "RmvvqAujYKJhXMxPzN-bkSzBmHGRHuIXUXvLuvR8Gbh_ZZYCtEFOlQ","violationReason": "NO_MATCHING_ACCESS_LEVEL","deviceState": "Unknown"}},"insertId": "3vwwvwd2hpq","resource": {"type": "audited_resource","labels": {"service": "bigquery.googleapis.com","method": "google.cloud.bigquery.v2.TableDataService.InsertAll","project_id": "yutakei-test-prj"}},"timestamp": "2024-02-20T13:09:17.367737498Z","severity": "ERROR","logName": "projects/test-prj/logs/cloudaudit.googleapis.com%2Fpolicy","receiveTimestamp": "2024-02-20T13:09:18.644856847Z"
}

详细确认 之一

检查第20行的 principalEmail(调用方账户的邮箱),我们发现这是一个 服务账号,而不是一个普通的 Google 账号。

服务账号的邮件地址格式为 “项目ID前缀+@+服务名称后缀”

由此可以推测出, projects/2222222222222 中的某个日志同步功能,正在访问 projects/111111111111 的 BigQuery API”

  • 参考:写入ID(日志同步的服务账号)

详细确认 之二

VPC 服务控制中包含有故障排查工具。

通过在第47行的 vpcServiceControlsUniqueId(每个违规行为所附带的唯一标识符)中记录的ID,输入到VPC服务控制的故障排查工具中,可以实现对错误原因的可视化分析。

  • 参考:访问VPC服务控制中的故障排查工具

也可通过故障排除工具进行分析。

根据其他项目的设置,可以推测这些项目已经配置了日志sink,正在向本项目的BigQuery API导出日志数据。

理解和应对

根据以往的结果,在评估过程中发现最初的构架是不充分的,因此我们将根据实际情况调整边界设定。

通过添加上行(内向)策略的规则并保存设置,可以实现这一点。

这样,在入站方向上,其他项目的服务账户就能够访问本项目边界内的 BigQuery API。

  • 参考:上行(内向)规则参考文档
#属性项目设定值
1来源ID其他项目的日志同步服务账号
2来源所有源
3目标项目本项目
4目标服务BigQuery API (所有方法)

服务改进后,所有的错误日志都消除了

结语

VPC 服务控制在增强安全性的同时,也可能在不知不觉中引入潜在的缺陷,从而影响服务。

在应用之前,建议使用干运行模式来评估设置,并提前确认其对实际服务的影响。

希望本文能为 VPC 服务控制的正确使用提供一些帮助。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com