View a markdown version of this page

使用私 AWS IAM Roles Anywhere 有证书进行保护 - AWS 规范指引

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用私 AWS IAM Roles Anywhere 有证书进行保护

Barnali Singh,亚马逊 Web Services

Summary

此模式演示了如何实现 w AWS IAM Roles Anywhere ith AWS 私有证书颁发机构 (AWS 私有 CA),以便为访问 AWS 资源的外部工作负载启用安全的基于证书的身份验证。该解决方案通过使用 X.509 证书获取临时 AWS 证书,无需长期访问密钥。这是一种云原生安全模式,包括通过 AWS CloudFormation 模板和 shell 脚本实现完全自动化,使组织能够为本地应用程序、 CI/CD 管道和外部系统快速部署安全的混合身份验证。

先决条件和限制

先决条件

对于AWS基础架构部署:

  • AWS CLI 已安装并配置了管理权限

  • IAM IAM Roles Anywhere、和 AWS 私有 CA 服务的管理权限

对于客户机系统设置:

  • AWS CLI使用以下权限安装在客户端系统上:

    • acm-pca:IssueCertificate

    • acm-pca:GetCertificate

  • 安装在客户端系统上的 OpenSSL

  • AWS 每个客户端系统上都安装了签名助手

  • 对 X.509 证书和 PKI 概念的基本理解

注意

CloudFormation 模板会自动处理 AWS 资源创建。只有使用证书访问 AWS 资源的外部系统才需要 OpenSSL。

限制

  • 根 CA 的证书有效期限制为最长 10 年

  • 定期轮换客户证书。我们建议您每年至少这样做一次。

  • 区域限制:信任锚点且 AWS 私有 CA 必须位于同一 AWS 区域

  • 最大证书大小:客户端证书为 16KB

产品版本

  • AWS CLI 版本 2.0 或更高版本

  • OpenSSL 1.1.1 或更高版本

  • AWS 签名助手 1.4.0 或更高版本

  • AWS 私有 CA,当前版本

  • IAM Roles Anywhere e,当前版本

架构

目标技术堆栈

• AWS 私有 CA -用于颁发证书的根 CA

• IAM Roles Anywhere - Certificate-based 角色扮演服务

• IAM 角色和策略-访问控制和权限

• AWS 签名助手- Client-side 凭证检索工具

• OpenSSL-证书和密钥生成

• CloudFormation -基础设施自动化

目标架构

图 1 基于 IAM Roles Anywhere证书的身份验证

该架构包括:

  1. 出示证书-外部系统向 X.509 AWS

  2. 身份验证- IAM Roles Anywhere 接收证书并启动身份验证

  3. 验证-Trust Anchor 根据受信任的证书颁发机构验证证书

  4. 验证- AWS 私有 CA 验证证书的真实性和状态

  5. 证书有效- AWS 私有 CA 确认证书有效且可信

  6. 代入角色- IAM Roles Anywhere 允许外部系统代入已配置的 IAM 角色

  7. 授予访问权限-外部系统会收到访问 AWS资源的临时证书

自动化和扩展

这种模式包括通过以下方式实现完全自动化:

• 具有可配置的 IAM 权限的 AWS 资源配置 CloudFormation 模板

• 用于证书生成和客户端设置的 Shell 脚本

• 多个环境的参数化配置和自定义 IAM 策略

• 为多个客户机生成批量证书

• 自动安装和配置凭证助手

Workflow (工作流程)

  1. 使用建立基于证书的身份验证所需的基础 AWS 服务。 IAM Roles Anywhere

  2. 创建和配置用于安全 AWS 访问的客户端证书和身份验证工具。

  3. 验证基于证书的身份验证功能,并对正在进行的操作进行监控。

工具

• CloudFormation -自动创建 PCA、信任锚点、IAM 角色和个人资料

• AWS CLI - AWS 服务交互 Command-line 接口

• openSSL-生成证书签名请求并管理证书

• AWS 签名助手-用证书交换临时 AWS 证书

• Bash/shell 脚本-自动完成设置过程

代码存储库

AWS IAM 角色可在任何地方使用私有证书颁发机构

最佳实践

  • 使用最小权限原则配置 IAM 策略 --iam-policies parameter

  • 定期轮换客户证书。我们建议您每年都这样做。

  • 在信任策略中使用强大的证书验证

  • 实施证书吊销程序

  • 监控证书到期日期

操作说明

Task说明所需技能

部署CloudFormation基础架构

创建并部署预置所有必要 AWS 资源的 CloudFormation 模板,包括 AWS 私有 CA Trust Anchor、具有适当策略的 IAM 角色和 IAM Roles Anywhere 配置文件。  为项目命名、证书有效期、会话持续时间和 IAM 策略附件配置参数,以建立核心基础设施基础。

