Terraform Github Action CI/CD

AWS cross account delegation 依舊 WIP,今天延續昨天內容,使用 github action 做 terraform module 的 CI/CD iThome 鐵人賽好讀版 賽後文章會整理放到個人的部落格上 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 ...

September 25, 2022 · 2 min · 267 words · chechiachang

Aws Cross Account Delegation & pre-commit hook

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 iThome 鐵人賽好讀版 賽後文章會整理放到個人的部落格上 http://chechia.net/ 追蹤粉專可以收到文章的主動推播 AWS cross account with iam roles 要做跨 AWS account 的 IAM Roles access control,我們先看官方文件理解這個功能 ...

September 21, 2022 · 2 min · 390 words · chechiachang

Modules and password security

使用 aws module 的好處 為何許多開源的 terraform module 內部使用的都是其他的 module,而不是從 resource 單位開始? Terraform 官方文件,如何建立 module 如何建立一個 module 根據最常出現的使用情劇與需求 專注於業務的需求與抽象,雃後把實作(terraform resource) 在 module 中組合實作出來 module 也需要考慮 resource 之間的 architecture 也要考慮到觀禮是否方便?使用上是否安全? ex. 我們需求是產生一個 IAM User 正常的實作就是寫一個 resource.aws_iam_user 達成需求 更好的實作是:除了 iam_user 外,加上 一定會需要配權限,應搭配 iam_group + iam_policy pgp encrypt 讓資料更安全 password_policy 增加密碼安全 …等 比起單一一個 iam_user 思考的更全面,更接近最佳實踐 在這次的 Best Practice 追尋之旅中,我們會帶大家去看其他團隊所寫出的 terraform module 目前已經看了 aws 的 terraform module gruntwork 的 terraform module design (我們沒看到 private module,只是跟隨文件自己刻) 這些有多年企業解決方案經驗的團隊,寫出來的 terraform module 都會考量許多 security 方面的問題 這也是我們前十篇都在專注的方向 一般來說,一個好 module 會帶來很多好處 ...

September 21, 2022 · 4 min · 656 words · chechiachang

Reset Iam User Administrator

昨天處理完 Accounting 的 reset password,今天要來 reset root account Administrator 的權限 本日進度 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 iThome 鐵人賽好讀版 賽後文章會整理放到個人的部落格上 http://chechia.net/ 追蹤粉專可以收到文章的主動推播 Reset IAM root user Administrator Password 依照上面的步驟,我們確定可以正常登入,於是可以來可以新建 Administrator 的 login profile 由於 Administrator 會需要 access key,所以我們也把他設成 true # terragrunt.hcl users = { Administrator = { groups = ["full-access"] pgp_key = "keybase:chechiachang" create_login_profile = true create_access_keys = true }, Accounting = { groups = ["billing"] pgp_key = "keybase:chechiachang" create_login_profile = true create_access_keys = false # accounting always use web console, won't use access key } } 記得更改 module/output.tf,增加 secret key 的 output,而不要只留在 terraform state 裡面 ...

September 20, 2022 · 7 min · 1292 words · chechiachang

Reset Iam User

昨天我們建立 IAM Group 與 policy,並說明 policy 管理原則。 然而昨天最後創建 user 時,我們關閉了 create_login_profile = false 的選項 這是為了避免當前的登入機制被覆蓋掉,影響 root account Administrator 的使用 更改 login 方式,在某些極端的情形下,有可能讓 Administrator 自己覆蓋自己的 login 設定後,讓自己無法登入 如果你是管理員,在更改 admin 帳號的權限與登入設定時,一定要多加注意 如果不幸改壞,無法登入,就只能再去找出 root account root user 帳號來解救了 如果是 root account root user 把自己的 login 改壞,就會很痛苦,要請 aws support 來救你 本日進度 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 iThome 鐵人賽好讀版 ...

September 20, 2022 · 5 min · 1010 words · chechiachang