π ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β Zero Trust Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π°ΡΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ
ΠΡ ΡΠ°Π΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Tuna β ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΉ reverse proxy, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ Π»ΡΠ±ΠΎΠΉ Π²Π°Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, SSO ΠΈ Π³ΡΠ°Π½Ρ Π»ΡΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ° β Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ°ΠΌΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅.
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ?β
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅: Ρ Π²Π°Ρ Π΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠ΅ΡΠ²ΠΈΡ β Π°Π΄ΠΌΠΈΠ½ΠΊΠ°, staging-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, Grafana, Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ API. ΠΡ Ρ ΠΎΡΠΈΡΠ΅ Π΄Π°ΡΡ ΠΊ Π½Π΅ΠΌΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΠΌ Π»ΡΠ΄ΡΠΌ, ΠΈΠ· Π½ΡΠΆΠ½ΡΡ ΡΡΡΠ°Π½, Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ SSO. Π Π°Π½ΡΡΠ΅ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ Π²ΠΎΠ·Π½Ρ Ρ nginx, oauth2-proxy, ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°.
Π‘ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Tuna ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ: ΠΊΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠ°ΠΊ ΠΎΠ½ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π»ΡΡ, ΠΎΡΠΊΡΠ΄Π° ΠΏΡΠΈΡΡΠ» ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ ΠΏΡΠ°Π²ΠΎ Π²ΠΈΠ΄Π΅ΡΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΡΡ. ΠΡΡ ΡΡΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΡΡ.
Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
- Π·Π°ΠΊΡΡΡΡ Π»ΡΠ±ΠΎΠΉ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅;
- Π³ΡΠ°Π½ΡΠ»ΡΡΠ½ΠΎ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
/admin/*ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠ· Π ΠΎΡΡΠΈΠΈ, Π°/api/healthΠΎΡΠΊΡΡΡΡ Π±Π΅Π· Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ; - ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ SSO (Google, Yandex, GitHub, GitLab, VK, Π»ΡΠ±ΠΎΠΉ OIDC-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ);
- ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ MFA ΠΈΠ»ΠΈ ΡΡΡΠ½ΠΎΠ΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ;
- ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π±Π΅Π· ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ IP ΡΠ΅ΡΠ΅Π· ΡΡΠ½Π½Π΅Π»Ρ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ;
- Π²ΡΠ΄Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ Π΄Π»Ρ CI/CD, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ²Π° ΡΠ΅ΠΆΠΈΠΌΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΡΡΠ°ΡΠΈΠΊΠ°β
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Tuna Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡΡ Π΄ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ°.
| Π Π΅ΠΆΠΈΠΌ | ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ |
|---|---|
| ΠΡΠΎΠΊΡΠΈ | Π‘Π΅ΡΠ²ΠΈΡ ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΠΎ ΡΠ΅ΡΠΈ β Π² Kubernetes, ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΉ VM ΠΈΠ»ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅ΡΠΈ, ΡΡΠΎ ΠΈ Π½ΠΎΠ΄Π°. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ upstream Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ Π²Π΅ΡΠ°ΠΌ |
| Π’ΡΠ½Π½Π΅Π»Ρ | Π‘Π΅ΡΠ²ΠΈΡ Π±Π΅Π· ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ IP β Π·Π° NAT, Π½Π° dev-ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΡΠΊΠ΅Π½Π΄ ΡΠ°ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ Tuna ΡΠ΅ΡΠ΅Π· ΠΊΠ»ΠΈΠ΅Π½Ρ-Π°Π³Π΅Π½Ρ |
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ½Π½Π΅Π»Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
tuna app <ΠΈΠΌΡ> --url=http://127.0.0.1:8080
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π΅Ρ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ β ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π·Π°ΡΠΈΡΡΠ½Π½ΡΠΉ Π΄ΠΎΠΌΠ΅Π½.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ° β ΡΠ΅ΡΠ΄ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡβ
ΠΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ. ΠΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°, ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΡΠΈ ΡΠΎΠ²ΠΏΠ°Π», ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ΄ΡΠ±Ρ Π·Π°ΠΏΡΠΎΡΠ°: ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ, ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ MFA, Π·Π°ΠΏΡΠΎΡΠΈΡΡ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ°Π·Π°ΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏ Π·Π°ΠΏΡΠ΅ΡΡΠ½.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° β ΡΡΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΏΡΡΠΈ (glob-ΡΠ°Π±Π»ΠΎΠ½ Π²ΡΠΎΠ΄Π΅ /admin/*) ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:
- Π Π°Π·ΡΠ΅ΡΠΈΡΡ β Π΄ΠΎΡΡΡΠΏ ΠΏΡΠΈ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»;
- Π’ΡΠ΅Π±ΠΎΠ²Π°ΡΡ MFA β ΡΠΎ ΠΆΠ΅ ΠΏΠ»ΡΡ Π²ΡΠΎΡΠΎΠΉ ΡΠ°ΠΊΡΠΎΡ (TOTP ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ Π½Π° email);
- ΠΠ°ΠΏΡΠ΅ΡΠΈΡΡ β Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°;
- ΠΡΠΎΠΏΡΡΡΠΈΡΡ β ΠΏΡΡΡ Π±Π΅Π· Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ (health check, webhook-ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ).
ΠΠ½ΡΡΡΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° β ΠΊΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΡΠΏ. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΡΠ΅ΠΆΠΈΠΌΠ°ΠΌ OR / AND / NOT ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ²:
| Π’ΠΈΠΏ ΠΏΡΠ°Π²ΠΈΠ»Π° | ΠΡΠΈΠΌΠ΅Ρ |
|---|---|
| ΠΠΎΠΌΠ°Π½Π΄Π° / Email / Email RegExp | .*@company\.com$ |
| IP / CIDR | 10.0.0.0/8 |
| Π‘ΡΡΠ°Π½Π° (GeoIP) | RU, US, DE |
| Π‘ΠΏΠΎΡΠΎΠ± Π²Ρ ΠΎΠ΄Π° | oidc, otp, mfa |
| ΠΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ | google |
| Service Token | ΠΌΠ°ΡΠΈΠ½Π½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ |
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ /admin/* ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π ΠΎΡΡΠΈΠΈ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ Β«ΠΠΎΠΌΠ°Π½Π΄Π°Β» (or) ΠΈ Β«Π‘ΡΡΠ°Π½Π°: RUΒ» (and).
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π΅Π· ΡΠΈΡΠΊΠ°β
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π’Π΅ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ β ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡ Ρ Π»ΡΠ±ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΈΠΉ.
ΠΡ ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ SSOβ
Π‘ΠΏΠΎΡΠΎΠ±Ρ Π²Ρ ΠΎΠ΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡΡΡΡ β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ²ΠΈΠ΄ΠΈΡ ΠΈΡ Π²ΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²Ρ ΠΎΠ΄Π°:
- Email OTP β ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π½Π° email, ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ΄ΡΠΈΠΊΠΎΠ²;
- ΠΠΊΠΊΠ°ΡΠ½ΡΡ tuna.am β Π²Ρ ΠΎΠ΄ ΡΠ΅ΡΠ΅Π· Π»ΠΈΡΠ½ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ;
- ΠΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ β Π²Π½Π΅ΡΠ½ΠΈΠ΅ Identity Provider (Google, Yandex, GitHub, GitLab, VK, Π»ΡΠ±ΠΎΠΉ OIDC).
ΠΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρβ
ΠΠ°ΠΏΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ° β Π΄Π»Ρ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΡΡΠ½ΠΎΠ΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡ ΠΏΡΠΈΡΠΈΠ½Ρ, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΎΠ΄ΠΎΠ±ΡΠΈΡ Π΄ΠΎΡΡΡΠΏ Π½Π° Π½ΡΠΆΠ½ΡΠΉ ΡΡΠΎΠΊ (ΠΎΡ 15 ΠΌΠΈΠ½ΡΡ Π΄ΠΎ Π±Π΅ΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ).
Π‘Π΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ β ΠΌΠ°ΡΠΈΠ½Π½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ CI/CD, ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ². ΠΠ°ΡΠ° Client ID + Client Secret, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ . ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠ°ΡΠΈΡ Ρ grace-ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠΌ β ΠΎΠ±Π½ΠΎΠ²Π»ΡΠΉΡΠ΅ ΡΠ΅ΠΊΡΠ΅Ρ Π±Π΅Π· ΠΏΡΠΎΡΡΠΎΡ.
curl -H 'Tuna-Access-Client-Id: sat_...' \
-H 'Tuna-Access-Client-Secret: ...' \
https://your-app.example.com/
Π‘Π΅ΡΡΠΈΠΈ β ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΠΈΠ΄ΡΡ ΡΠ²ΠΎΠΈ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ β ΡΠ΅ΡΡΠΈΠΈ Π²ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ (IP, ΡΡΡΠ°Π½Π°, User-Agent, ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ). ΠΡΠ±ΡΡ ΡΠ΅ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ·Π²Π°ΡΡ, Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠΠ°ΠΊΡΡΡΡ Π²ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈΒ» Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΠΈΡ ΡΠ°Π·ΠΎΠΌ.
ΠΠΈΠ±ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠΊΡΠΈ β Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΈ ΠΎΡΠ²Π΅ΡΠ°, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΠ΅ΠΉ, CORS, Π»ΠΈΠΌΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ΅Π»Π°, TLS Π΄ΠΎ upstream ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ (mTLS).
ΠΠΎΠ»Π½ΡΠΉ Π°ΡΠ΄ΠΈΡβ
ΠΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π°ΡΠ΄ΠΈΡ-Π»ΠΎΠ³: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ ΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡ ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ°, ΠΎΡΠ·ΡΠ² ΡΠ΅ΡΡΠΈΠΉ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π΅ΡΠ°Π»ΠΈ β ΠΊΡΠΎ, ΠΊΠΎΠ³Π΄Π°, ΠΎΡΠΊΡΠ΄Π° ΠΈ ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρβ
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΆΠΌΠΈΡΠ΅ + ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β ΠΈ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π·Π° ΠΏΠ°ΡΡ ΠΌΠΈΠ½ΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ β Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
- ΠΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ°
- ΠΠ°ΠΏΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ°
- Π‘Π΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ
- Π‘Π΅ΡΡΠΈΠΈ
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΡΠ°Π²ΡΡΠ΅ ΠΎΡΠ·ΡΠ²β
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Tuna, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ Π²Ρ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡΠ½Ρ ΡΠ΅ΠΌ Π»ΠΈΠ±ΠΎ, ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΎΡΠ·ΡΠ².
ΠΠΎΠΌΠΎΡΡβ
ΠΡ ΡΠ΅Π½ΠΈΠΌ Π½Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ tuna β ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΡΠΆΠΈΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²: