iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
DevOps

用K8s打造你的Youtube系列 第 13

用 Terraform 部署 Aurora MySQL (AWS RDS)

  • 分享至 

  • xImage
  •  
  1. 使用 KMS 將私密資訊加密

    1. AWS Key Management Service 能夠輕鬆地建立和控制用來保護資料的密碼及金鑰
    2. AWS KMS 採用已通過 FIPS 140-2 驗證
    3. AWS KMS 能夠跟 AWS CloudTrail 整合,提供金鑰使用狀況的log
    4. 其他場景:這邊我們雖然會用在RDS,但像是SSM等服務,能夠允許使用者在沒有Key的狀況下也能進EC2進行操作(原本要下載一個金鑰)
  2. Terraform安裝KMS

    1. 新增一個kms.tf,參考官方寫法https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key
    2. [key_usage](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key#key_usage):預期用途,default是ENCRYPT_DECRYPT
    3. deletion_window_in_days 鑰匙可以用多久
    4. customer_master_key_spec
    5. aws_kms_alias 為KMS給顧客的金鑰提供別名。
    resource "aws_kms_key" "rds" {
      description             = "KMS key 1"
    	key_usage                = "ENCRYPT_DECRYPT"
      deletion_window_in_days = 10
    }
    
    resource "aws_kms_alias" "rds" {
        name          = "alias/aurora"
        target_key_id = aws_kms_key.rds.key_id
    }
    

https://ithelp.ithome.com.tw/upload/images/20220928/20118525wK9oFko9Ux.png

如此就可得到相對應的KMS,記錄一下我們的金鑰ID

```tsx
c0a...
```
  1. 藉由KMS獲得加密過的帳密

    為了不讓我們的帳密直接進到Git,我們先為帳密各自新建一個檔案叫做username跟password。中間的i-am-username跟i-am-password記得改成自己的帳密

    echo -n 'i-am-username' > username
    echo -n 'i-am-password' > password
    

    使用CLI獲得相對應的金鑰

    aws kms encrypt --key-id c0a3e2... --plaintext fileb://username --output text --query CiphertextBlob --profile backyard --region ap-northeast-1
    
    aws kms encrypt --key-id c0a3e2a... --plaintext fileb://password --output text --query CiphertextBlob
    
  2. 建立 Data Source

    將上一步拿到的金鑰放入payload,由於奇怪的符號太多,我們改用 **Heredoc Strings**的方式放入,詳細參考:https://www.terraform.io/language/expressions/strings

    data "aws_kms_secrets" "portal" {
        secret {
            name    = "master_username"
            payload = <<-EOT
              AQICAHgblt+gCaxL
            EOT
        }
    
        secret {
            name    = "master_password"
            payload = <<-EOT
              AQICAHgblt+gCaxLk
            EOT
        }
    }
    

    參考https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/kms_secrets

    我們可以在 RDS的頁面看到username改成我們要的

https://ithelp.ithome.com.tw/upload/images/20220928/20118525MNNnZ3pgDQ.png


上一篇
RDS Aurora
系列文
用K8s打造你的Youtube13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言