资源治理:权限、配额与费用
验证:未记录
- 适用版本
- 未记录
- 验证范围
- 尚未登记验证记录。
接手 Project 时先做只读盘点。
推荐做法#
- dev/staging/prod 按 Project 与数据权限隔离;人员通过 Group / federation 管理。
- 资源标记 owner、env、cost_center;定期检查公网入口、SA key 和无人使用资源。
- 成本按 Billing export / SKU 定位,配额按服务和 Region 分别查。
常用操作#
替换为实际资源;本段不依赖 lab.env。
PROJECT_ID='REPLACE_PROJECT_ID'
gcloud asset search-all-resources --scope="projects/$PROJECT_ID"
gcloud projects get-iam-policy "$PROJECT_ID"
gcloud services list --enabled --project="$PROJECT_ID"容易踩的坑#
Budget 是通知,不是费用硬上限。 即使设置告警,资源仍可能继续计费;账单导出与资产索引还有延迟,不能用“尚未显示”判断无费用或无资源。
- Project policy 不包含完整继承/子资源授权;labels 也不等于 IAM tags。
配置说明与完整示例(按需展开)
补齐“能创建资源”到“能接手项目”的差距。资源清单、有效权限、成本、配额必须一起看;预算不是消费硬上限。
资源盘点#
前置:环境篇,Cloud Asset Viewer、Service Usage Viewer 与 Compute Viewer;启用 API 另需管理员。
source lab.env
gcloud services enable cloudasset.googleapis.com
gcloud asset search-all-resources --scope="projects/$PROJECT_ID" --format='table(assetType,displayName,location,name)'
gcloud asset search-all-iam-policies --scope="projects/$PROJECT_ID" --query='policy:allUsers' --format=json
gcloud compute project-info describe --project="$PROJECT_ID" --format='yaml(quotas)'
gcloud compute regions describe "$REGION" --format='yaml(quotas)'验收:找到至少一个运行资源和一个公开授权(若做了公共静态桶),解释为何存在。Asset Inventory 支持的资源类型与更新时间有边界;“没搜到”不能直接证明不存在。资产查询
Compute 配额输出只覆盖部分配额。Console → IAM & Admin → Quotas & System Limits 按服务/地域筛选 Cloud Run、GKE、SQL 等,区分可申请提高的配额与不可调系统限制。RESOURCE_EXHAUSTED 不一定是权限不足。
成本分析#
- Console → Billing → Billing export → BigQuery export,启用 Standard usage 导出到专用数据集;需要 Cloud Billing account 与数据集两侧权限。
- 选择支持的 location;首次数据到达有延迟,历史回填范围也有限。
- 在 BigQuery 把下面表路径与项目 ID 替换为实际值,先 dry run 再查询:
SELECT
service.description AS service,
currency,
ROUND(SUM(cost), 2) AS cost_before_credits,
ROUND(SUM(cost + IFNULL((SELECT SUM(c.amount) FROM UNNEST(credits) c), 0)), 2) AS net_cost
FROM `BILLING_PROJECT.BILLING_DATASET.gcp_billing_export_v1_ACCOUNT_SUFFIX`
WHERE usage_start_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
AND project.id = 'YOUR_LAB_PROJECT'
GROUP BY service, currency
ORDER BY net_cost DESC;按 currency 分组,避免不同货币相加;抵扣项通常为负数。用服务与 SKU 找到来源,再回查资源。不是所有费用都有单独的资源 ID,不能强行做到逐资源精确归因。标准账单导出
企业权限与环境边界#
| 检查 | 合格结果 |
|---|---|
| dev/staging/prod | 项目、数据和部署权限分离 |
| 人的权限 | Google Group / 联合员工身份,离职可统一撤权 |
| Organization Policy | 清楚哪些是从 Folder / Organization 继承的限制,实验不解除公司策略 |
| SA key | 优先无密钥身份;可解释每把遗留 key 的用途和轮换计划 |
| 标签 | owner、env、cost_center 可追踪;labels 与 IAM Resource Manager tags 不等价 |
| 紧急访问 | 有时限、审批与审计;不是所有人常驻 Owner |
清理:保留必要财务记录。若导出只为本实验,先关闭该导出再按保留要求删除专用数据集;不要删共享账单数据集。资源清单查询本身无需清理。