0Pricing
Cloud & IT Cert Prep · 课时

云身份:IAM 角色与服务账户

在云平台中配置遵循最小权限原则的 IAM 角色和服务账户,并避免通配符权限和长期有效密钥等常见错误。

云身份:IAM 角色与服务账户 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。

云身份基础

在云环境中,身份就是新的边界。每个操作——启动 VM、读取数据库、调用 API——都根据调用方身份进行授权。云 IAM(身份和访问管理)系统定义了谁可以对哪些资源执行什么操作。与网络位置能够提供隐式信任的本地部署环境不同,云 IAM 会将每个请求都视为需要明确授权,无论请求来自何处。

AWS IAM 中的用户、组和角色

AWS IAM 有三种主要身份类型。IAM Users代表拥有长期凭据(访问密钥 + 私密密钥)的个人或应用。IAM Groups用于将用户归组并分配共享权限。IAM Roles是拥有临时凭据的身份,用户、AWS 服务(EC2、Lambda)或其他账户都可以通过 AssumeRole 使用它们。与长期访问密钥相比,角色更受推荐,因为其凭据会自动过期,从而降低凭据暴露风险。

# IAM role trust policy — allows EC2 to assume this role
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': { 'Service': 'ec2.amazonaws.com' },
    'Action': 'sts:AssumeRole'
  }]
}

# EC2 instance with this role attached can call AWS APIs
# using temporary credentials from the instance metadata service

IAM policy 中的最小权限

IAM policy 定义身份可以对哪些资源执行哪些操作。最小权限原则要求 policy 仅授予完成任务所需的具体操作。常见违规情况包括:对操作使用 * 通配符(授予某项服务中的所有操作)、对资源使用 *(授予对所有资源的访问权限),以及将 AdministratorAccess 等范围过大的托管 policy 附加到服务账户。每个通配符都应有充分理由,并接受定期审查。

# Overly permissive policy (AVOID)
{
  'Effect': 'Allow',
  'Action': 's3:*',      # all S3 actions
  'Resource': '*'         # all buckets
}

# Least-privilege policy (PREFERRED)
{
  'Effect': 'Allow',
  'Action': ['s3:GetObject', 's3:ListBucket'],
  'Resource': [
    'arn:aws:s3:::my-specific-bucket',
    'arn:aws:s3:::my-specific-bucket/*'
  ]
}

GCP 中的服务账号

在谷歌云平台(GCP)中,非人类工作负载使用服务账号进行身份验证——服务账号是由系统管理的身份实体,配有 JSON 密钥文件或 Workload Identity Federation。每个服务账号都应遵循最小权限原则:仅将其绑定到它需要调用的 GCP 服务。服务账号密钥(从控制台下载的 JSON 文件)是长期有效的凭据,必须像密码一样对待——定期轮换,绝不能提交到源代码中或上传到公开代码仓库。

# Check service account permissions (gcloud)
gcloud projects get-iam-policy my-project \
  --flatten='bindings[].members' \
  --format='table(bindings.role, bindings.members)' \
  --filter='bindings.members:serviceAccount'

# Prefer Workload Identity over service account keys
# (no downloadable key files — uses workload federation tokens)

Azure 托管身份

Azure 托管身份(以前称为 MSI)相当于 AWS 中供服务使用的 IAM 角色——它们允许 Azure 资源(VM、应用服务、函数)向 Azure API 进行身份验证,而无需存储凭据。托管身份有两种类型:系统分配的托管身份与特定资源绑定,并会在该资源被删除时一并删除。用户分配的托管身份是可以在多个资源之间共享的独立对象。托管身份消除了存储任何密钥或机密的需求。

# Azure CLI — assign managed identity to a VM
az vm identity assign \
  --name myVM \
  --resource-group myRG \
  --identities /subscriptions/.../userAssignedIdentities/myIdentity

# The VM can now call Azure Key Vault without any stored credentials:
# Token is fetched automatically from the Instance Metadata Service

长期有效的凭据:风险

长期有效的凭据——永不过期的静态访问密钥、API 令牌和服务账号密钥文件——是云环境中风险最高的因素之一。如果这些凭据通过 GitHub、S3 存储桶、日志或被入侵的开发人员笔记本电脑泄露,就会立即授予访问权限,直到有人手动撤销为止。组织应执行以下措施:审计所有长期有效的凭据,按计划轮换凭据,优先采用基于角色或联合身份的访问方式以生成短期令牌,并在凭据出现在公开代码仓库中时立即发出警报。

# Find IAM access keys older than 90 days (AWS)
aws iam generate-credential-report
aws iam get-credential-report --query 'Content' --output text | \
  base64 -d | grep -v 'N/A' | \
  awk -F',' '$10 > 90 {print $1, $10}'

