วิธีใส่ Private Key หรือ Secret ที่มี Special Char ใน AWS Secrets Manager

ปกติแล้ว private key จะมี special char อย่างเช่น \n อยู่ แล้วทีนี้ ถ้าเราใส่ไว้ในช่องแบบนี้ใน AWS Secrets Manager แล้ว

จังหวะที่เราเซฟไป AWS จะ escape ตัว \ ให้เราทันทีแบบนี้

Special char is escaped

ทำให้เราไม่สามารถใช้ได้

วิธีแก้

ง่ายมาก คือให้เรา edit แล้วเลือก Plaintext ตามรูปด้านล่าง

Edit secret in Plaintext mode

เสร็จแล้วให้เราแปะ private key หรือค่าที่มี special char เข้าไปใหม่ เท่านี้เราก็สามารถมี special char เก็บอยู่ใน secret ของเราที่ AWS Secrets Manager ได้แล้ว

Special char can be used now in AWS Secrets Manager

พูดถึง secrets เท่าที่อ่านๆ มา เขาแนะนำกันว่า ให้ไป encrypt โดยใช้ mozilla sops ก่อนทีนึง แล้วค่อยเอา terraform จับอัดเข้า aws secrets manager กันของหาย ข้อดีอีกอย่างคือ มันเป็นการบังคับให้คนไม่อัพเดท secrets โดยมือผ่านหน้า UI ตัดปัญหาว่า ใครมือบอนอัพเดทค่าผิด/บังเอิญลบทิ้ง

1 Like

งดงามมากครับ เดี๋ยวไปส่อง mozilla sops ก่อน เพิ่งเคยได้ยินเลย :heart_eyes:

มีข้อดีอีกอย่าง คือ มันเซ็ต encryption/decryption key แยกได้ด้วย
เช่น:

key A: modify (encrypt) ได้ เพราะผูกกะ admin account
key B: read (decrypt) ได้อย่างเดียว เพราะเป็น user

# .sops.yaml
creation_rules:
  # prod/admin
  - path_regex: ./prod/.*
    kms: "arn:aws:kms:ap-southeast-1:xxxxx:key/xxxxx"
    aws_profile: admin

  # normal users
  - kms: "arn:aws:kms:ap-southeast-1:xxxxx:key/yyyyyy"
    aws_profile: user

นั่นหมายความว่า สบายใจได้แน่ๆ ว่า มีแต่เหล่า admin เท่านั้นที่ modify secrets เล่านี้ได้ เย้!

1 Like

กราบครับ เดี๋ยวอาทิตย์หน้าลองเลย เย้!