ເລີ່ມໃຊ້ງານ
- ເປີດ Vault ໃນ Console ແລ້ວສ້າງ Vault ແຍກຕາມແອັບ ຫຼື ສະພາບແວດລ້ອມ ເຊັ່ນ
app-production - ເພີ່ມ Secret ຫຼື ສ້າງ Key
- ເປີດແຖບ ສິດການເຂົ້າເຖິງ ແລ້ວໃຫ້ສິດ Service Account ທີ່ບໍລິການຂອງທ່ານໃຊ້
- ໃນໂຄ້ດ ຂໍ Token ແລ້ວເອີ້ນ API ຕາມຕົວຢ່າງດ້ານລຸ່ມ
ສິດຂອງ Service Account
| ສິດ | ເຮັດຫຍັງໄດ້ |
|---|---|
| ອ່ານ Secret | ອ່ານຄ່າຂອງ Secret |
| ອ່ານ ແລະ ຂຽນ Secret | ອ່ານຄ່າ ແລະ ເພີ່ມເວີຊັນໃໝ່ |
| ໃຊ້ Key ເຂົ້າລະຫັດ ແລະ ລົງລາຍເຊັນ | ເຂົ້າລະຫັດ, ຖອດລະຫັດ, ລົງລາຍເຊັນ, ກວດລາຍເຊັນ |
| ໃຊ້ ແລະ ໝຸນ Key | ໃຊ້ Key ແລະ ສ້າງເວີຊັນໃໝ່ |
| ອ່ານ Secret ແລະ ໃຊ້ Key | ລວມ 2 ຢ່າງນີ້ |
| ອ່ານ ແລະ ຂຽນ Secret, ໃຊ້ ແລະ ໝຸນ Key | ທຸກຢ່າງ |
ຖ້າຍັງບໍ່ໄດ້ໃຫ້ສິດ Service Account ຈະໃຊ້ Vault ບໍ່ໄດ້ ເຖິງຢູ່ໃນ Project ດຽວກັນ ສ່ວນຄົນໃນ Project: Viewer ແລະ Operator ເຫັນພຽງຊື່ ແລະ ປະຫວັດ, Editor ເບິ່ງ ແລະ ແກ້ຄ່າໄດ້, Owner ແລະ Admin ລຶບໄດ້
ໃຊ້ Secret ເປັນຕົວແປຂອງ Container ຫຼື Function
ໃສ່ຄ່າຕົວແປເປັນ vault://app-production/db-password ຫຼື ກົດ ໃຊ້ຄ່າຈາກ Vault ໃນໜ້າຕົວແປ ໂຄ້ດອ່ານຕົວແປຕາມປົກກະຕິໂດຍບໍ່ຕ້ອງແກ້ຫຍັງ ລະບົບເປີດຄ່າຈິງໃຫ້ຕອນບໍລິການເລີ່ມເຮັດວຽກ ສ່ວນ Console ແລະ Revision ເກັບພຽງທີ່ຢູ່ນີ້
ຕ້ອງໃຫ້ສິດອ່ານ Secret ແກ່ Service Account ຂອງບໍລິການກ່ອນ ຖ້າເພີ່ມເວີຊັນໃໝ່ ຕ້ອງຣີສະຕາດບໍລິການຈຶ່ງຈະໄດ້ຄ່າໃໝ່ ຖ້າຕ້ອງການລັອກເວີຊັນ ໃຫ້ຕໍ່ທ້າຍດ້ວຍເລກເວີຊັນ ເຊັ່ນ vault://app-production/db-password/2 ຖ້າອ່ານຄ່າບໍ່ໄດ້ຕອນເລີ່ມເຮັດວຽກ ເຊັ່ນ ຖືກຖອນສິດ ບໍລິການຈະບໍ່ເລີ່ມ ແລະ ແຈ້ງສາເຫດໄວ້
ອ່ານ Secret
# Inside a Container or Function: a token from the machine it runs on
TOKEN=$(curl -s -H "Metadata: true" \
"http://169.254.169.254/identity/oauth2/token" | jq -r .access_token)
curl -H "Authorization: Bearer $TOKEN" \
https://api.thailandhosting.com/v1/vaults/app-production/secrets/db-password
# {"name":"db-password","version":2,"value":"...","expiresAt":null}ບໍ່ລະບຸເວີຊັນຈະໄດ້ເວີຊັນໃໝ່ລ່າສຸດທີ່ຍັງເປີດຢູ່ ແລະ ຍັງບໍ່ໝົດອາຍຸ ລະບຸເວີຊັນດ້ວຍ ?version=2 ຄວນເກັບຄ່າໄວ້ໃນໜ່ວຍຄວາມຈຳຂອງໂປຣແກຣມຊົ່ວຄາວ ແທນການເອີ້ນທຸກຄັ້ງ
ເຂົ້າລະຫັດດ້ວຍ Key
curl -X POST -H "Authorization: Bearer $TOKEN" \
-d "{\"plaintext\":\"$(printf 'hello' | base64)\"}" \
https://api.thailandhosting.com/v1/vaults/app-production/keys/customer-data/encrypt
# {"ciphertext":"thv1:2:...","version":2}
curl -X POST -H "Authorization: Bearer $TOKEN" \
-d '{"ciphertext":"thv1:2:..."}' \
https://api.thailandhosting.com/v1/vaults/app-production/keys/customer-data/decrypt
# {"plaintext":"aGVsbG8="}ຂໍ້ມູນສົ່ງເປັນ base64 ໄດ້ຄັ້ງລະບໍ່ເກີນ 64 KB ຜົນລັບບອກເວີຊັນຂອງ Key ຢູ່ໃນຕົວ ຈຶ່ງຖອດລະຫັດໄດ້ເຖິງໝຸນ Key ແລ້ວ ຖ້າສົ່ງ aad ຕອນເຂົ້າລະຫັດ ຕ້ອງສົ່ງຄ່າເດີມຕອນຖອດລະຫັດ
ຂໍ້ມູນໃຫຍ່ ຫຼື ມີຈຳນວນຫຼາຍ ໃຫ້ຂໍ Data key ທີ່ /data-key ໃຊ້ຄ່າ plaintext ເຂົ້າລະຫັດເອງໃນໂປຣແກຣມ ແລ້ວເກັບ ciphertext ໄວ້ຄູ່ກັບຂໍ້ມູນ ຕອນອ່ານຈຶ່ງສົ່ງ ciphertext ໄປຖອດລະຫັດ
ຊະນິດຂອງ Key
| ຊະນິດ | ໃຊ້ເຮັດຫຍັງ |
|---|---|
| AES-256-GCM | ເຂົ້າລະຫັດ / ຖອດລະຫັດ |
| RSA 2048, RSA 4096 | ເລືອກຢ່າງໃດຢ່າງໜຶ່ງ: ເຂົ້າລະຫັດ / ຖອດລະຫັດ ຫຼື ລົງລາຍເຊັນ / ກວດສອບ |
| ECDSA P-256, P-384 | ລົງລາຍເຊັນ / ກວດສອບ |
SDK
import { defaultCredential } from '@thailandhosting/identity';
const vault = defaultCredential().vault('app-production');
const secret = await vault.getSecret('db-password');
const ciphertext = await vault.encrypt('customer-data', 'hello');
const plaintext = await vault.decrypt('customer-data', ciphertext);from thailandhosting_identity import default_credential
vault = default_credential().vault("app-production")
secret = vault.get_secret("db-password")
ciphertext = vault.encrypt("customer-data", b"hello")
plaintext = vault.decrypt("customer-data", ciphertext)cred, err := identity.Default()
vault := cred.Vault("app-production")
secret, err := vault.GetSecret(ctx, "db-password")
ciphertext, err := vault.Encrypt(ctx, "customer-data", []byte("hello"), nil)
plaintext, err := vault.Decrypt(ctx, "customer-data", ciphertext, nil)th CLI
th vault create app-production
th vault secret set app-production db-password # reads the value from standard input
th vault secret get app-production db-password
th vault key create app-production customer-data --type aes256 --rotation-days 90
th vault key encrypt app-production customer-data 'hello'ຄຳສັ່ງ th vault ໃຊ້ສິດຂອງຄົນທີ່ th auth login API Key ເອີ້ນບໍ່ໄດ້ ລະບົບອັດຕະໂນມັດ ແລະ CI ໃຫ້ໃຊ້ Service Account ແທນ ສ່ວນການລຶບຖາວອນເຮັດໄດ້ໃນ Console ເທົ່ານັ້ນ
ລາຄາ
ຕົວ Vault ຟຣີ ຄິດຕາມຈຳນວນ Secret ແລະ Key ທີ່ມີຢູ່ (ລວມທຸກເວີຊັນ) ກັບຈຳນວນຄັ້ງທີ່ໂປຣແກຣມອ່ານ Secret ຫຼື ໃຊ້ Key ເບິ່ງລາຄາທີ່ໜ້າ ລາຄາ
ບໍ່ຄິດເງິນ: ການອ່ານຄ່າເປັນຕົວແປຕອນບໍລິການເລີ່ມເຮັດວຽກ, ການໃຊ້ຜ່ານ Console ແລະ th CLI, ການເບິ່ງລາຍການ, ເພີ່ມເວີຊັນ ຫຼື ໝຸນ Key, ການເອີ້ນທີ່ບໍ່ສຳເລັດ ແລະ ລາຍການທີ່ລຶບແລ້ວ ຖ້າ Project ມີຍອດຄ້າງຊຳລະ ໂປຣແກຣມຈະເອີ້ນ Vault ບໍ່ໄດ້ຈົນກວ່າຈະເຕີມເງິນ
ລຶບ ແລະ ກູ້ຄືນ
ລາຍການທີ່ລຶບຈະໃຊ້ງານບໍ່ໄດ້ທັນທີ ແຕ່ກູ້ຄືນໄດ້ພາຍໃນໄລຍະເວລາທີ່ຕັ້ງໄວ້ໃນ Vault (7-90 ວັນ) ເມື່ອຄົບກຳນົດຈະຖືກລຶບຖາວອນ ຖ້າລຶບ Key ຖາວອນ ຂໍ້ມູນທີ່ເຂົ້າລະຫັດດ້ວຍ Key ນັ້ນຈະເປີດບໍ່ໄດ້ອີກເລີຍ
ເປີດ ປ້ອງກັນການລຶບຖາວອນ ເພື່ອບໍ່ໃຫ້ໃຜລຶບຖາວອນກ່ອນຄົບກຳນົດ ລວມທັງເຈົ້າຂອງ Project ເມື່ອເປີດແລ້ວປິດບໍ່ໄດ້
ປະຫວັດການໃຊ້ງານ
ແຖບ ປະຫວັດການໃຊ້ງານ ບອກວ່າໃຜເຮັດຫຍັງ, ເມື່ອໃດ, ຈາກ IP ໃດ ລວມທັງການເອີ້ນທີ່ຖືກປະຕິເສດ ການໃຊ້ງານຈາກໂປຣແກຣມລວມເປັນລາຍການລະຊົ່ວໂມງຕໍ່ຜູ້ເອີ້ນ ເກັບໄວ້ 1 ປີ
ຖ້າພົບບັນຫາ
ໄດ້ 403 forbidden
Service Account ຍັງບໍ່ມີສິດທີ່ກົງກັບຄຳສັ່ງນີ້ ເບິ່ງຊື່ທີ່ຖືກປະຕິເສດໄດ້ທີ່ແຖບປະຫວັດການໃຊ້ງານ ແລ້ວໃຫ້ສິດທີ່ແຖບສິດການເຂົ້າເຖິງ
ເກັບ Key ໄວ້ໃນ HSM ຫຼືບໍ່
ບໍ່ Key ຖືກເຂົ້າລະຫັດດ້ວຍຊອບແວ ແລະ ເກັບໃນຖານຂໍ້ມູນຂອງລະບົບ ຍັງບໍ່ມີແບບ HSM