Ресурстарды пайдалануды есепке алу
Сіз Marketplace арқылы сатып алынған image-based қолданбаларыңызбен пайдаланушылар жұмыс істеген кезде VK Cloud жүйесіне ресурс тұтыну метрикаларын жібере аласыз. Бұл VK Cloud жүйесіне пайдаланушылардан тұтынған ресурстары үшін өздері таңдаған тарифке сәйкес автоматты түрде ақы алуға мүмкіндік береді.
Төменде мысал ретінде VK Cloud жүйесіне метрикаларды қорғалған түрде жіберуді келесі қауіпсіздік механизмдерін пайдалана отырып қалай ұйымдастыруға болатыны көрсетілген:
- сервисті тоқтатпай орындалатын автоматты ротациясы бар уақытша токендер арқылы Marketplace API-ге қол жеткізу;
- ашық және жабық кілттер жұбын пайдаланып деректерді шифрлау;
- жабық кілттерді тек қорғалған инфрақұрылымда сақтау;
- көпдеңгейлі компрометацияны тексеру.
-
Marketplace API-ге сұраулар деректерін шифрлау және Marketplace серверінен келген жауаптың цифрлық қолтаңбасының түпнұсқалығын тексеру үшін marketplace@cloud.vk.com мекенжайы бойынша шифрлауға арналған ашық кілтті сұратыңыз.
-
Сіздің image-based қолданбаңыз орнатылған ВМ бейнесін дайындау кезінде Marketplace API-ге қол жеткізу токені файлын сақтау үшін бума жасаңыз.
-
Қолданба кодында токен файлына жолды көрсетіңіз.
-
image-based қолданбаңыздың сервистік пакетін дайындау кезінде Terraform манифесіне мысалда көрсетілгендей қосымша ресурстарды қосыңыз:
resource "ivkcs_ssh_keypair" "keypair" {}resource "ivkcs_user_data" "init" {uuid = var.instance_uuidhosts = [local.hosts_name]target_os = "almalinux9"token_file_path = "/opt/agent/xaas-secret-auth-token.key"token_file_owner = "root"token_file_group = "root"token_rotate = truessh_authorized_keys = [ivkcs_ssh_keypair.keypair.public_key,]}Мұнда:
uuid— image-based қолданба инстансының идентификаторы.hosts— Marketplace агентін инициализациялауға арналған хост атауларының тізімі.target_os— орналастырылған қолданбасы бар виртуалды машинаның ОЖ-сы.token_file_path— токен файлына жол.token_file_owner— токен файлының иесі болып тағайындалатын пайдаланушы. Міндетті емес аргумент.token_file_group— токен файлы үшін тағайындалатын топ. Міндетті емес аргумент.token_rotate— токеннің автоматты ротациясын орындау белгісі:true— токен мезгіл-мезгіл жаңартылып отырады. Қолданбаңызды пайдаланушылардың ресурс тұтыну метрикалары сияқты сезімтал ақпаратты VK Cloud жүйесіне жіберген кезде токен ротациясын қосу ұсынылады.false— токен жаңартылмайды. Бұл әдепкі мән.
Ресурс аргументтері туралы толығырақ — ivkcs_user_data ресурсы бөлімінде.
Мысалда келтірілген ресурс конфигурациясы:
- Marketplace API-ге әрекет ету мерзімі шектеулі қол жеткізу токенін жасайды;
xaas-secret-auth-token.keyтокені бар файлды виртуалды машинаның/opt/agentдиректориясына орналастырады;- токені бар файлға
rootтобыныңrootпайдаланушысына құқықтар береді; - токенді мерзімді түрде жаңартуды қосады;
- Marketplace агенті үшін (егер ол орнатылған болса)
/opt/agent/xaas-secret-auth-token.keyфайлындағы токеннің өзектілігін қамтамасыз ету тапсырмасын іске қосады.
-
(Опционалды) Файлдағы токенді өзекті күйде ұстау үшін Marketplace агентін пайдалану мақсатында Terraform манифесінде агентті орнатуға тыйым жоқ екеніне көз жеткізіңіз:
agent_install = false.Егер
agent_installаргументі көрсетілмесе немесеtrueмәніне ие болса, агент image-based қолданбаңызды орналастыру процесінде автоматты түрде орнатылады.
API-ге алғаш жүгінген кезде Terraform манифесінің token_file_path параметрінде көрсетілген файлдан токенді шығарып алыңыз. Кейінгі жүгінулерде токенді алу тәсілі қолданбаңыздың инстансында агенттің орнатылғанына байланысты болады.
Terraform манифесінің token_file_path параметрінде көрсетілген файлдан токеннің өзекті нұсқасын шығарып алыңыз.
- Жіберілетін метрикалар мен осы метрикаларды жинау уақытын (
base_date) қамтитын JSON-файлды қалыптастырыңыз. - Файлды UTC форматындағы уақыт белгісімен (
timestamp) толықтырыңыз.
Жіберуге арналған бастапқы деректері бар JSON-файл мысалы:
{"payload": {"metrics": [{"id": 5001,"param": "cpu_usage","value": 85.5},{"id": 5002,"param": "ram_usage","value": 16384}],"base_date": "2024-03-20T14:00:00Z"},"timestamp": "2024-03-20T14:00:00Z"}
Бір ретте 50-ден артық метрика жіберуге болмайды.
-
AES-256 симметриялық шифрлауы үшін кілт жасаңыз. Генерация параметрлері:
- Әдіс:
crypto/randкриптографиялық тұрғыдан қауіпсіз кездейсоқ сандар генераторы. - Кілт өлшемі: 32 байт.
- Әдіс:
-
CBC (Cipher Block Chaining) шифрлау режимі үшін инициализация векторын (IV) жасаңыз. Генерация параметрлері:
- Әдіс:
crypto/randкриптографиялық тұрғыдан қауіпсіз кездейсоқ сандар генераторы. - IV өлшемі: 16 байт.
- Әдіс:
-
Бастапқы деректері бар JSON-файлды шифрлаңыз. Шифрлау параметрлері:
- Алгоритм: CBC режиміндегі AES.
- Толықтыру схемасы (padding): PKCS7.
- Кілт: алдыңғы қадамдарда жасалған 32 байттық кілт.
- IV: алдыңғы қадамдарда жасалған 16 байттық инициализация векторы.
-
Симметриялық шифрлауға арналған кілт пен инициализация векторын шифрлаңыз. Шифрлау параметрлері:
- Алгоритм: OAEP толықтыру схемасы бар RSA.
- Хеш-функция: SHA-256.
- Кілт: бұрын алынған ашық кілт.
-
API-ге сұрау мазмұнын келесі құрылымды пайдаланып қалыптастырыңыз:
{"encryptedPayload": "<ЗАШИФРОВАННЫЕ_ДАННЫЕ>","encryptedKey": "<ЗАШИФРОВАННЫЙ_КЛЮЧ>","encryptedIV": "<ЗАШИФРОВАННЫЙ_IV>"}Мұнда:
<ЗАШИФРОВАННЫЕ_ДАННЫЕ>— бастапқы деректері бар шифрланған JSON-файл.<ЗАШИФРОВАННЫЙ_КЛЮЧ>— симметриялық шифрлауға арналған шифрланған кілт.<ЗАШИФРОВАННЫЙ_IV>— шифрланған инициализация векторы.
VK Cloud жүйесіне метрикаларды беру процесін жөндеу үшін Marketplace API-ге сұрау орындаңыз:
curl -X POST https://kz.cloud.vk.com/marketplace/api/infra-api/v1-public/metrics/decrypt \-H 'Authorization: Bearer <ТОКЕН>' \-H 'Content-Type: application/json' \--data-raw '{"encryptedPayload": "<ЗАШИФРОВАННЫЕ_ДАННЫЕ>","encryptedKey": "<ЗАШИФРОВАННЫЙ_КЛЮЧ>","encryptedIV": "<ЗАШИФРОВАННЫЙ_IV>"}'
Мұнда:
<ТОКЕН>— API-ге қол жеткізу токені.<ЗАШИФРОВАННЫЕ_ДАННЫЕ>— бастапқы деректері бар шифрланған JSON-файл.<ЗАШИФРОВАННЫЙ_КЛЮЧ>— симметриялық шифрлауға арналған шифрланған кілт.<ЗАШИФРОВАННЫЙ_IV>— шифрланған инициализация векторы.
Сұрау сәтті өңделсе, API берілген метрикалардың тізімін қайтарады.
Жауап мысалы:
{"payload": {"metrics_ids": [5001, 5002],"timestamp": "2024-03-20T14:00:02Z"},"signature": "<ЗАШИФРОВАННАЯ_ПОДПИСЬ>",}
Marketplace API-ге сұрау орындаңыз:
curl -X POST https://kz.cloud.vk.com/marketplace/api/infra-api/v1-public/metrics/push \-H 'Authorization: Bearer <ТОКЕН>' \-H 'Content-Type: application/json' \--data-raw '{"encryptedPayload": "<ЗАШИФРОВАННЫЕ_ДАННЫЕ>","encryptedKey": "<ЗАШИФРОВАННЫЙ_КЛЮЧ>","encryptedIV": "<ЗАШИФРОВАННЫЙ_IV>"}'
Мұнда:
<ТОКЕН>— API-ге қол жеткізу токені.<ЗАШИФРОВАННЫЕ_ДАННЫЕ>— бастапқы деректері бар шифрланған JSON-файл.<ЗАШИФРОВАННЫЙ_КЛЮЧ>— симметриялық шифрлауға арналған шифрланған кілт.<ЗАШИФРОВАННЫЙ_IV>— шифрланған инициализация векторы.
Сұрау сәтті өңделсе, API берілген метрикалардың тізімін қайтарады.
Жауап мысалы:
{"payload": {"metrics_ids": [5001, 5002],"timestamp": "2024-03-20T14:00:02Z"},"signature": "<ЗАШИФРОВАННАЯ_ПОДПИСЬ>",}