CLASSFUNC BLOG
We Share Our Knowledge
Bảo vệ mật khẩu với KMS trong CloudBuild
Back-endGCP
Thành Lê
13 Th01 2021 06:20

bảo vệ password khi sử dụng cloudbuild.png

Bạn muốn login vào 1 service nào đó khi build. Service đó yêu cầu mật khẩu nhưng bạn lại không muốn mọi người biết mật khẩu của mình. KMS là cách bạn bảo vệ mật khẩu khi build với GCP CloudBuild

Tóm tắt nội dung:

  1. Sử dụng KMS mã hoá mật khẩu
  2. Dùng mật khẩu đã mã hoá vào CloudBuild

1. Sử dụng KMS mã hoá mật khẩu

Thông tin về KMS các bạn có thể xem tại https://cloud.google.com/security-key-management

1.1 Sử dụng câu lệnh sau để tạo keyring-name (ví dụ: password) :

gcloud kms keyrings create password --location global

1.2 Sau đó tạo key-name (ví dụ: classfunc-expo-password ) trong keyring-name đã tạo ở 1.1:

gcloud kms keys create classfunc-expo-password \ --location global --keyring password \ --purpose encryption

1.3 Có key-namekeyring-name rồi mình đi mã hoá password (ví dụ: password=my_pass_123)

echo -n my_pass_123 | gcloud kms encrypt --plaintext-file=- \ --ciphertext-file=- --location=global --keyring=password \ --key=classfunc-expo-password | base64

Sau đó trên terminal của bạn sẽ xuất hiện 1 đoạn base64 có dạng như CiQAlgNzMeYBOrMeZzddaUhyBG0ep... , đó chính là mật khẩu đã được mã hoá của bạn.

2. Dùng mật khẩu đã mã hoá vào CloudBuild

2.1 Thêm trường secrets vào cloudbuild.yaml. Có thể thay PASSWORD bằng bất kỳ tên nào khác.

steps: ... secrets: - kmsKeyName: projects/project-id/locations/global/keyRings/password/cryptoKeys/classfunc-expo-password secretEnv: PASSWORD: 'đoạn mã base64 trên'

2.2 Sử dụng trong các steps như sau:

steps: - name: 'gcr.io/cloud-builders/docker' entrypoint: 'bash' args: ['-c', 'docker login --username=user-name --password=$$PASSWORD'] secretEnv: ['PASSWORD']

Hoặc ví dụ như khi login expo sẽ có sẵn các biến môi trường mà expo-cli định sẵn thì có thể dùng như sau (giả sử có secrectEnv là EXPO_CLI_PASSWORD):

steps: - name: 'gcr.io/classfunc-com/expo' args: [ 'login','-u','classfunc' ] # expo login secretEnv: [ 'EXPO_CLI_PASSWORD' ]

Để kiểm tra thành quả của mình:

gcloud builds submit .

Chúc các bạn thành công. 👍