Terraform Github Action CI/CD
AWS cross account delegation 依舊 WIP,今天延續昨天內容,使用 github action 做 terraform module 的 CI/CD
賽後文章會整理放到個人的部落格上 http://chechia.net/
Terraform Github Action Jobs
我們可以在 terraform repository 中增加 tool checks 到 CI/CD 中,加強 code 的品質控管
terragrunt-infrastructure-modules PR 在此
這個 PR 包含幾個 Github Action Workflow
ls .github/workflows
checkov.yaml
format.yaml
plan.yaml
security-scan.yaml
validate.yaml
- format.yaml 中執行 terraform fmt -recursive,需求與目的已在昨天說明
- validate.yaml 中執行 terraform validate,用來驗證 module 內的 terraform syntax 是否符合語法
- checkov.yaml 是多語言的 policy as code 工具,在這邊執行掃描 terraform code 的安全性與 CVEs 檢查
- security-scan.yaml 中也是 Policy As Code 使用 tfsec 工具掃描
- plan.yaml 中在 pipeline 執行自動化 terraform plan
- 由於 plan 需要存取 state 與 provider API,設定上有許多權限設定需要開啟,目前是一個 dummy workflow
policy as code 內容可以將一篇演講,有興趣請見底下投影片: 2022 DevOpsDay: Policy As Code for Terraform: https://docs.google.com/presentation/d/1yawazO1B_sP5Yiav-XLGJXW3ZS2JTV0wGuJwhrUKQ3A
對於 Policy as Code 有興趣的朋友請見今年 DevOpsDay 的演講 https://devopsdays.tw/session-page/1146
TODO 與進度
- root 中設定 IAM User
- aws cross account iam role delegation
- root account MFA policy
- (Optional) Cloudtrail
- (Optional) terraform aws config
- security 中設定 IAM User
- security 設定 password policy
- security 設定 MFA policy
- security 中設定 IAM Policy & Group
- dev 中設定 IAM role
- 允許 security assume dev IAM role
cross account iam role
iam_cross_account_roles
TODO 與進度
- 透過 root account 設定一組 IAM User
- 透過 root account 設定多個 aws child accounts
- root 中設定 IAM User
- 將手動產生的 Administrator 的 IAM User import terraform 中
- 補上 root account IAM Policy
- 補上 root account IAM Group
- reset root account IAM user login profile & pgp key
- root account password policy
- aws cross account iam role delegation
- root account MFA policy
- Optional: Cloudtrail
- Optional: terraform aws config
- security 中設定 IAM User
- security 設定 password policy
- security 設定 MFA policy
- security 中設定 IAM Policy & Group
- dev 中設定 IAM role
- 允許 security assume dev IAM role