Անցնել պարունակությանը

X-Road անվտանգության սերվերի տեղակայման ուղեցույց

NISS-ը (Nordic Institute for Interoperability Solutions) առաջարկում է տեղակայման երկու տարբերակ՝

  • Վիրտուալ մեքենաների (Virtual Machines) միջոցով՝ օգտագործելով Ansible Playbook
  • Kubernetes կլաստերում՝ օգտագործելով X-tee Helm Chart

Վիրտուալ մեքենաների (Virtual Machines) միջոցով տեղակայման համար աջակցվող օպերացիոն համակարգերն են Ubuntu 24.04-ը և Red Hat 9-ը։ Անվտանգության սերվերի (Security Server) տվյալ տարբերակի համար առաջարկվող տվյալների բազան PostgreSQL 16-ն է։ X-Road-ի պաշտոնական փաստաթղթերի համաձայն՝ մեկ Անվտանգության սերվերի նվազագույն ռեսուրսային պահանջներն են՝

  • 2 CPU
  • 4 GB RAM
  • 100 Mbps ցանցային ինտերֆեյս

X-Road անվտանգության սերվերը անդամների միջև տվյալների փոխանակման և սերվերի կառավարման համար կիրառում է մի շարք պորտեր՝

  • 5500 (HTTPS) - Հանրային (պետք է հասանելի լինի համացանցով), օգտագործվում է Անվտանգության սերվերների (Security Server) միջև տվյալների փոխանակման համար։
  • 5577 (OCSP) - Հանրային (պետք է հասանելի լինի համացանցով), օգտագործվում է Անվտանգության սերվերների (Security Server) միջև տվյալների փոխանակման համար։
  • 8080 (HTTP) - Միայն ներքին ցանցով, օգտագործվում է ծառայությունների կողմից X-Road ցանցին հասանելիություն ապահովելու համար։
  • 8443 (HTTPS) - Միայն ներքին ցանցով, օգտագործվում է ծառայությունների կողմից X-Road ցանցին հասանելիություն ապահովելու համար։
  • 4000 (HTTPS) - Միայն ներքին ցանցով, օգտագործվում է Administration UI-ի համար։

Տեղակայումից առաջ խնդրում ենք կապ հաստատել ՀՏՀԳ-ի հետ՝ x-road@isaa.am էլ․ հասցեով configuration anchor-ը և Ձեր member code-ը ստանալու համար։ Այս տեղեկատվությունը անհրաժեշտ է հետ-տեղակայման Անվտանգության սերվերի (post-deployment Security Server) կարգավորումների համար։

Տեղակայում վիրտուալ մեքենաների (Virtual Machines) միջոցով՝ օգտագործելով Ansible

