单位 1 / 11

DevOps 和云 AI 简介:角色、边界、身份验证、安全性和秘密

收益:

  • 能够区分 DevOps 链(管道、配置、脚本、日志)中人工智能的哪些位置可以实时节省时间,以及哪些影响生产的决策留给人类,具体取决于任务风险级别。
  • 能够应用一门学科,通过将每个人工智能输出连接到源、干燥运行以及通过系统过滤器的步骤来验证每个人工智能输出。
  • 能够养成从不将秘密粘贴到请求上、屏蔽它们以及仅在授权系统上用于防御目的的习惯。

一天晚上 03:14 你的电话响了:支付服务瘫痪了,金钱和声誉每一分钟都在损失。另一天,一个错误的命令重新启动了数千台服务器。这是 DevOps 专业人员的世界 - 负责软件从代码存储库(存储软件源的地方)直到到达客户手中的所有管道、自动化和待命。 DevOps 是“开发”和“运营”这两个词的组合:它是一种文化和一组实践,将软件开发和运行纳入一个快速、可靠的流程。此流程的每个步骤都会生成一个命令、一个配置文件、一个脚本。人工智能(AI——从历史数据中提取模式并生成文本、代码和预测的软件)可以在如此丰富的文本中为您节省大量时间。

但这个模块的一开始就很明确:人工智能是助手、草稿生成器和决策支持工具;您负责决定什么进入现场环境(生产、真实客户使用的系统)、何时以及在半夜按下哪个按钮。在 DevOps 中,错误的成本不是几分钟,而是停机、数据丢失和安全漏洞。这就是为什么在第一个单元中我们将重点关注学科,而不是工具。

人工智能在 DevOps 链的哪个环节派上用场?

让我们将 DevOps 作业分为两个大集群。第一组:重复性、文本性和结构化工作。编写 CI/CD(持续集成/持续交付 - 自动测试和发布代码的管道)描述,起草 Dockerfile(将应用程序打包到容器中的配方文件),解释复杂的 Terraform(将基础设施定义为代码的工具)块,总结日志堆栈(系统生成的事件记录)并标记异常,起草 bash 脚本。在这些任务中,人工智能将分钟缩短为秒,而且不会感到疲倦。

第二组:导致破坏、金钱或安全的决策。版本是否会发布到产品中,哪些服务将在半夜重新启动,如何存储秘密,哪些资源将通过削减成本而关闭。这些决策需要背景、系统知识和责任。在这里,人工智能让选择和风险变得可见——但你按下“应用”按钮。

让我们用一句话来澄清区别:AI 强于“这个配置做什么以及如何编写”问题;当涉及到诸如“我是否应该将此应用于产品以及谁将为其提供担保?”之类的问题时,您可以做出决定。

提示:在将工作外包给人工智能之前,问问自己:“如果这个输出错误,我会损失什么?”如果答案是“几分钟”,请随意委托。如果答案是“生产中断、数据丢失或泄漏”,让人工智能生成草案,你验证决策和实施。

一步一步:人工智能驱动的 DevOps 业务如何运作?

  1. 收集上下文。哪个云(AWS、Azure、GCP)、哪个工具版本、什么限制?如果你给AI不完整的上下文,你将得到不完整且危险的输出。
  2. 定义明确的任务。不是“写管道”;说,“使用 GitHub Actions,在主分支中编写一个工作流,该工作流在推送时运行、运行测试、构建 Docker 映像,但不部署它。”
  3. 制作草稿。让 AI 编写第一个版本。
  4. 核实。检查语法,查看机密信息是否已泄露,使用空运行进行测试(一种实际显示应用程序要做什么的模式)。
  5. 在沙盒中尝试一下。永远不要在产品中进行第一次尝试;在测试/登台环境中运行。
  6. 逐渐应用并监测。通过监控指标和日志来使其上线。

验证纪律:三步

AI说话流利、自信;这并不意味着这是真的。人工智能偶尔会产生幻觉——将不存在的命令标志、云服务名称或配置密钥编成真实的。在 DevOps 中,虚假的 --force 标志可以删除数据,而虚假的 IAM(身份和访问管理)权限会造成安全漏洞。反射:

  1. 将其连接到源。 AI给出的每一个命令和flag真的都是官方文档中的吗?询问“告诉我这个标志是哪个版本以及它在官方文档中的名称”;如果不确定,请不要相信它。
  2. 干涸。看看在不实际应用 terraform plan、kubectl --dry-run、--check 等 mod 的情况下会发生什么。
  3. 将其通过系统过滤器。输出是否与您的体系结构、安全策略和可用资源名称匹配?您的领域知识是最终的过滤器。
注意:“AI这么写”并不是理由。如果出现产品中断,责任不属于人工智能,而属于未经验证而运行该命令的人。未经验证的 AI 命令与未经读取而执行的 rm -rf 一样有风险。

安全与秘密:永不泄露

DevOps 中最重要的隐私规则是关于秘密的。秘密;它是密码、API 密钥、数据库连接字符串、私有证书等机密信息,如果被泄露,可以打开您的整个系统。不要将任何真正的秘密粘贴到人工智能提示中。如果代码块包含实际的 AWS 访问密钥、.env 文件的内容或生产数据库密码,请在将它们提供给 AI 之前使用占位符(例如 <AWS_ACCESS_KEY> 而不是 AKIA... 来屏蔽它们)。

