| name | implementing-google-workspace-admin-security |
| description | 实施全面的 Google Workspace 安全加固,包括管理控制台 配置、抗钓鱼 MFA 强制执行、DLP 策略、电子邮件认证 (SPF/DKIM/DMARC)、OAuth 应用控制和外部共享限制。 适用于 Google Workspace 加固、G Suite 安全配置 或云办公安全管理相关请求。
|
| domain | cybersecurity |
| subdomain | identity-access-management |
| tags | ["Google-Workspace","admin-security","MFA","DMARC","DLP","OAuth","cloud-security"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
实施 Google Workspace 管理员安全
适用场景
- 为企业使用部署或加固 Google Workspace 环境
- Google Workspace 配置的 CIS 基准合规性评估
- 防范针对 Google 账户的商业电子邮件欺诈(BEC)和网络钓鱼攻击
- 为 Gmail 和 Google Drive 实施数据丢失防护(DLP)控制
- 限制 OAuth 应用访问和第三方集成
- 使用高级保护计划注册配置管理员账户安全
不适用于 Microsoft 365 环境;Google Workspace 有独特的管理控制台设置和 API 配置,与 Azure AD/Entra ID 控制有所不同。
前置条件
- Google Workspace Business Plus、Enterprise Standard 或 Enterprise Plus 许可证
- 对 Google 管理控制台(admin.google.com)的超级管理员访问权限
- 用于 SPF、DKIM 和 DMARC 记录配置的 DNS 管理权限
- 用于高级安全功能的 Google Cloud Identity 或 Cloud Identity Premium
- 超级管理员账户使用 FIDO2 安全密钥(推荐 YubiKey 5 系列)
工作流程
步骤 1:加固超级管理员账户
保护 Google Workspace 租户中最高权限的账户:
gam print admins role "Super Admin" > super_admins.csv
echo "审查并最小化超级管理员数量(推荐:最多 2-3 个)"
gam update user superadmin@corp.com \
advanced_protection true
gam create user breakglass-admin@corp.com \
firstname "Break" lastname "Glass Admin" \
password "$(openssl rand -base64 32)" \
changepassword true \
org "/Emergency Accounts"
gam create admin breakglass-admin@corp.com "Super Admin"
cat > admin_alert_policy.json << 'EOF'
{
"alertPolicies": [
{
"name": "超级管理员登录告警",
"conditions": {
"eventType": "login",
"filterCriteria": "actor.adminRole=SUPER_ADMIN"
},
"notifications": {
"email": ["security-team@corp.com"],
"webhook": "https://siem.corp.com/webhook/google-admin"
}
},
{
"name": "管理员角色变更告警",
"conditions": {
"eventType":
},
: {
: []
}
}
]
}
EOF
步骤 2:强制执行抗钓鱼多因素认证
配置消除可钓鱼认证因素的 MFA 策略:
gam update org "/" settings \
2sv_enforcement true \
2sv_enrollment_grace_period 14 \
2sv_new_user_enrollment_period 1
gam update org "/Executive" settings \
2sv_allowed_methods "SECURITY_KEY_ONLY"
gam update org "/" settings \
2sv_allowed_methods "SECURITY_KEY,PHONE_PROMPT" \
2sv_disallowed_methods "SMS,VOICE_CALL,BACKUP_CODES"
gam print users \
fields primaryEmail,isEnrolledIn2Sv,isEnforcedIn2Sv \
query "isEnrolledIn2Sv=false" > users_without_2sv.csv
echo "未注册 2SV 的用户:"
wc -l < users_without_2sv.csv
cat > context_aware_policy.json << 'EOF'
{
"accessLevels": [
{
"name": "需要托管设备",
"conditions": {
"devicePolicy": {
"requireScreenLock": true,
"requireAdminApproval": true,
"allowedEncryptionStatuses": ["ENCRYPTED"],
"requireCorpOwned": false
},
"requiredAccessLevels": ["VERIFIED_2SV"]
}
}
],
"applicationPolicies": [
{
"applications": [, , ],
:
}
]
}
EOF
步骤 3:配置电子邮件认证和反钓鱼
设置 SPF、DKIM、DMARC 和高级钓鱼保护:
echo 'SPF 的 DNS TXT 记录:'
echo 'corp.com TXT "v=spf1 include:_spf.google.com ~all"'
echo ''
echo '测试后,将 ~all 改为 -all(硬失败)以强制执行'
gam create dkim domain corp.com selector google bitlength 2048
echo '添加 DKIM DNS TXT 记录:'
echo 'google._domainkey.corp.com TXT "v=DKIM1; k=rsa; p=<管理控制台中的公钥>"'
gam info dkim domain corp.com
echo 'DMARC 的 DNS TXT 记录(从监控开始):'
echo '_dmarc.corp.com TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@corp.com; ruf=mailto:dmarc-forensics@corp.com; pct=100; adkim=s; aspf=s"'
echo ''
echo '监控 30 天后,升级为隔离再到拒绝:'
echo '_dmarc.corp.com TXT "v=DMARC1; p=reject; rua=mailto:dmarc-reports@corp.com; pct=100; adkim=s; aspf=s"'
gam update settings email_safety \
protect_against_domain_spoofing true \
protect_against_employee_spoofing true \
protect_against_inbound_spoofing true \
protect_unauthenticated_email true \
identify_spoofed_groups true \
auto_move_suspicious_to_spam true
gam update settings email_safety \
protect_encrypted_attachments true \
protect_anomalous_attachment_types true \
protect_scripts_from_untrusted \
whitelist_sender_domains \
apply_future_recommended_settings
步骤 4:实施数据丢失防护(DLP)
配置 DLP 规则以防止敏感数据泄露:
cat > dlp_rules.json << 'EOF'
{
"dlpRules": [
{
"name": "PII 检测 - 社会安全号",
"description": "检测外发邮件和 Drive 共享中的社会安全号",
"trigger": {
"contentMatchers": [
{
"infoType": "US_SOCIAL_SECURITY_NUMBER",
"likelihood": "LIKELY",
"minMatchCount": 1
}
],
"scope": ["GMAIL_OUTBOUND", "DRIVE_EXTERNAL_SHARE"]
},
"action": {
"blockAction": "QUARANTINE",
"notifyAdmin": true,
"notifyUser": true,
"userMessage": "此邮件包含社会安全号,已被隔离等待审查。",
"auditLog": true
}
},
{
"name": "信用卡号检测",
"description": "阻止外发通信中的信用卡号",
"trigger": {
"contentMatchers": [
{
"infoType": "CREDIT_CARD_NUMBER",
"likelihood": "LIKELY",
"minMatchCount": 1
}
],
"scope": ["GMAIL_OUTBOUND", "DRIVE_EXTERNAL_SHARE", "CHAT"]
},
"action": {
: ,
: ,
: ,
:
}
},
{
: ,
: ,
: {
: [
{
: ,
: 2
}
],
: [
{
: [, ]
}
],
: []
},
: {
: ,
: ,
:
}
}
]
}
EOF
步骤 5:控制 OAuth 应用和第三方访问
限制哪些第三方应用可以访问组织数据:
gam update org "/" settings \
third_party_app_access "BLOCKED" \
allow_users_to_install_apps false
cat > approved_apps.json << 'EOF'
{
"allowedApps": [
{
"appId": "slack-app-id",
"name": "Slack",
"scopes": ["gmail.readonly", "calendar.readonly"],
"approvedBy": "security-team",
"reviewDate": "2026-01-15"
},
{
"appId": "zoom-app-id",
"name": "Zoom",
"scopes": ["calendar.events"],
"approvedBy": "security-team",
"reviewDate": "2026-01-15"
},
{
"appId": "salesforce-app-id",
"name": "Salesforce",
"scopes": ["gmail.send", "contacts.readonly"],
"approvedBy": "security-team",
"reviewDate": "2026-01-15"
}
]
}
EOF
gam all users print tokens > oauth_tokens_audit.csv
echo "审查 oauth_tokens_audit.csv 以发现未授权的第三方访问"
gam all deprovision tokens \
clientid
gam update org settings \
api_access_restricted \
allowed_api_scopes
步骤 6:配置外部共享和 Drive 安全
锁定数据共享控制:
gam update org "/" settings \
drive_sharing_outside_domain "WHITELISTED_DOMAINS" \
drive_sharing_whitelisted_domains "partner1.com,partner2.com" \
drive_allow_file_requests false \
drive_shared_drive_creation "ADMIN_ONLY" \
drive_default_link_sharing "RESTRICTED"
gam create alert \
name "外部共享告警" \
type "drive_external_share" \
condition "shared_outside_domain=true AND file_type IN ('spreadsheet','document','presentation')" \
action "notify_admin security-team@corp.com"
gam all users print filelist \
fields id,name,owners,permissions \
query "visibility='anyoneWithLink' or visibility='anyoneCanFind'" \
> external_shares_audit.csv
echo "需要审查的外部共享:"
wc -l < external_shares_audit.csv
gam update org "/" settings \
groups_external_members false \
groups_external_posting false \
groups_creation "ADMIN_ONLY" \
groups_allow_external_invitations false
核心概念
| 术语 | 定义 |
|---|
| 高级保护计划(APP) | Google 最强大的账户安全,要求使用 FIDO2 安全密钥、阻止第三方应用访问,以及增强的账户恢复身份验证 |
| 上下文感知访问 | 在授予访问 Google Workspace 应用程序之前评估设备状态、位置和用户身份的安全策略框架 |
| DMARC | 基于域的消息认证、报告和合规协议,通过验证 SPF 和 DKIM 对齐来防止电子邮件域欺骗 |
| DLP 规则 | 扫描 Gmail、Drive 和 Chat 中内容以查找敏感数据模式,并触发阻止、隔离或警告操作的数据丢失防护策略 |
| OAuth 应用白名单 | 管理员控制,限制哪些第三方应用可以通过 Google OAuth API 范围访问组织数据 |
| 两步验证(2SV) | Google 的多因素认证实现,支持安全密钥、手机提示、TOTP 和备份码作为第二因素 |
工具与系统
- Google 管理控制台:用于管理所有 Google Workspace 安全设置、用户和组织单元的基于 Web 的管理门户
- GAM(Google Apps Manager):用于批量 Google Workspace 管理和自动化的开源命令行工具
- Google Workspace 告警中心:安全告警的集中仪表板,包括可疑登录活动、DLP 违规和设备入侵
- Google BeyondCorp Enterprise:与 Google Workspace 集成的零信任访问解决方案,用于上下文感知访问策略
常见场景
场景:保护新收购的 Google Workspace 租户
背景:收购后安全审计发现,被收购公司的 Google Workspace 没有 MFA 强制执行,外部共享开放,没有 DLP 策略,多个未授权的 OAuth 应用正在访问用户数据。
处理方式:
- 立即使用 FIDO2 安全密钥为所有超级管理员账户强制执行 2SV
- 将超级管理员数量减少到 3 个(主要、备用、紧急访问)
- 从监控模式(p=none)开始部署 SPF、DKIM 和 DMARC
- 在电子邮件安全中启用所有反钓鱼和反欺骗设置
- 审计并撤销所有未授权的 OAuth 应用令牌
- 将第三方应用访问设置为阻止,并制定已批准应用的白名单
- 将外部 Drive 共享限制为仅限已批准的合作伙伴域
- 为 PII、财务数据和机密文档部署 DLP 规则
- 启用上下文感知访问,对敏感应用要求托管设备
- 配置安全告警和 SIEM 集成以进行持续监控
注意事项:
- 在没有注册宽限期的情况下强制执行 MFA 会将用户锁定在账户之外
- 在监控期之前将 DMARC 设置为拒绝会导致合法邮件递送失败
- 在不识别业务关键集成的情况下阻止所有 OAuth 应用会中断工作流程
- 在限制共享之前未审计现有外部共享会使数据暴露在外
输出格式
GOOGLE WORKSPACE 安全评估报告
=============================================
租户: corp.com
许可证: Enterprise Plus
用户总数: 3,847
组织单元: 12
认证安全
2SV 已强制执行: 是(所有 OU)
2SV 注册: 3,712 / 3,847 (96.5%)
仅限安全密钥: 执行 OU(47 位用户)
高级保护: 3 个超级管理员账户
超级管理员数量: 3(在推荐范围内)
电子邮件认证
SPF: 已配置(硬失败:-all)
DKIM: 已配置(2048 位,选择器:google)
DMARC: 已强制执行(p=reject,100%)
反钓鱼: 所有保护已启用
反欺骗: 已启用(域 + 员工姓名)
数据保护
DLP 规则活跃: 7
PII 检测: SSN、信用卡、护照
内容标签: 机密、受限
自定义模式: 3 条组织特定规则
DLP 违规(30 天):89(67 已阻止,22 已警告)
应用控制
第三方应用策略: 已阻止(白名单模式)
已批准应用: 12
未授权令牌: 0(全部已撤销)
API 范围限制: 已启用
共享控制
外部共享: 受限(仅限白名单域)
公共链接共享: 已禁用
外部组成员: 已禁用
共享驱动器创建: 仅限管理员