Ansible-ի միջոցով անվտանգության սերվերը տեղակայելու համար անհրաժեշտ է կլոնավորել X-Road Git պահոցը (https://github.com/nordic-institute/X-Road), անցնել 7.8.0 թեգին և մուտք գործել ansible թղթապանակ։

cd path/to/working/directory

git clone https://github.com/nordic-institute/X-Road.git
git checkout 7.8.0

cd ./ansible
Այդ թղթապանակում անհրաժեշտ է ստեղծել հետևյալ ֆայլը՝ ../ansible/hosts/hosts.txt։

[ss_servers]
${VM-IP-ADDRESS} ansible_ssh_user=${VM-USER}

[example:children]
ss_servers

[ss_servers:vars]
variant=vanilla
Որտեղ՝

  • VM-IP-ADDRESS - վիրտուալ մեքենայի (Virtual Machine) IP հասցեն և SSH պորտը, եթե այն լռելյայնը չէ։
  • VM-USER - վիրտուալ մեքենայի (Virtual Machine) օգտատեր, որն ունի sudo հասանելիություն, կամ root օգտատերը։

X-Road դիստրիբյուտիվները (distributions) համատեղում են այնպիսի կարգավորում, որտեղ տվյալների բազան տեղադրված է նույն մեքենայի (machine) վրա, ինչ սերվերը, սակայն վերջինս խորհուրդ չի տրվում նույնիսկ թեստային միջավայրերի համար։ Փոխարենը պետք է նշել առանձին տվյալների բազայի միջավայրը անվտանգության սերվերի փոփոխականների ֆայլում։

Խնդրում ենք համոզվել, որ PostgreSQL-ը հասանելի է ցանցին միացված ինտերֆեյսի միջոցով (լռելյայն օգտագործվում է localhost-ը), և որ pg_hba.conf ֆայլը կարգավորված է այնպես, որ ընդունի Ձեր ցանցից եկող հարցումները բոլոր օգտատերերի համար։

Օրինակ՝

../ansible/vars_files/ss_database.yaml

database_host: "127.0.0.1:5432"
database_admin_password: "superuser-password" ## password of postgres user
database_admin_password-ը միշտ պետք է լինի postgres օգտատիրոջ գաղտնաբառը։ Superuser-ը կիրառվում է միայն սերվերի համար տվյալների բազան կարգավորելու ընթացքում և հետագայում այլևս չի օգտագործվում սերվերի կողմից։

Այնուհետև միացրեք օպերացիոն մոնիթորինգը, եթե այն արդեն միացված չէ՝

../ansible/vars_files/base.yaml

xroad_install_opmonitoring: true
Տեղակայեք անվտանգության սերվերը՝ կիրառելով հետևյալ հրահանգը՝

ansible-playbook -i hosts/hosts.txt xroad_init.yml

Kubernets-ի տեղակայում՝ օգտագործելով Helm Chart

Անվտանգության սերվերը Helm Chart-ի օգնությամբ տեղակայելու համար անհրաժեշտ է կլոնավորել X-Road-Helm Git-ի պահոցը և անցնել helm/security-server թղթապանակ։

Թղթապանակում անհրաժեշտ է խմբագրել values.yaml ֆայլը որպեսզի․

1․ Սահմանել անվտանգության սերվերի տարբերակը 7.7.0։

image:
  ...
  primaryTag: "7.7.0-primary"
  secondaryTag: "7.7.0-secondary"

2․ Սահմանել անվտանգության սերվերի PIN-ը և ստեղծել առաջին ադմին օգտատեր (Kubernetes Secret-ից)։

  envSecretName: ${XROAD-USER-SECRET}

Այստեղ XROAD-USER-SECRET-ը նախապես ստեղծված Kubernetes Secret է, որը պետք է պարունակի հետևյալ բանալիները (key)` - XROAD_TOKEN_PIN - XROAD_ADMIN_USER - XROAD_ADMIN_PASSWORD

XROAD_TOKEN_PIN-ը պետք է լինի գաղտնաբառ (passphrase)՝ բաղկացած մեծատառերից, փոքրատառերից, նշաններից և թվերից (նվազագույնը 10 նիշ)։

3․ Տրամադրել տվյալների բազայի secret-ը՝ superuser-ի գաղտնաբառով (Kubernetes Secret-ից)։

dbHost: "your-db-hostname"
dbSecretName: {XROAD-DB-SECRET}
Այստեղ XROAD-DB-SECRET-ը նախապես ստեղծված Kubernetes Secret է, որը պետք է պարունակի գաղտնաբառի բանալին (password key)՝ որպես արժեք ունենալով postgres օգտատիրոջ գաղտնաբառը։

4․ Տրամադրել SSH բանալիները (keys), որպեսզի secondary pod-երը կարողանան սինխրոնիզացնել իրենց կոնֆիգուրացիան primary pod-ից։

sshSecretName: ${XROAD-SSH-SECRET}
Այստեղ XROAD-SSH-SECRET-ը նախապես ստեղծված Kubernetes Secret է, որը պետք է պարունակի հետևյալ բանալիները (key)՝

  • private-key
  • public-key

5․ Կիրառել Helm chart։ Կարգավորել PVC volume-ների չափերը և ծառայության տեսակը (անհրաժեշտության դեպքում): Լռելյայն կարգավորումներն են՝

serviceType: NodePort
...
etcVolumeSize: 100Mi
libVolumeSize: 1000Mi
Օգտագործել հետևյալ հրահանգը կլաստերում տեղակայելու համար՝

helm install security-server -n test-ss -f helm/security-server/values.yaml helm/security-server 

Տեղեկայումից հետո, հետևեք X-Road Անվտանգության սերվերի կարգավորման ուղեցույցի քայլերին՝ տեղադրման գործընթացը շարունակելու համար։

Տեսանյութ-ուղեցույց

Ստորև ներկայացված է տեսանյութ, որը ներառում է այս ուղեցույցում նկարագրված քայլերը։