# Keys older than 90 days should be rotated or deleted

IAM 角色链与权限提升

当某个身份利用一组权限为自身授予额外权限时,就会发生 IAM 权限提升。典型的提升路径包括:为自己的用户附加权限更宽松的策略,创建具有提升权限的新 IAM 用户,将角色(iam:PassRole)传递给某项服务,以及更新 Lambda 函数的执行角色。AWS 的 IAM Access Analyzer 可以检测这些模式,而 IAM 权限边界则可以严格限制任何身份最多能够获得的权限。

# Dangerous permission combination (enables privilege escalation):
# iam:CreatePolicyVersion + iam:SetDefaultPolicyVersion
# Attacker can create a new policy version with AdministratorAccess

# Or: iam:PassRole + lambda:CreateFunction + lambda:InvokeFunction
# Attacker creates Lambda with a privileged role, invokes it

# Defense: permission boundaries limit maximum grantable permissions

跨账号角色承担

云组织通常使用多个账号(开发、预发布、生产、安全)作为爆炸半径边界。跨账号角色承担允许一个账号中的身份承担另一个账号中的角色,从而让集中式工具能够跨账号运行。安全控制措施包括:在信任策略中要求提供 External ID,以防止混淆代理攻击;通过 Principal ARN 限制可以承担角色的账号;以及在 CloudTrail 中记录所有跨账号角色承担操作,以便审计。

# Trust policy with External ID (confused deputy protection)
{
  'Effect': 'Allow',
  'Principal': { 'AWS': 'arn:aws:iam::PARTNER-ACCOUNT-ID:root' },
  'Action': 'sts:AssumeRole',
  'Condition': {
    'StringEquals': {
      'sts:ExternalId': 'unique-shared-secret-12345'
    }
  }
}

IMDS 与元数据服务安全

AWS EC2 实例可以从 实例元数据服务(IMDS)获取其 IAM 角色凭据,地址为 http://169.254.169.254。SSRF 漏洞类型在这里尤其危险:如果应用容易受到 SSRF 攻击,攻击者就可以让服务器从 IMDS URL 获取数据,从而窃取实例的 IAM 角色凭据。IMDSv2(要求使用会话令牌)可以缓解基于 SSRF 的凭据窃取,所有 EC2 实例都应强制使用 IMDSv2。

# Enforce IMDSv2 on a new EC2 instance (requires token for IMDS)
aws ec2 run-instances \
  --metadata-options 'HttpTokens=required,HttpEndpoint=enabled' \
  ...

# IMDSv1 (insecure) just needs a GET request:
# curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
# IMDSv2 requires a PUT to get a session token first

IAM Access Analyzer 与策略审查

IAM Access Analyzer(AWS)会自动识别与外部主体共享的资源,以及授予超出预期权限的 IAM 策略。它会分析存储桶策略、角色信任策略和 KMS 密钥策略,并标记并非明确预期的外部访问。定期审查 IAM 策略——无论是手动审查,还是使用 Cloudsplaining、PMapper 或 Permissions Boundary Analyzer 等工具——对于在攻击者发现权限提升路径之前识别这些路径至关重要。

Workload Identity 联邦

Workload Identity Federation允许外部工作负载(GitHub Actions、本地系统和其他云提供商)使用短期 OIDC 令牌向云 IAM 进行身份验证,而不是使用长期有效的服务账号密钥。GitHub Actions 工作流可以在作业持续期间使用其 OIDC 令牌承担 AWS IAM 角色,作业结束后令牌即会过期。这种方式消除了 CI/CD 流水线中长期有效凭据泄露这一整类风险。

快速检查

测试您对本课 CompTIA Security+(SY0-701)相关概念的理解。

课程回顾

本课您学习了以下内容:对于云工作负载,IAM 角色能够提供临时凭据,因此优于长期有效的访问密钥;最小权限策略应避免使用通配符,只针对特定资源授予特定操作权限;以及IMDSv2、权限边界和工作负载身份联合可以消除常见的凭据暴露路径。接下来,我们将探讨 Cloud Security Posture Management(CSPM)。

常见问题解答

「云身份:IAM 角色与服务账户」课时是免费的吗?

是的 — 「云身份:IAM 角色与服务账户」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。

「云身份:IAM 角色与服务账户」这节课中我会学到什么?

在云平台中配置遵循最小权限原则的 IAM 角色和服务账户,并避免通配符权限和长期有效密钥等常见错误。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cloud & IT Cert Prep 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「云身份:IAM 角色与服务账户」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?

能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 共同责任模型:IaaS、PaaS、SaaS
  2. 云存储安全与数据暴露风险
  3. 云身份:IAM 角色与服务账户
  4. 云安全态势管理(CSPM)
← 返回 Cloud & IT Cert Prep