说明:本文针对 GCP asia-east1(台湾)区域分配的静态外网 IP(通常称原生 IP)做权限与审计实操指南。
先决条件:已开通项目、启用 Compute Engine API 与 Cloud Logging API、具备项目 Owner 或 IAM 权限以创建角色与日志导出。
工具:建议使用 gcloud CLI(版本最新)、Cloud Console,以及有权限的管理账号或 service account。
控制台步骤:导航到 VPC 网络 > 外部 IP 地址 > 点击“预留静态地址” > 选择“区域”填 asia-east1 > 填写名称并保存。
gcloud 示例:gcloud compute addresses create my-tw-ip --region=asia-east1 --description="TW static ip for service"。
确认:gcloud compute addresses describe my-tw-ip --region=asia-east1 或在控制台查看分配的 IP。
新建 VM 时绑定:gcloud compute instances create my-vm --zone=asia-east1-a --address=MY_RESERVED_IP (或在控制台创建时选择外部 IP)。
已有实例绑定:先删除旧的 access config 再添加指定地址:gcloud compute instances delete-access-config VM --access-config-name "external-nat" --zone ZONE && gcloud compute instances add-access-config VM --address=MY_RESERVED_IP --zone ZONE。
负载均衡器:在创建或编辑转发规则时选择“静态外部 IP”,选取你预留的 IP。
所需内置角色示例:roles/compute.addressAdmin(管理地址)、roles/compute.instancesAdmin.v1(对实例的有限操作)、roles/iam.serviceAccountUser(代表 service account)。
绑定命令示例:gcloud projects add-iam-policy-binding PROJECT_ID --member="user:dev@example.com" --role="roles/compute.addressAdmin"。
自定义角色建议:创建仅包含 compute.addresses.get/list/create/delete 与 compute.instances.use 权限的自定义角色,通过 Cloud Console 或 gcloud iam roles create 并下放给运维/自动化账户。
开启 Audit Logs:默认 Admin Activity 打开;需要 Data Access 日志时,在组织或项目的“审计日志”设置中开启 Data Access(注意:Data Access 日志可能产量大,按需开启)。
启用 VPC Flow Logs:进入 VPC 网络 > 子网 > 编辑子网 > 勾选“启用流日志”,或使用 gcloud:gcloud compute networks subnets update SUBNET --region=asia-east1 --enable-flow-logs。
确认日志可见:到 Logs Explorer,使用过滤器 resource.type="gce_instance" 或 "gce_subnetwork" 查看流量与 Audit 记录。
创建导出 Sink:gcloud logging sinks create sink-name bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET --log-filter='resource.type="gce_instance"',创建后给 sink 的服务账户赋予写入目标(例如 BigQuery Data Editor)。
日志指标与告警:在 Logging > Logs-based metrics 创建计数或分布式指标;在 Cloud Monitoring 中基于该日志指标创建告警策略(阈值、通知渠道)。
长期保存与合规:将关键审计日志同时导出到 Cloud Storage(归档)与 BigQuery(分析),并设置适当的保留期与访问控制。
答:先确认账号是否被授予 compute.addressAdmin 或自定义角色包含 compute.addresses.create 权限。
排查步骤:使用 gcloud auth list 检查当前账号;查看 IAM 策略 gcloud projects get-iam-policy PROJECT_ID | grep MEMBER;检查组织策略(Organization Policy)是否禁止区域资源创建;若是 service account,确认其拥有 iam.serviceAccountUser 权限并被授予 sink/目标写入权限。
答:推荐多点导出:同时把 Audit Logs 导出到 BigQuery(分析)、Cloud Storage(归档)与 Pub/Sub(实时流)。
实践要点:为 sink 授予写入权限、设置适当保留期、启用 VPC Flow Logs、定期校验 sink 的服务帐号是否被更改或删除,并使用监控告警检测导出失败。
答:遵循最小权限原则(自定义角色)、用 service account 自动化操作并旋转密钥、为关键日志配置双重导出与告警、对敏感操作启用 IAM Conditions(条件绑定)并在变更后审计 Cloud Audit Logs。
额外建议:对公网访问做细化防火墙规则、对出口流量使用 Cloud NAT 并记录日志、将关键日志导入 SIEM 做关联分析。