云架构师、 DevOps 工程师

配置证书颁发机构设置

AWS 私有 CA 通过安装根证书、配置证书模板和建立证书信任链来初始化。设置认证所需的证书有效期、密钥算法和证书扩展名,以确保正确的 IAM Roles Anywhere PKI 基础架构。

AWS 管理员、云管理员

验证 &AWS; 资源配置

对所有已部署的 AWS资源进行全面验证,以确保正确的配置和连接。验证 Trust Anchor 是否正确关联到 AWS 私有 CA,IAM 角色具有适当的权限,配置文件配置正确,并且基于证书的身份验证工作流程的所有资源都处于 active/ready 状态。

AWS 系统管理员、测试工程师
Task说明所需技能

准备客户端环境

通过使部署脚本可执行并确保适当的权限来设置客户端环境。使用必要的工具和依赖关系配置本地系统,验证脚本的可访问性,并为证书生成和部署过程奠定基础。

DevOps 工程师,AWS 系统管理员

生成证书签名请求

使用 OpenSSL 或等效工具为客户端系统创建证书签名请求 (CSR)。配置证书参数,包括主题信息、密钥算法和证书扩展。  确保 CSR 符合 AWS 私有 CA 要求并包含用于 IAM Roles Anywhere 身份验证的相应元数据。

云管理员、 DevOps 工程师

通过以下方式颁发客户证书 AWS 私有 CA

处理 CSR AWS 私有 CA 以颁发有效的客户证书。配置证书有效期、证书模板,并确保建立正确的证书链。验证证书颁发并下载已签名的证书以进行客户端部署。

AWS 管理员、云架构师
Task说明所需技能

获取临时 AWS 证书

执行凭证帮助脚本,使用配置的客户端AWS 证书和私钥检索临时证书。验证凭证检索流程是否正常运行,验证凭证格式和到期时间,并确保与 IAM Roles Anywhere 服务正确集成,实现无缝身份验证工作流程。

DevOps 工程师,AWS 系统管理员

测试 AWS 资源访问权限

使用获得的临时证书对 AWS 资源访问进行全面测试。执行各种 AWS CLI 命令和 API 调用,以验证与 Amazon S3、Amazon EC2 和等目标服务的连接 AWS Lambda。 验证权限是否与配置的 IAM 角色策略一致,并记录成功的访问模式。

测试工程师、云端管理员

验证角色假设和权限

对 IAM 角色担任流程和权限界限进行全面验证。测试允许和受限的操作,以确认最低权限访问权限是否得到正确执行。验证会话持续时间限制、凭据刷新机制,并确保角色假设遵循安全最佳实践。

AWS 管理员、测试工程师

实施监控和日志记录

为基于证书的身份验证系统设置全面的监控和日志记录。为审计跟踪配置 CloudTrail 日志记录,实施证书过期监控,设置身份验证失败警报,并建立仪表板以跟踪整个 IAM Roles Anywhere 基础架构中的使用模式和安全事件。

DevOps 工程师、云架构师

问题排查

问题解决方案

证书验证失败- 尝试身份验证时出现 “证书验证失败InvalidCertificate” 或 “” 错误。

解决步骤:

• 使用验证证书的有效日期 

openssl x509-in certificate.pem-dates-noout

• 检查 Trust Anchor 配置是否指向正确的私有 CA

• 确保私钥与证书相对应

• 如果证书是由错误的 CA 颁发的,则重新生成证书

 IAM 权限被拒绝错误 — 尽管身份验证成功但仍访问 AWS 资源时出现 “拒绝访问” 或 “” UnauthorizedOperation

解决步骤:

• 查看并扩展 IAM 角色策略以包括必要的权限

• 验证信任策略是否将 rolesanywhere.amazonaws.com 列为可信实体

• 检查配置文件 ARN 配置是否与已部署的资源相匹配

• 为长时间运行的进程实施凭证刷新机制

相关资源

附加信息

这种模式非常适合具有混合云架构、在外部 AWS运行的 CI/CD 管道或任何需要安全 AWS 访问的外部系统的组织。与长期访问密钥相比,基于证书的方法提供了更好的安全性,并且可以通过实现集中式证书管理。 AWS 私有 CA

可配置的 IAM 权限 — 该解决方案支持通过以下方式灵活配置 IAM 策略--iam-policies parameter

  • 默认:ReadOnlyAccess用于安全的初始部署

  • 自定义:为特定用例指定以逗号分隔的策略 ARN。例如S3ReadOnlyAccessEC2ReadOnlyAccess、或自定义策略。支持多种策略以满足复杂的权限要求。

用法示例:

# Default read-only access ./deploy.sh # S3-only access ./deploy.sh --iam-policies "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess" # Multiple services ./deploy.sh --iam-policies "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess,arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess"