Code Engine 和安全性

IBM Cloud® Code Engine 架构 是以“安全第一”的理念构建的。Code Engine 的组件 由 IBM 负责管理和维护。 通过基于 Kubernetes 命名空间的项目,将客户及其工作负载相互隔离。 基于角色的访问控制在资源级别执行,以仅允许授权用户对项目资源执行特定操作。 用户访问权限由 Cloud Identity and Access Management (IAM)进行控制。 已部署的应用程序通过 HTTPS 对外提供服务,而 Code Engine 会自动为您创建和管理底层的 TLS 证书。Code Engine 可为您的应用程序提供即时的 DDoS 保护。Code Engine 的 DDoS 保护 由 Cloud Internet Services (CIS) 提供,您无需支付额外费用。

Code Engine 根据定义,无法从外部访问作业。 不过,Jobs 仍然可以发起外部请求,并且可以在内部调用 Code Engine 应用程序。 有关在作业内部调用应用程序的示例,请参阅 “Code Engine 示例”GitHub 代码库。

您可以使用以下安全功能来增强安全性。

安全性功能
安全功能 描述
使用 IAM 授权访问权 使用 Cloud Identity and Access Management (IAM) 向其他用户授予 Code Engine 的访问权。IBM Cloud IAM 向 IBM Cloud 平台,Code Engine和帐户中的所有资源提供安全认证。 设置正确的用户角色和许可权是限制谁可以访问资源的关键。 请参阅 管理用户访问权
禁用外部端点 通过使用 --visibility=privatevisibility=project 选项,使用未向外部流量公开的已禁用外部端点来部署应用程序。 请参阅 Code Engine 应用程序的可视性选项
在专用映像注册表中存储映像 设置专用映像注册表 (例如 IBM Cloud Container Registry提供的注册表),以控制对注册表的访问以及可以部署在 Code Engine中的映像的访问。 使用 IBM Cloud Container Registry Vulnerability Advisor 自动扫描映像。 您还可以向自己的定制专用注册表添加访问权。 请参阅 访问容器注册表
从专用存储库构建代码 将源代码存储在专用存储库中,然后构建到 IBM Cloud Container Registry。 请参阅 访问专用代码存储库
使用私钥来存储敏感信息 您可以将密码和 SSH 密钥等信息存储在私钥中。 有关更多信息,请参阅 使用私钥
添加认证和授权功能 如果要在公共 API 或 Web 站点上的 Code Engine 中公开应用程序或功能,您可能希望限制对特定用户或位置 (IP 地址范围) 的访问。 虽然 Code Engine 提供了限制用于管理 Code Engine 项目及其实体的 API 访问权的功能,但代码源的所有者负责添加正确的认证和授权功能,以保护到达端点时运行的代码。 例如,可以使用 IBM Cloud App ID 为代码添加认证和授权功能。
定期轮换 TLS 证书 如果您正在使用自定义域名映射来公开您的应用程序或函数,则必须确保您的 TLS 证书设有有效期;例如 90 天。 您必须使用更新后的证书 (具有自己的到期日期) 定期轮换证书。 理想情况下,使用自动化来轮换证书。 例如,您可以使用一个由 cron 订阅触发的 Code Engine 任务来轮换证书。 如果您将密钥存储在 IBM Cloud Secrets Manager 中,请考虑使用 IBM Cloud Event Notifications,以便您的 Code Engine 项目能够感知证书轮换。 您可以访问我们的 Code Engine 示例代码库(网址:GitHub ),查看一个 使用事件通知的示例应用

支持的 TLS 版本和密码套件

Code Engine API 和应用程序端点支持传输层安全( TLS )、1.2 (或更高版本)以及以下密码套件。

TLS 密码套件

  • ECDHE-ECDSA-AES128-GCM-SHA256
  • ECDHE-ECDSA-AES256-GCM-SHA384
  • ECDHE-RSA-AES128-GCM-SHA256
  • ECDHE-RSA-AES256-GCM-SHA384
  • ECDHE-ECDSA-CHACHA20-POLY1305
  • ECDHE-RSA-CHACHA20-POLY1305

DDoS 保护

Code Engine 为应用程序提供即时 DDoS 保护。Code Engine的 DDoS 保护由 Cloud Internet Services (CIS) 提供,无需额外费用。

DDoS 该保护功能可防范系统互连(OSI)第3层和第4层( TCP/IP )的协议攻击,但不包括第7层( HTTP )的攻击。

要解决层 7 攻击,您可以执行以下步骤,以便流量通过使用定制域的安全路由运行,并且不再可用于通过 Code Engine 提供的域的公共因特网。

  1. 获取定制域。
  2. 在 Code Engine中,为应用程序创建定制域映射
  3. 设置 Cloud Internet Services (CIS) 实例以管理定制域。
  4. 将定制域添加到 CIS 实例
  5. 在 CIS中 配置全局负载均衡器
  6. 在 CIS 中,为负载均衡器启用 HTTP 代理模式。 这将启用第7层的 DDoS 防护功能以及其他 CIS 安全功能。
  7. 在 Code Engine中,关闭应用程序的公共系统提供的域映射。 转至应用程序,从应用程序的 域映射 选项卡中,选择 无外部系统域映射
  8. 单击 创建 以保存应用程序修订版。

有关 CIS中的 DDoS 的更多信息,请参阅 处理 CIS中的分布式拒绝服务攻击。 有关解决层 7 攻击的更多方法,请参阅 缓解 CIS 中的层 7 攻击