Apache APISIX Ecosystem में HashiCorp Vault सुरक्षित स्टोरेज बैकेंड
API7.ai
January 24, 2022
माइक्रोसर्विस-आधारित आर्किटेक्चर के उदय के साथ, चीजों को सुरक्षित रखना पहले की तुलना में कहीं अधिक चुनौतीपूर्ण हो गया है। हम उस बिंदु से काफी आगे निकल चुके हैं जहां हमारे 100 बैकेंड सर्वर इंस्टेंस एक स्थिर क्रेडेंशियल के साथ हमारे डेटाबेस सर्वर तक पहुंच रहे थे, क्योंकि अगर क्रेडेंशियल लीक हो जाता है तो पूरा सिस्टम समझौता हो जाता है और उस क्रेडेंशियल को रद्द करने से बड़े पैमाने पर सेवा बाधित होती है (अब कोई भी कुछ भी एक्सेस नहीं कर सकता जब तक कि इंस्टेंस को पुनः कॉन्फ़िगर न किया जाए)। हम सुरक्षा उल्लंघन की संभावना को पूरी तरह से खत्म नहीं कर सकते क्योंकि कभी-कभी अप्रत्याशित घटनाएं होती हैं। इसके बजाय, इन स्थितियों में ब्लास्ट रेडियस को नियंत्रित करना पूरी तरह से हम पर निर्भर है। इस तरह के परिदृश्यों से निपटने के लिए, HashiCorp Vault जैसा लोकप्रिय समाधान प्रोडक्शन वातावरण में एक आइडेंटिटी-आधारित सीक्रेट्स और एन्क्रिप्शन प्रबंधन प्रणाली के रूप में सामने आता है। इस लेख में, मैंने Vault को Apache APISIX (एक क्लाउड-नेटिव API गेटवे) के jwt-auth प्लगइन के साथ एकीकृत करके दोनों दुनियाओं की उत्कृष्टता का प्रभावी ढंग से उपयोग करने का प्रदर्शन किया है।
Vault क्या है
HashiCorp Vault को संगठनों को सीक्रेट्स तक पहुंच प्रबंधित करने और उन्हें सुरक्षित रूप से संचारित करने में मदद करने के लिए डिज़ाइन किया गया है। सीक्रेट्स को किसी भी प्रकार के संवेदनशील क्रेडेंशियल के रूप में परिभाषित किया जाता है जिन्हें कड़े नियंत्रण और निगरानी की आवश्यकता होती है और जिनका उपयोग संवेदनशील जानकारी को अनलॉक करने के लिए किया जा सकता है। सीक्रेट्स पासवर्ड, API कुंजी, SSH कुंजी, RSA टोकन, या OTP के रूप में हो सकते हैं। वास्तविक दुनिया में, जहां सीक्रेट स्प्रॉल (जहां सीक्रेट्स कॉन्फ़िग फ़ाइल में या वास्तविक प्रोग्राम कोड में एक वेरिएबल के रूप में संग्रहीत हो जाते हैं) होना बहुत आम है, जो कभी-कभी GitHub, BitBucket या GitLab जैसे वर्जन कंट्रोल सिस्टम में भी समाप्त हो जाते हैं, सुरक्षा के लिए एक बड़ा खतरा पैदा करते हैं। Vault इस समस्या को सीक्रेट्स को केंद्रीकृत करके हल करता है। यह स्थिर सीक्रेट्स के लिए एन्क्रिप्टेड स्टोरेज, TTL लीज के साथ डायनामिक सीक्रेट्स का जनरेशन, उपयोगकर्ताओं (मशीनों या मनुष्यों) की प्रमाणीकरण प्रदान करता है ताकि यह सुनिश्चित किया जा सके कि वे किसी विशेष सीक्रेट तक पहुंचने के लिए अधिकृत हैं और भी बहुत कुछ। ताकि सुरक्षा उल्लंघन की स्थिति में भी ब्लास्ट रेडियस बहुत छोटा और नियंत्रित हो।
Vault हमें हमारे इन्फ्रास्ट्रक्चर में हर सीक्रेट को प्रबंधित करने के लिए एक एकीकृत इंटरफ़ेस प्रदान करके पहुंच को नियंत्रित और प्रबंधित करना बहुत आसान बनाता है। न केवल यह, यह विस्तृत ऑडिट लॉग बनाने और यह ट्रैक रखने की लचीलापन भी प्रदान करता है कि किसने क्या एक्सेस किया।

