基础设施即代码(IaC)

共 19 题
#

1. IaC 安全扫描与策略即代码(tfsec/checkov/OPA conftest)

A tfsec 只能用于检测性能问题
B 安全扫描只能在 apply 之后进行
C 策略即代码必须人工执行
D checkov/tfsec 在 CI 中作为门禁扫描 IaC 配置,OPA conftest 用 Rego 实现策略即代码 ✓ 正确答案
#

2. Terraform 工作流 init/plan/apply/destroy 与 refresh 的作用,plan 如何生成资源变更图并用于评审

A init 用于销毁资源
B plan 根据依赖 DAG 生成资源变更图并输出 diff,可作为 apply 前的评审门禁 ✓ 正确答案
C apply 不需要 plan
D refresh 会删除资源
#

3. IaC 流水线(plan 评审、apply 审批)设计

A 生产环境 apply 前配置人工审批,plan 输出作为评审依据,并按环境递进隔离 ✓ 正确答案
B plan 和 apply 可以合并为一步,无需评审
C 静态扫描只能人工执行
D 生产环境不需要变更保护
#

4. Terraform provisioner 的使用边界,即何时应避免 provisioner 而改用配置管理工具?

A provisioner 是配置管理的首选方式
B provisioner 失败不会影响资源
C provisioner 非幂等且不记录在 state 中,应优先用 Packer/cloud-init/Ansible 等配置管理工具 ✓ 正确答案
D provisioner 会自动记录其副作用
#

5. Terraform 状态的核心价值中状态文件的内容、敏感信息保护与损坏恢复如何管理

A state 只记录资源 ID,不含敏感信息
B state 可以手动随意编辑
C state 记录资源映射与依赖,需用远程后端加密 + 锁 + 备份保护,损坏时可用 import/备份恢复 ✓ 正确答案
D state 不需要远程存储
#

6. lifecycle 元参数(create_before_destroy/prevent_destroy/ignore_changes)在资源更新与删除保护中的应用

A create_before_destroy 用于先销毁后创建
B ignore_changes 会删除资源
C prevent_destroy 阻止资源被计划销毁,create_before_destroy 先建后删避免停机,ignore_changes 忽略外部属性变更 ✓ 正确答案
D lifecycle 只能用于数据库
#

7. state 后端选型、状态锁与漂移检测(drift)

A 本地后端最适合团队协作
B 远程 S3 后端 + DynamoDB 锁防止并发冲突,plan 用于检测真实资源与 state 的漂移 ✓ 正确答案
C 状态锁会阻止所有 apply
D 漂移检测无法发现手工修改
#

8. 已有资源 import 与 IaC 覆盖率提升

A import 会创建新资源
B terraform import 只把真实资源写入 state 开始管理,导入后需对齐配置使 plan 收敛以提高 IaC 覆盖率 ✓ 正确答案
C import 后无需执行 plan
D 覆盖率提升只需靠 import 一次
#

9. 模块版本治理与私有 module registry

A 模块无需版本化
B 通过私有 registry 或 Git 引用 + semver 版本约束管理模块,配合发布与升级流程避免漂移 ✓ 正确答案
C 模块只能用本地路径
D 版本升级无需评审
#

10. 远程 state 的加密与访问控制中对象存储后端加锁(DynamoDB)与最小权限如何落地

A state 文件无需加密
B 状态锁会阻止团队协作
C 所有用户都应有 state 的读写权限
D 用对象存储加密 + DynamoDB 锁 + 最小权限 IAM + 版本化来保护远程 state ✓ 正确答案
#

11. IaC 安全中敏感变量注入(Vault/环境变量)、plan 泄露防护与策略即代码(OPA/checkov)如何落地

A 明文密钥可以直接写进 IaC 代码
B 策略即代码只能人工检查
C plan 输出可以公开打印
D 用 Vault/Secret Manager 注入敏感变量、sensitive 标记防 plan 泄露、OPA/checkov 做策略即代码 ✓ 正确答案
#

12. IaC 排障常见场景中 state 与真实资源不一致、provider 版本升级破坏与 plan 差异的定位方法

A provider 版本升级无需关注
B state 与真实资源永远一致
C 用 plan/diff/state show/refresh 定位 state 与真实资源不一致,锁定 provider 版本避免升级破坏 ✓ 正确答案
D plan 差异无法定位
#

13. IaC 的工程实践中模块复用、远程状态后端与 CI 集成的组合如何落地

A 模块复用、远程 state 与 CI 集成三者可独立,无需组合
B CI 集成只用于构建应用
C 远程 state 会破坏团队协作
D 模块保证复用、远程 state 保证协作安全、CI 保证变更受控,三者组合才能形成成熟 IaC 体系 ✓ 正确答案
#

14. IaC 的评审与测试中 plan 输出评审要点、lint/单元测试与沙箱 apply 验证如何组织

A plan 评审只需看是否成功
B 单测可替代实际 apply
C 沙箱 apply 与生产环境无关
D 用 fmt/validate/tflint 做 lint、单测验证逻辑、沙箱 apply 验证真实,plan 评审重点看资源变更影响 ✓ 正确答案
#

15. Pulumi ESC 的定位中如何在 IaC 中管理环境变量、密钥与配置分层?

A ESC 集中管理环境变量/密钥/配置并支持环境继承与加密,与 IaC 工作流集成避免硬编码 ✓ 正确答案
B ESC 只是 Pulumi 的一个插件,无实际价值
C ESC 只能存明文
D ESC 密钥无法加密
#

16. Terraform 与 CDK 的取舍中同云场景下编程式 CDK 与声明式 Terraform 哪个更合适

A CDK 无法使用编程语言
B CDKTF 不使用 Terraform 后端
C Terraform 不支持跨云
D 同云 AWS 场景且团队擅编程时 CDK 更合适,跨云/依赖成熟生态时 Terraform 更合适 ✓ 正确答案
#

17. Terraform 与 CloudFormation/ARM/Bicep 的跨云策略对比

A CloudFormation 可以管理 Azure 资源
B 云原生工具(CloudFormation/Bicep)与单云深度集成,Terraform 提供跨云统一工作流,选择取决于云绑定与中立需求 ✓ 正确答案
C Bicep 是 Terraform 的一部分
D Terraform 无法管理多云
#

18. Terraform 的 count/for_each/for 表达式在批量资源管理中的取舍

A for 表达式用于创建资源
B for_each 也按索引编号
C count 集合变化会导致索引漂移甚至重建,for_each 按键稳定,适合易变集合 ✓ 正确答案
D count 与 for_each 完全等价
#

19. 从手工变更迁移到 IaC 的路径中先 import 现有资源再治理漂移的工程节奏与风险控制

A 应一次性迁移所有资源
B 迁移后仍可继续手工改资源
C import 会重建资源,需停机
D 先 import 存量资源并对齐配置,再分批治理漂移,用 plan 检测与回退控制风险 ✓ 正确答案