安全性
由 Nx Plugin for AWS 生成的项目开箱即包含多项安全控制。本页面概述了这些控制措施,并提供了更多详细信息的相关指南链接。
基础设施扫描
Section titled “基础设施扫描”基础设施项目配置了 Checkov 作为 build 目标的一部分,因此不安全的基础设施配置会导致构建失败:
- CDK 项目合成 CloudFormation 模板,这些模板由 Checkov 扫描。详见 安全测试。
- Terraform 项目直接针对您的 Terraform 代码运行 Checkov。详见 Terraform 项目。
当提供的基础设施抑制 Checkov 规则时,抑制范围限定于特定资源,并附有理由说明。共享的 suppressRules 辅助函数要求为每个抑制提供理由,我们建议您在自己的代码中遵循相同的做法。详见 抑制 Checkov 检查。
容器镜像扫描
Section titled “容器镜像扫描”构建容器镜像的项目(例如 agents、MCP servers 和数据库迁移镜像)包含一个 trivy 目标,该目标扫描镜像中的 HIGH 和 CRITICAL 漏洞,发现问题时以非零状态退出。详见 Docker 打包,包括如何使用 .trivyignore 文件抑制发现的问题。
工作空间包含 git-secrets 预提交钩子,用于扫描暂存文件中的 AWS 凭证模式,防止意外提交访问密钥和其他敏感值。详见工作空间指南的 Git Secrets 部分。
API、agents 和 MCP servers 默认使用 AWS IAM (SigV4) 身份验证:
- tRPC、FastAPI 和 Smithy API 默认使用 IAM 身份验证,并提供 Cognito 和自定义授权器作为选项。提供的自定义授权器存根默认拒绝请求。
- 部署到 Amazon Bedrock AgentCore Runtime 的 Agents 和 MCP servers 默认使用 IAM (SigV4) 身份验证,并提供基于 JWT 的 Cognito 身份验证作为选项。
- 网站身份验证生成器提供一个 Amazon Cognito 用户池,要求多因素身份验证 (MFA),具有强密码策略,并启用删除保护。
提供的基础设施对传输中和静态的数据进行加密:
- 网站通过 CloudFront 提供服务,HTTP 重定向到 HTTPS,响应头策略包括 HTTP 严格传输安全 (HSTS)、内容安全策略和其他安全头。WAF 与 AWS 托管规则关联到分发。
- S3 存储桶阻止所有公共访问,通过存储桶策略强制仅 SSL 访问,已加密(网站内容使用带密钥轮换的 KMS),并将服务器访问日志传送到使用客户管理的 KMS 密钥加密的 CloudWatch 日志组,可以使用 Logs Insights 查询并设置告警。
- API 访问日志写入使用启用了轮换的客户管理 KMS 密钥加密的 CloudWatch 日志组。
- Aurora 数据库使用客户管理的 KMS 密钥启用存储加密,在 AWS Secrets Manager 中生成凭证(从不硬编码),并支持自动凭证轮换。
提供的 CDK 构造和 Terraform 模块遵循最小权限原则:
- 构造公开
grant*方法(例如 API 和 agents 上的grantInvokeAccess,数据库上的grantConnect),以便使用者仅授予所需的访问权限。 - 提供的基础设施中的 IAM 策略限定于特定资源和操作。当 AWS 服务需要通配符资源时(例如
ecr:GetAuthorizationToken),它仅限于这些操作,并在支持的情况下使用条件进行限定。
许可生成器配置自动许可证头管理和依赖许可证检查,针对已批准许可证的允许列表进行检查,帮助您在发布前捕获有问题的传递依赖项。
安全性和合规性是共同责任。AWS 通过共同责任模型描述了这一点,该模型区分了云本身的安全性(AWS 的责任)和云中的安全性(作为客户的您的责任)。
Nx Plugin for AWS 帮助您处理该模型中您这一方的部分内容。其生成器提供安全基础,并在其生成的代码范围内编码 AWS 最佳实践 — 即上述控制措施。这减少了安全构建所需的工作量,但并不将安全性的所有权转移给插件。
**您拥有生成到工作空间中的代码,并对其安全性负责。**一旦提供,生成的代码就是您的,可以修改、扩展和操作,必须像对待您编写的任何其他代码一样对待它。
特别是:
- **插件的范围仅限于其生成器。**插件不了解您应用程序的业务逻辑、数据分类、威胁模型或监管义务,无法做出依赖于这些因素的决策。
- **身份验证已配置,但授权未配置。**API 默认受身份验证保护(例如 IAM/SigV4),但插件无法确定哪些经过身份验证的主体应被允许对哪些资源执行哪些操作。细粒度授权取决于您的业务逻辑,必须由您设计、实现和测试。
- **生成的代码是起点,而非成品。**当您添加功能时,会引入插件无法预料的安全考虑因素 — 输入验证、数据处理、密钥管理、依赖选择以及与其他系统的集成。
因此,您应该根据自己组织的安全策略、标准和审查流程审查生成的代码以及在其基础上构建的应用程序,并对它们进行与任何生产工作负载相同的威胁建模、安全测试和批准关卡。插件提供的控制措施旨在补充这些流程,而非取代它们。