另请检查人工智能生成的代码:为了方便起见,人工智能有时会生成将秘密直接硬编码到代码中的示例。这是一个安全漏洞。事实上,秘密保存在秘密保管库(Vault、AWS Secrets Manager、Azure Key Vault)中,并在运行时作为环境变量注入。

该领域的另一个道德和法律限制:防御性使用。使用 AI 强化您的系统、扫描漏洞并从日志中提取攻击痕迹。未经授权访问他人系统、未经授权的扫描或创建攻击工具都是非法的,超出了本平台的范围。始终在您有权并通过合同获得书面许可的系统中工作。

哪些数据进入哪辆车?

数据类型

例子

合适的车辆

开放数据

官方文档,开源代码

每辆车

内部数据(不是秘密)

通用架构图、通用管道

机构批准的车辆

机密/敏感

秘密、产品 IP/拓扑、客户数据

仅是机构签约的车辆,其数据不用于培训;通过掩蔽

三个迷你箱子

案例 1——在正确的地方赢得了时间。一位 DevOps 工程师花了 6 个小时将旧的 300 行 Jenkins 管道迁移到 GitHub Actions。他通过让人工智能一步步解释并打出草稿,将工作时间缩短到了 90 分钟。他用节省下来的时间,一一验证人工智能在分阶段中产生的每一个步骤。 AI采取了机械翻译;验证仍然由人类来完成。

案例 2 — 验证避免了灾难。一个团队向 AI 请求 Terraform 清理脚本。 AI给出了流畅的代码;但当工程师运行 terraform 计划时,他发现该脚本还计划删除正在使用的一个生产数据库——AI 错误地输入了资源过滤器。空运行可防止数小时的数据丢失。

案例3——秘密泄露归来。在询问“为什么会出现部署错误”时,一名实习生将整个 .env 文件粘贴到一个公共工具中,其中包含实际的生产数据库密码。高级工程师立即旋转并重新生成了密钥。正确的方法是使用 <DB_PASSWORD> 屏蔽密码并仅共享错误消息。

四个可复制模板

1)岗位适宜性评估:

您的角色:高级 DevOps/SRE 顾问。我将为您描述一个角色。告诉我 (1) 这是一个可以安全地委托给人工智能的起草/分析任务,还是一个影响产品的关键决策; (2)如果出现问题,说出最坏的结果; (3)告知实施前需要完成的验证步骤。任务:[HERE]

2)安全上下文给出(秘密屏蔽):

下面分析一下错误。我用<PLACEHOLDER>掩盖了所有的秘密;您还建议永远不要在解决方案中生成真正的秘密,使用占位符并将秘密嵌入到代码中,从秘密库中读取。错误/日志:[屏蔽内容]

3)命令验证:

向我解释这个命令:写下每个标志的作用、它适用于哪个工具版本以及它最危险的副作用。最后列出在产品中运行之前需要执行的 3 项检查。命令:[此处]

4)学习/概念查询:

我[概念:例如解释[蓝绿部署]的概念,就像向 DevOps 工程师解释它一样:它的作用、何时使用它、何时不使用它,2 个典型错误。简短而具体。

弱提示/强提示

弱:“给我写一个部署脚本。”

结论:不清楚哪个云、哪个工具、哪个环境;人工智能会生成一个通用的、可能非生产的脚本,将秘密嵌入到代码中。

Strong:“编写部署到 AWS ECS(弹性容器服务)的 bash 脚本草稿。区域为 eu-central-1,映像来自 ECR。切勿在代码中嵌入机密,请从 AWS Secrets Manager 中读取它们。如果每一步都出现错误,请停止 (set -euo pipelinefail)。在 prod 中运行脚本之前编写所有 3 个验证步骤。”

区别:第二个提示给出了云、工具、环境、安全规则和验证期望——输出是直接有用且安全的。

常见错误

  • 将实际的秘密粘贴到提示中。最常见和最危险的错误。总是戴面具。
  • 无上下文提示。如果不指定云、版本、环境,所需的输出通常属于错误的版本或错误的架构。
  • 跳过干跑。在没有计划的情况下实施/--dry-run 是 DevOps 中最昂贵的捷径。
  • 在产品中进行第一次尝试。每个新的人工智能输出都应该首先在测试/预演中运行。
  • 用“人工智能说”来委派责任。责任始终由实施工程师承担。
  • 相信幻觉的旗帜。不查询而执行不存在的命令标志。

综上所述

DevOps 和云人工智能;它是一个助手,可以在管道、配置、脚本和日志等文本密集型任务中提供极快的速度。但影响产品、秘密管理和最终实施的决策的责任仍然由有能力的工程师承担。三步验证(连接源、干运行、通过系统过滤器)、永不泄露秘密、仅在授权系统上用于防御目的是该模块的指导原则。

应用任务

从您自己的工作(或示例项目)中选择最近的 DevOps 任务。 (1)使用上面的“工作适宜性评估”模板向AI描述这个任务并读取其分类。 (2) 如果它包含秘密,则通过屏蔽它来准备上下文文本。 (3)通过三步验证检查AI的输出,并用一句话记下你在每一步纠正的内容。

清单

  • [ ] 我将我的任务分类为“委派工作”或“关键决策”。
  • [ ] 我没有将任何实际的秘密粘贴到提示中;我用占位符掩盖了它们。
  • [ ] 我在提示中添加了有关云、工具版本和环境的上下文。
  • [ ] 在应用之前,我通过预演/计划检查了 AI 输出。
  • [ ] 我在测试/登台环境中进行了第一次尝试,而不是在生产环境中。
  • [ ] 出于防御目的,我只在我拥有权限的系统上工作。