Terraform Github Action CI/CD

AWS cross account delegation 依舊 WIP,今天延續昨天內容,使用 github action 做 terraform module 的 CI/CD

iThome 鐵人賽好讀版

賽後文章會整理放到個人的部落格上 http://chechia.net/

追蹤粉專可以收到文章的主動推播

https://ithelp.ithome.com.tw/upload/images/20210901/20120327NvpHVr2QC0.jpg


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

2022 DevOpsDay: 從零導入 Policy as Code 到 terraform 甘苦談


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
張哲嘉
張哲嘉
Site Reliability Engineer

我的研究領域包括網站可靠性工程、DevOps、Container和Kubernetes。