APISIX jwt-auth प्लगइन के बारे में
यह एक प्रमाणीकरण प्लगइन है जो किसी भी APISIX रूट से जुड़ा जा सकता है ताकि अनुरोध को अपस्ट्रीम URI पर फॉरवर्ड करने से पहले JWT (JSON वेब टोकन, और पढ़ें) प्रमाणीकरण किया जा सके। संक्षेप में, यह एक सुरक्षित प्रमाणीकरण तंत्र है जो महत्वपूर्ण संसाधनों तक पहुंच के लिए अधिकृत करता है। आमतौर पर, JWT को साइन करने के लिए एक निजी कुंजी या एक टेक्स्ट सीक्रेट का उपयोग किया जाता है। JWT प्राप्त करने वाला साइनचर को सत्यापित करेगा ताकि यह सुनिश्चित किया जा सके कि टोकन को इश्यूअर द्वारा साइन करने के बाद इसे बदला नहीं गया है। पूरे jwt तंत्र की अखंडता साइनिंग सीक्रेट (चाहे वह टेक्स्ट सीक्रेट हो या RSA कुंजी जोड़ी) पर निर्भर करती है। यह अनधिकृत स्रोतों के लिए साइनिंग कुंजी का अनुमान लगाना और JWT के भीतर दावों को बदलने का प्रयास करना मुश्किल बनाता है।
इसलिए इन कुंजियों को सुरक्षित वातावरण में संग्रहीत करना अत्यंत महत्वपूर्ण है। गलत हाथों में पड़ने से पूरे इन्फ्रास्ट्रक्चर की सुरक्षा खतरे में पड़ सकती है। हालांकि हम APISIX की ओर से सभी मानक SecOps प्रथाओं का पालन करने के लिए सभी साधन अपनाते हैं, प्रोडक्शन वातावरण में HashiCorp Vault जैसी केंद्रीकृत कुंजी प्रबंधन समाधान होना काफी स्वाभाविक है ताकि विस्तृत ऑडिट ट्रेल्स, आवधिक कुंजी रोटेशन, कुंजी रद्दीकरण आदि हो सके। और यह काफी परेशानी भरा मुद्दा होगा यदि हर बार जब पूरे इन्फ्रास्ट्रक्चर में कुंजी रोटेशन होता है तो आपको Apache APISIX कॉन्फ़िगरेशन को अपडेट करना पड़े।
Apache APISIX के साथ Vault का उपयोग करने के चरण
Vault के साथ एकीकरण के लिए, Apache APISIX को config.yaml में Vault कॉन्फ़िगरेशन के साथ लोड किया जाना चाहिए।
आंतरिक रूप से, APISIX Vault सर्वर KV सीक्रेट इंजन v1 HTTP APIs के साथ संचार करता है। चूंकि अधिकांश एंटरप्राइज़ समाधान अपने प्रोडक्शन वातावरण में KV सीक्रेट्स इंजन - वर्जन 1 के साथ रहना पसंद करते हैं, APISIX-Vault समर्थन के प्रारंभिक चरण में हमने केवल वर्जन 1 के साथ ही समर्थन दिया है। बाद के रिलीज़ में, हम K/V वर्जन 2 का समर्थन जोड़ेंगे।
Vault का उपयोग करने का मुख्य विचार, APISIX etcd बैकेंड के बजाय, कम विश्वास वाले वातावरण में सुरक्षा चिंता है। हम, APISIX डेवलपर्स, आपकी प्राथमिकताओं को गंभीरता से समझते हैं। इसीलिए हम Vault एक्सेस टोकन का उपयोग करने की सलाह देते हैं जो कम स्कोप वाले होते हैं और APISIX सर्वर को सीमित पहुंच प्रदान कर सकते हैं।
Vault कॉन्फ़िगर करें
यदि आपके पास पहले से ही आवश्यक विशेषाधिकारों के साथ एक Vault इंस्टेंस चल रहा है, तो इस अनुभाग को छोड़ने के लिए स्वतंत्र महसूस करें। यह अनुभाग Apache APISIX इकोसिस्टम के अंदर Vault का उपयोग करने की सर्वोत्तम प्रथाओं को साझा करता है। कृपया नीचे दिए गए चरणों का पालन करें।
चरण 1: एक Vault सर्वर स्पिन अप करें
यहां आपके पास कई विकल्प हैं, Docker, प्रीकंपाइल्ड बाइनरी या स्रोत से बिल्ड करने के बीच चुनने के लिए स्वतंत्र महसूस करें। चूंकि Vault सर्वर के साथ संचार करने के लिए आपको एक Vault CLI क्लाइंट की आवश्यकता होती है, मैं Docker दृष्टिकोण के बजाय प्रीकंपाइल्ड बाइनरी के साथ जाना पसंद करूंगा। वैसे भी, यह पूरी तरह से आप पर निर्भर है (Vault के आधिकारिक इंस्टॉलेशन दस्तावेज़ से परामर्श करने के लिए स्वतंत्र महसूस करें)। एक डेवलपमेंट सर्वर स्पिन अप करने के लिए, कृपया निम्नलिखित कमांड चलाएं।
$ vault server -dev -dev-root-token-id=root … WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memory and starts unsealed with a single unseal key. The root token is already authenticated to the CLI, so you can immediately begin using Vault. You may need to set the following environment variable: export VAULT_ADDR='http://127.0.0.1:8200' The unseal key and root token are displayed below in case you want to seal/unseal the Vault or re-authenticate. Unseal Key: 12hURx2eDPKK1tzK+8TkgH9pPhPNJFpyfc/imCLgJKY= Root Token: root Development mode should NOT be used in production installations!
अपने वर्तमान CLI को सही पर्यावरण चर के साथ सेट करें।
export VAULT_ADDR='http://127.0.0.1:8200' export VAULT_TOKEN='root'
एक उपयुक्त पथ प्रीफ़िक्स के साथ Vault k/v वर्जन 1 सीक्रेट इंजन बैकेंड को सक्षम करें। इस डेमो में, हम kv पथ चुनने जा रहे हैं ताकि हमें Vault डिफ़ॉल्ट सीक्रेट पथ के साथ टकराव न हो।
$ vault secrets enable -path=kv -version=1 kv Success! Enabled the kv secrets engine at: kv/ # स्थिति की पुष्टि करने के लिए, चलाएं $ vault secrets list Path Type Accessor Description ---- ---- -------- ----------- cubbyhole/ cubbyhole cubbyhole_4eeb394c per-token private secret storage identity/ identity identity_5ca6201e identity store kv/ kv kv_92cd6d37 n/a secret/ kv kv_6dd46a53 key/value secret storage sys/ system system_2045ddb1 system endpoints used for control, policy and debugging
चरण 2: APISIX के लिए एक Vault एक्सेस टोकन जनरेट करें
यह लेख jwt-auth प्लगइन परिप्रेक्ष्य में Vault का उपयोग करने के बारे में है। इसलिए, एक APISIX उपभोक्ता (यदि आप APISIX इकोसिस्टम में उपभोक्ताओं से अपरिचित हैं, तो कृपया Apache APISIX उपभोक्ता के बारे में दस्तावेज़ पढ़ें) जिसका उपयोगकर्ता नाम jack है, jwt-auth प्लगइन (यदि Vault कॉन्फ़िगरेशन के साथ सक्षम है) Vault KV स्टोरेज में <vault.prefix inside config.yaml>/consumer/<consumer.username>/jwt-auth पर सीक्रेट/सीक्रेट्स की तलाश करता है। इस संदर्भ में, यदि आप kv/apisix नेमस्पेस (Vault पथ) को vault.prefix के रूप में config.yaml के अंदर सभी APISIX संबंधित डेटा पुनर्प्राप्ति के लिए असाइन कर रहे हैं, तो हम सुझाव देते हैं कि आप kv/apisix/consumer/. पथ के लिए एक पॉलिसी बनाएं। अंत में अतिरिक्त तारांकन () यह सुनिश्चित करता है कि पॉलिसी किसी भी पथ के लिए पढ़ने की अनुमति देती है जिसमें kv/apisix/consumer प्रीफ़िक्स हो।
HashiCorp कॉन्फ़िगरेशन भाषा (HCL) में एक पॉलिसी फ़ाइल बनाएं।
$ tee apisix-policy.hcl << EOF path "kv/apisix/consumer/*" { capabilities = ["read"] } EOF
Vault इंस्टेंस में पॉलिसी लागू करें।
$ vault policy write apisix-policy apisix-policy.hcl Success! Uploaded policy: apisix-policy
नई परिभाषित पॉलिसी के साथ एक टोकन जनरेट करें जिसे छोटे एक्सेस बाउंडरी के साथ कॉन्फ़िगर किया गया है।
$ vault token create -policy="apisix-policy" Key Value --- ----- token s.KUWFVhIXgoRuQbbp3j1eMVGa token_accessor nPXT3q0mfZkLmhshfioOyx8L token_duration 768h token_renewable true token_policies ["apisix-policy" "default"] identity_policies [] policies ["apisix-policy" "default"]
इस प्रदर्शन में s.KUWFVhIXgoRuQbbp3j1eMVGa आपका एक्सेस टोकन है।
Apache APISIX में Vault कॉन्फ़िगरेशन जोड़ें
जैसा कि पहले चर्चा की गई थी, Apache APISIX Vault इंस्टेंस के साथ Vault HTTP APIs के माध्यम से संचार करता है। आवश्यक कॉन्फ़िगरेशन को config.yaml में जोड़ा जाना चाहिए। यहां विभिन्न फ़ील्ड्स के बारे में संक्षिप्त जानकारी दी गई है जिनका आप उपयोग कर सकते हैं:
- host: वह होस्ट पता जहां Vault सर्वर चल रहा है।
- timeout: प्रत्येक अनुरोध के लिए HTTP टाइमआउट।
- token: Vault इंस्टेंस से जनरेट किया गया टोकन जो Vault से डेटा पढ़ने की अनुमति दे सकता है।
- prefix: एक प्रीफ़िक्स सक्षम करने से आप पॉलिसीज़ को बेहतर ढंग से लागू कर सकते हैं, सीमित स्कोप वाले टोकन जनरेट कर सकते हैं और APISIX से एक्सेस किए जा सकने वाले डेटा को कड़ाई से नियंत्रित कर सकते हैं। वैध प्रीफ़िक्स हैं (
kv/apisix,secretआदि।)
vault: host: 'http://0.0.0.0:8200' timeout: 10 token: 's.KUWFVhIXgoRuQbbp3j1eMVGa' prefix: 'kv/apisix'
एक APISIX उपभोक्ता बनाएं
APISIX में एक उपभोक्ता-स्तरीय एब्स्ट्रक्शन है जो प्रमाणीकरण परिदृश्यों के साथ साथ-साथ चलता है। किसी भी APISIX रूट के लिए प्रमाणीकरण सक्षम करने के लिए, एक उपभोक्ता की आवश्यकता होती है जिसमें उस विशिष्ट प्रकार की प्रमाणीकरण सेवा के लिए उपयुक्त कॉन्फ़िगरेशन हो। तभी APISIX अनुरोध को अपस्ट्रीम URI पर सफलतापूर्वक प्रमाणीकरण करके फॉरवर्ड कर सकता है। APISIX उपभोक्ता में दो फ़ील्ड होते हैं - एक username (आवश्यक) है जो एक उपभोक्ता को दूसरों से पहचानता है और दूसरा plugins है जो उपभोक्ता विशिष्ट प्लगइन कॉन्फ़िगरेशन रखता है।
यहां, इस लेख में, हम jwt-auth प्लगइन के साथ एक उपभोक्ता बनाएंगे। यह संबंधित रूट/सेवा के लिए JWT प्रमाणीकरण करता है।
Vault कॉन्फ़िगरेशन के साथ jwt-auth को सक्षम करने के लिए, निम्नलिखित अनुरोध करें:
$ curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "jack", "plugins": { "jwt-auth": { "key": "test-key", "vault": {} } } }'
यहां प्लगइन Vault पथ (<vault.prefix from conf.yaml>/consumer/jack/jwt-auth) में उपभोक्ता jack के लिए कुंजी सीक्रेट की तलाश करता है और इसे बाद के साइनिंग और JWT सत्यापन के लिए उपयोग करता है। यदि कुंजी उसी पथ में नहीं मिलती है, तो प्लगइन त्रुटि लॉग करता है और JWT प्रमाणीकरण करने में विफल होता है।
एक टेस्ट अपस्ट्रीम सर्वर सेट अप करें
व्यवहार का परीक्षण करने के लिए, आप एक अपस्ट्रीम (एक सरल पिंग हैंडलर जो पोंग लौटाता है) के लिए एक रूट बना सकते हैं। आप इसे एक साधारण Go HTTP-सर्वर के साथ सेट अप कर सकते हैं।
// सरल अपस्ट्रीम सर्वर package main import "net/http" func ping(w http.ResponseWriter, req *http.Request) { w.Write([]byte("secure/pong\n")) } func main() { http.HandleFunc("/secure/ping", ping) http.ListenAndServe(":9999", nil) }
प्रमाणीकरण सक्षम के साथ एक APISIX रूट बनाएं
इस सुरक्षित पिंग HTTP सर्वर और jwt-auth प्रमाणीकरण प्लगइन सक्षम के साथ एक APISIX रूट बनाएं।
$ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins": { "jwt-auth": {} }, "upstream": { "nodes": { "127.0.0.1:9999": 1 }, "type": "roundrobin" }, "uri": "/secure/ping" }'
jwt-auth प्लगइन से टोकन जनरेट करें
अब APISIX से एक JWT सीक्रेट साइन करें जिसका उपयोग APISIX सर्वर के लिए [http://localhost:9080/secure/ping](http://localhost:9080/secure/ping) प्रॉक्सी रूट पर अनुरोध करने के लिए किया जा सकता है।
$ curl http://127.0.0.1:9080/apisix/plugin/jwt/sign\?key\=test-key -i HTTP/1.1 200 OK Date: Tue, 18 Jan 2022 07:50:57 GMT Content-Type: text/plain; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Server: APISIX/2.11.0 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ0ZXN0LWtleSIsImV4cCI6MTY0MjU3ODY1N30.nkyev1_KUapVgY_QVYETsSApA6gEkDWS8tsHFV1EpD8
पिछले चरण में, यदि आप failed to sign jwt जैसा संदेश देखते हैं तो कृपया सुनिश्चित करें कि आपके पास Vault kv/apisix/consumers/jack/jwt-auth पथ में एक सीक्रेट कुंजी संग्रहीत है।
# उदाहरण $ vault kv put kv/apisix/consumer/jack/jwt-auth secret=$ecr3t-c0d3 Success! Data written to: kv/apisix/consumer/jack/jwt-auth
APISIX सर्वर से अनुरोध करें
अब, APISIX प्रॉक्सी के लिए रूट /secure/ping पर अनुरोध करें। सफल सत्यापन पर, यह अनुरोध को हमारे Go HTTP सर्वर पर फॉरवर्ड करेगा।
$ curl http://127.0.0.1:9080/secure/ping -H 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ0ZXN0LWtleSIsImV4cCI6MTY0MjU3ODU5M30.IYudBr7FTgRme70u4rEBoYNtGmGByzgfGlt8hctI__Q' -i HTTP/1.1 200 OK Content-Type: text/plain; charset=utf-8 Content-Length: 12 Connection: keep-alive Date: Tue, 18 Jan 2022 08:00:04 GMT Server: APISIX/2.11.0 secure/pong
किसी भी वैध JWT के बिना अनुरोध HTTP 401 Unauthorized त्रुटि फेंकेगा।
$ curl http://127.0.0.1:9080/secure/ping -i HTTP/1.1 401 Unauthorized Date: Tue, 18 Jan 2022 08:00:33 GMT Content-Type: text/plain; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Server: APISIX/2.11.0 {"message":"Missing JWT token in request"}
विभिन्न उपयोग के मामले जहां Vault को APISIX jwt-auth प्लगइन के साथ एकीकृत किया जा सकता है
Apache APISIX jwt-auth प्लगइन को सरल टेक्स्ट सीक्रेट कुंजियों के साथ-साथ RS256 पब्लिक-प्राइवेट कुंजी जोड़ी को Vault स्टोरेज से प्राप्त करने के लिए कॉन्फ़िगर किया जा सकता है।
:::note इस एकीकरण समर्थन के प्रारंभिक वर्जन के लिए, प्लगइन Vault पथ में संग्रहीत सीक्रेट्स की कुंजी नाम को [ secret, public_key, private_key] में से एक होने की उम्मीद करता है ताकि कुंजी का सफलतापूर्वक उपयोग किया जा सके। भविष्य के रिलीज़ में, हम कस्टम-नामित कुंजियों को संदर्भित करने का समर्थन जोड़ेंगे। :::
-
आपने Vault में HS256 साइनिंग सीक्रेट संग्रहीत किया है और आप इसे JWT साइनिंग और सत्यापन के लिए उपयोग करना चाहते हैं।
$ curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "jack", "plugins": { "jwt-auth": { "key": "key-1", "vault": {} } } }'यहां प्लगइन Vault पथ (
<vault.prefix from conf.yaml>/consumer/jack/jwt-auth) में उपभोक्ताjackके लिए कुंजीsecretकी तलाश करता है और इसे बाद के साइनिंग और JWT सत्यापन के लिए उपयोग करता है। यदि कुंजी उसी पथ में नहीं मिलती है, तो प्लगइन त्रुटि लॉग करता है और JWT प्रमाणीकरण करने में विफल होता है। -
RS256 RSA कुंजी जोड़ी, दोनों पब्लिक और प्राइवेट कुंजी Vault में संग्रहीत हैं।
$ curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "jim", "plugins": { "jwt-auth": { "key": "rsa-keypair", "algorithm": "RS256", "vault": {} } } }'प्लगइन Vault KV पथ (
<vault.prefix from conf.yaml>/consumer/jim/jwt-auth) मेंpublic_keyऔरprivate_keyकुंजियों की तलाश करता है जो प्लगइन Vault कॉन्फ़िगरेशन मेंjimके लिए उल्लिखित हैं। यदि नहीं मिलती है, तो प्रमाणीकरण विफल होता है।यदि आप अनिश्चित हैं कि Vault KV स्टोरेज में पब्लिक और प्राइवेट कुंजी कैसे संग्रहीत करें, तो इस कमांड का उपयोग करें:
# प्रदान की गई, आपके वर्तमान डायरेक्टरी में "public.pem" और "private.pem" नाम की फ़ाइलें हैं $ vault kv put kv/apisix/consumer/jim/jwt-auth public_key=@public.pem private_key=@private.pem Success! Data written to: kv/apisix/consumer/jim/jwt-auth -
उपभोक्ता कॉन्फ़िगरेशन में पब्लिक कुंजी, जबकि प्राइवेट कुंजी Vault में है।
$ curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "john", "plugins": { "jwt-auth": { "key": "user-key", "algorithm": "RS256", "public_key": "-----BEGIN PUBLIC KEY-----\n……\n-----END PUBLIC KEY-----" "vault": {} } } }'यह प्लगइन उपभोक्ता कॉन्फ़िगरेशन से RSA पब्लिक कुंजी का उपयोग करता है और Vault से सीधे प्राप्त
प्लगइन से वॉल्ट को अक्षम करे
अब, jwt-auth प्लगइन से वॉल्ट लुकअप को अक्षम करने के लिए उपभोक्ता प्लगइन कॉन्फ़िगरेशन से खाली वॉल्ट ऑब्जेक्ट को हटा दें (इस मामले में यह jack है)। यह jwt प्लगइन को साइनिंग सीक्रेट्स (HS256/HS512 या RS512 कीपेयर्स दोनों) को प्लगइन कॉन्फ़िगरेशन में खोजने के लिए सक्षम करेगा, जो URI रूट के लिए आगामी अनुरोधों के लिए होगा जहां jwt-auth कॉन्फ़िगरेशन सक्षम किया गया है। भले ही आपने APISIX config.yaml में वॉल्ट कॉन्फ़िगरेशन सक्षम किया हो, वॉल्ट सर्वर को कोई अनुरोध नहीं भेजा जाएगा।
APISIX प्लगइन्स हॉट-रीलोड होते हैं, इसलिए APISIX को पुनरारंभ करने की आवश्यकता नहीं है।
$ curl http://127.0.0.1:9080/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "jack", "plugins": { "jwt-auth": { "key": "test-key", "secret": "my-secret-key" } } }'
सारांश
यह लेख आपको Vault-Apache APISIX एकीकरण के आगामी रिलीज और संबंधित विवरण प्रदान करता है।
GitHub Discussions में चर्चा शुरू करने या मेलिंग लिस्ट के माध्यम से संवाद करने में संकोच न करें।