खाते और एक्सेस
Arkvory चार प्रकार की क्रेडेंशियल जानता है। लोग पासवर्ड से साइन इन करते हैं। उनके अपने टूल व्यक्तिगत एक्सेस टोकन इस्तेमाल करते हैं। CI सिस्टम और डिप्लॉयमेंट एजेंट सेवा कुंजियाँ इस्तेमाल करते हैं। इंस्टॉलर एक और कुंजी बनाता है—पुनर्प्राप्ति कुंजी—सेटअप और आपात स्थितियों के लिए। सर्वर हर अनुरोध को उस क्रेडेंशियल के आधार पर जाँचता है जिसके साथ वह आया।
कौन क्या कर सकता है
| क्रेडेंशियल | किसने बनाया | अवधि | प्रशासन | रिपॉज़िटरी एक्सेस |
|---|---|---|---|---|
| पासवर्ड सत्र | साइन इन करना | 12 घंटे | उपयोगकर्ता और समूह, अगर खाता व्यवस्थापक है | समूहों के ज़रिए, प्रत्येक रिपॉज़िटरी पर पढ़ना या लिखना |
| व्यक्तिगत एक्सेस टोकन | आप, पासवर्ड सत्र से | डिफ़ॉल्ट रूप से 90 दिन, अधिकतम 365 | कभी नहीं | आपके समूह, वैकल्पिक रूप से केवल पढ़ना |
| सेवा कुंजी | पुनर्प्राप्ति कुंजी या प्रत्यायोजित ऑपरेटर | डिफ़ॉल्ट रूप से 90 दिन, अधिकतम 365 | केवल वही जो स्वामी ने प्रत्यायोजित किया | सेवा खाता नीति, कुंजी द्वारा सीमित |
| पुनर्प्राप्ति कुंजी | इंस्टॉलर | जब तक आप उसे बदलते नहीं | उपयोगकर्ता, समूह, सेवा खाते, बैकअप | releases पर पढ़ना और लिखना |
तीन बातें आसानी से छूट सकती हैं:
- व्यवस्थापक खाता उपयोगकर्ताओं और समूहों का प्रबंधन करता है। यह फ़ाइलों तक एक्सेस नहीं देता। फ़ाइलों तक पहुँच केवल समूह अनुदानों के ज़रिए होती है।
- सेवा कुंजी पुनर्प्राप्ति कुंजी या ऑपरेटर कुंजी से बनाई जाती है, पासवर्ड सत्र से नहीं। जो व्यवस्थापक पासवर्ड से साइन इन करता है, वह सेवा खाते नहीं बना सकता।
- व्यक्तिगत टोकन या सेवा कुंजी कभी उपयोगकर्ता, समूह या अन्य टोकन नहीं बना सकते।
स्वामी और पुनर्प्राप्ति कुंजी
पहला खाता स्वामी होता है। यह एक व्यवस्थापक है। Windows सेटअप विज़ार्ड इसे बनाता है। Linux और Docker पर आप इसे कंसोल में पुनर्प्राप्ति कुंजी की मदद से बनाते हैं, जैसा वेब कंसोल में बताया गया है।
स्वामी arkvory-owners समूह का सदस्य होता है, जिसके पास releases रिपॉज़िटरी पर लिखने का एक्सेस है। किसी अन्य रिपॉज़िटरी के लिए, आप स्वयं किसी समूह को एक्सेस दें। समूह और रिपॉज़िटरी एक्सेस देखें।
पुनर्प्राप्ति कुंजी इंस्टॉलेशन डायरेक्टरी में फ़ाइल config/bootstrap-token.txt है। इसे केवल सर्वर का व्यवस्थापक पढ़ सकता है। इसे CI या क्लाइंट मशीनों पर कॉपी न करें। इंस्टॉलेशन और अपडेट टूल इसे पढ़ते हैं, इसलिए इसे हटाएँ नहीं। सुरक्षा देखें।
उपयोगकर्ता बनाएँ
केवल व्यवस्थापक उपयोगकर्ता बनाते हैं। नाम में 3 से 64 अक्षर, अंक, ., _ या - होते हैं। पासवर्ड में 12 से 128 वर्ण होते हैं। एक इंस्टॉलेशन में अधिकतम 1000 खाते हो सकते हैं।
कंसोल में:
- व्यवस्थापक के रूप में साइन इन करें और उपयोगकर्ता और एक्सेस खोलें।
- उपयोगकर्ता बनाएँ का विस्तार करें।
- उपयोगकर्ता नाम और पासवर्ड दर्ज करें। व्यवस्थापक केवल उन लोगों के लिए चुनें जो उपयोगकर्ताओं का प्रबंधन करते हैं।
- उपयोगकर्ता बनाएँ चुनें।
तालिका खाते खातों की सूची दिखाती है। अक्षम करें किसी खाते को अवरुद्ध करता है: उसके सत्र तुरंत समाप्त हो जाते हैं और उसके व्यक्तिगत टोकन तब तक काम नहीं करते जब तक आप सक्षम करें न चुनें। किसी के लिए नया पासवर्ड सेट करने के लिए पासवर्ड रीसेट करें का विस्तार करें। इससे खाते के सत्र समाप्त हो जाते हैं और उसके सभी व्यक्तिगत टोकन निरस्त हो जाते हैं।
API के साथ, व्यवस्थापक सत्र या पुनर्प्राप्ति कुंजी इन ऑपरेशनों को कॉल करती है: createUser, updateUser और listUsers।
curl -X POST "$ARKVORY/api/v1/users" \
-H "Authorization: Bearer $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"anna","password":"a long password here","administrator":false}'await client.administration.users.create('anna', 'a long password here', false);arkvoryctl में खातों के लिए कोई कमांड नहीं है। कंसोल या API इस्तेमाल करें।
स्व-पंजीकरण डिफ़ॉल्ट रूप से बंद होता है। सर्वर व्यवस्थापक इसे ARKVORY_ALLOW_REGISTRATION=true से चालू करता है (एनवायरनमेंट वेरिएबल देखें)। तब साइन-इन कार्ड पर साइन अप करें दिखता है। किसी नए खाते को किसी भी रिपॉज़िटरी तक तब तक एक्सेस नहीं मिलता जब तक व्यवस्थापक उसे किसी समूह में न जोड़े। स्व-पंजीकरण 900 खातों पर रुक जाता है, इसलिए 100 स्थान व्यवस्थापकों के लिए खाली रहते हैं।
समूह और रिपॉज़िटरी एक्सेस
लोगों को समूहों के ज़रिए एक्सेस मिलता है। एक समूह में सदस्य होते हैं और, प्रत्येक रिपॉज़िटरी के लिए, एक्सेस का एक स्तर होता है:
| कंसोल में स्तर | अर्थ |
|---|---|
| पढ़ना | देखना और डाउनलोड करना |
| पढ़ना और लिखना | पढ़ने वाला सब कुछ, और अपलोड, प्रकाशित करना, मेटाडेटा बदलना, प्रमोट करना और पुनर्स्थापित करना |
रिपॉज़िटरी बनाने का कोई अलग चरण नहीं है। जैसे ही कोई अनुदान या सेवा नीति उसका नाम लेती है, वह अस्तित्व में आ जाती है। नाम में लोअरकेस लैटिन अक्षर, अंक, - और _ होते हैं, यह किसी अक्षर या अंक से शुरू होता है और अधिकतम 64 वर्णों का होता है। रिपॉज़िटरी देखें।
कंसोल में, उपयोगकर्ता और एक्सेस खोलें:
- समूह बनाएँ का विस्तार करें, एक एक्सेस समूह नाम (2 से 64 अक्षर, अंक,
.,_या-) दर्ज करें और समूह बनाएँ चुनें। - समूह के सदस्य प्रबंधित करें का विस्तार करें, समूह और खाता चुनें, फिर समूह में जोड़ें चुनें। समूह से हटाएँ खाते को समूह से बाहर कर देता है।
- रिपॉज़िटरी एक्सेस प्रबंधित करें का विस्तार करें, समूह चुनें, रिपॉज़िटरी नाम टाइप करें, एक्सेस स्तर चुनें और एक्सेस सहेजें चुनें। एक्सेस हटाएँ एक्सेस छीन लेता है।
फ़ॉर्म के नीचे की तालिका हर समूह के सदस्य और एक्सेस नियम दिखाती है। किसी सदस्य या अनुदान को हटाना खाते के अगले अनुरोध पर प्रभावी होता है। फ़ाइलें जहाँ हैं वहीं रहती हैं।
एक इंस्टॉलेशन में अधिकतम 100 समूह, 10 000 सदस्यताएँ और कुल 10 000 अनुदान हो सकते हैं।
API के साथ, ऑपरेशन हैं createAccessGroup, addGroupMember, removeGroupMember, setGroupGrant और removeGroupGrant:
curl -X PUT "$ARKVORY/api/v1/access-groups/$GROUP_ID/grants/builds" \
-H "Authorization: Bearer $ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{"access":"write"}'await client.administration.groups.setGrant(groupId, 'builds', 'write');अनुमतियाँ
पढ़ना और लिखना—इन दो स्तरों के पीछे 24 रिपॉज़िटरी कार्रवाइयाँ हैं। एक सेवा कुंजी इन कार्रवाइयों को एक-एक करके नाम देती है। arkvoryctl doctor और GET /api/v1/auth/permissions दिखाते हैं कि वर्तमान क्रेडेंशियल के पास प्रत्येक रिपॉज़िटरी में कौन-सी कार्रवाइयाँ हैं।
| कार्रवाई | कंसोल लेबल | यह अनुमति देती है |
|---|---|---|
repository.read | रिपॉज़िटरी खोजना | रिपॉज़िटरी की सूची बनाना और अपने अधिकार देखना। फ़ाइलों तक कोई एक्सेस नहीं। |
artifact.list | आर्टिफ़ैक्ट की सूची देखना | आर्टिफ़ैक्ट की सूची बनाना और खोजना, स्टेज सूची और प्रमोशन जर्नल पढ़ना |
artifact.read | आर्टिफ़ैक्ट का विवरण पढ़ना | एक आर्टिफ़ैक्ट का विवरण, स्टेज और प्रमोशन इतिहास |
content.read | फ़ाइलें डाउनलोड करना | बाइट डाउनलोड करना, डाउनलोड लिंक बनाना, डाउनलोड के लिए पैकेज निर्धारित करना |
upload.create | अपलोड शुरू करना | अपलोड शुरू करना |
upload.read | अपलोड की प्रगति पढ़ना | अपने ही अपलोड की स्थिति और भाग पढ़ना |
upload.write | बाइट अपलोड करना | अपने ही अपलोड की बाइट भेजना |
upload.complete | अपलोड पूरे करना | अपना ही अपलोड पूरा करना, कंप्लीशन जॉब शुरू करना |
upload.cancel | अपलोड रद्द करना | अपना ही अपलोड रद्द करना |
job.read | कार्य पढ़ना | अपना ही कंप्लीशन जॉब पढ़ना |
package.read | पैकेज पढ़ना | UPack पैकेज की सूची बनाना और संस्करण निर्धारित करना |
package.publish | पैकेज प्रकाशित करना | अपलोड किए गए आर्काइव को पैकेज के रूप में पंजीकृत करना |
asset.read | फ़ाइल लिंक पढ़ना | फ़ाइल पथ, उनका इतिहास और संशोधन पढ़ना |
asset.write | फ़ाइल लिंक असाइन करना | किसी आर्टिफ़ैक्ट को पथ की वर्तमान सामग्री बनाना |
asset.restore | फ़ाइल इतिहास पुनर्स्थापित करना | पथ का पिछला संशोधन पुनर्स्थापित करना |
annotation.read | मेटाडेटा पढ़ना | लेबल, मेटाडेटा, संग्रह और अटैचमेंट पढ़ना |
annotation.write | मेटाडेटा संपादित करना | लेबल, मेटाडेटा, संग्रह और अटैचमेंट बदलना |
artifact.promote | आर्टिफ़ैक्ट प्रमोट करना और स्टेज प्रबंधित करना | स्टेज जोड़ना और हटाना, रिपॉज़िटरी में प्रमोट करना |
reference.write | संदर्भ प्रबंधित करना | किसी आर्टिफ़ैक्ट पर अपना बाहरी संदर्भ जोड़ना और हटाना |
audit.read | ऑडिट पढ़ना | रिपॉज़िटरी का कैटलॉग ऑडिट पढ़ना |
artifact.delete | आर्टिफ़ैक्ट हटाना | आर्टिफ़ैक्ट जाँचना और हटाना, प्रतिधारण का पूर्वावलोकन और लागू करना |
storage.read | स्टोरेज नीति और उपयोग देखना | स्टोरेज नीति, उपयोग और क्लीनअप सेटिंग पढ़ना |
storage.manage | स्टोरेज नीति प्रबंधित करना | स्टोरेज नीति और क्लीनअप सेटिंग बदलना, उन्हें चलाना |
diagnostics.read | डायग्नोस्टिक्स पढ़ना | स्टोरेज इवेंट पढ़ना |
समूह के स्तर कार्रवाइयों में कैसे मैप होते हैं:
- पढ़ना देता है
repository.read,artifact.list,artifact.read,content.read,package.read,asset.readऔरannotation.read। - लिखना पढ़ने वाला सब कुछ देता है, और
upload.create,upload.read,upload.write,upload.complete,upload.cancel,job.read,package.publish,asset.write,asset.restore,annotation.write,artifact.promote,reference.writeऔरaudit.read। - कोई समूह स्तर नहीं देता
artifact.delete,storage.read,storage.manageऔरdiagnostics.read। आर्टिफ़ैक्ट हटाना और स्टोरेज प्रबंधन उन सेवा कुंजियों के लिए हैं जो इन कार्रवाइयों का नाम लेती हैं। स्टोरेज और प्रतिधारण देखें।
मिरर किसी अन्य रिपॉज़िटरी की रीड-ओनली प्रति होती है (मिरर)। इसे बदलने वाली हर कार्रवाई 409 mirror_read_only के साथ अस्वीकार कर दी जाती है, चाहे अनुदान कुछ भी कहें।
पासवर्ड और सत्र
रिपॉज़िटरी कनेक्शन कार्ड में उपयोगकर्ता नाम और पासवर्ड से साइन इन करें। सत्र 12 घंटे तक चलता है। डिस्कनेक्ट करें इसे समाप्त करता है।
अपना पासवर्ड बदलने के लिए, उसी कार्ड में मेरा पासवर्ड बदलें इस्तेमाल करें। वर्तमान पासवर्ड और नया पासवर्ड दर्ज करें। आपके सभी सत्र और व्यक्तिगत टोकन समाप्त हो जाते हैं, इसलिए आप फिर से साइन इन करते हैं और नए टोकन बनाते हैं। व्यवस्थापक पुराना पासवर्ड जाने बिना किसी अन्य खाते का पासवर्ड रीसेट कर सकता है।
सर्वर अनुमान लगाने को धीमा कर देता है:
- एक नेटवर्क पता एक बार में 10 साइन-इन आज़मा सकता है, फिर हर 15 सेकंड में एक और।
- एक खाते के लिए कई गलत पासवर्ड के बाद, खाता और अधिक देर तक प्रतीक्षा करता है, अधिकतम 2 मिनट तक। इस प्रतीक्षा के दौरान सही पासवर्ड भी अस्वीकार कर दिया जाता है। उत्तर
429 rate_limitedहोता है,Retry-Afterके साथ। - रिवर्स प्रॉक्सी के पीछे, व्यवस्थापक प्रॉक्सी को
ARKVORY_TRUSTED_PROXIESमें सूचीबद्ध करता है। अन्यथा सभी लोग एक ही पते को साझा करते हैं।
API के साथ, login नाम और पासवर्ड के बदले बियरर सत्र देता है, और changeOwnPassword पासवर्ड बदलता है:
curl -X POST "$ARKVORY/api/v1/auth/login" \
-H "Content-Type: application/json" \
-d '{"name":"anna","password":"a long password here"}'व्यक्तिगत एक्सेस टोकन
व्यक्तिगत एक्सेस टोकन आपके अपने टूल के लिए एक कुंजी है: आपके कंप्यूटर पर कोई स्क्रिप्ट, arkvoryctl, या SDK। यह आपके रूप में काम करता है, आपके समूहों की रिपॉज़िटरी के साथ।
केवल पासवर्ड सत्र टोकन बनाता है। एक टोकन दूसरा टोकन नहीं बना सकता और उसके पास व्यवस्थापक अधिकार नहीं होते।
- अपने पासवर्ड से साइन इन करें।
- रिपॉज़िटरी कनेक्शन कार्ड में व्यक्तिगत एक्सेस टोकन का विस्तार करें।
- टोकन का नाम दर्ज करें। समाप्ति अवधि चुनें: 30 दिन, 90 दिन या 365 दिन।
- एक्सेस चुनें: केवल पढ़ना या पढ़ना और लिखना। एक रीड टोकन हर बदलाव को
403 read_only_tokenके साथ अस्वीकार कर देता है। - टोकन बनाएँ चुनें, फिर टोकन कॉपी करें। टोकन एक बार दिखाया जाता है। यह
pat_से शुरू होता है।
तालिका प्रत्येक टोकन का प्रीफ़िक्स, बनाया गया, समाप्ति, अंतिम उपयोग और स्थिति दिखाती है: सक्रिय, अवधि समाप्त या निरस्त। किसी टोकन को रोकने के लिए, टोकन निरस्त करें चुनें और निरस्त करें से पुष्टि करें। इसका इस्तेमाल करने वाले क्लाइंट तुरंत एक्सेस खो देते हैं।
एक खाते में 50 सक्रिय टोकन हो सकते हैं। व्यवस्थापक listAccountTokens और revokeAccountToken से किसी भी खाते के टोकन की सूची बना और निरस्त कर सकता है।
API के साथ, एक टोकन में नाम और, वैकल्पिक रूप से, समाप्ति (अब से अधिकतम 365 दिन) और स्कोप होता है:
curl -X POST "$ARKVORY/api/v1/auth/tokens" \
-H "Authorization: Bearer $SESSION" \
-H "Content-Type: application/json" \
-d '{"name":"laptop","scope":"read-write","expiresAt":"2027-01-31T00:00:00Z"}'const created = await client.identity.createToken('laptop', { scope: 'read-write' });
console.log(created.token); // shown onceAPI का डिफ़ॉल्ट स्कोप read-write है। कंसोल केवल पढ़ना पहले से चुना हुआ दिखाता है।
टोकन को arkvoryctl को एक निजी फ़ाइल में दें। कमांड लाइन देखें।
CI के लिए सेवा खाते और कुंजियाँ
सेवा खाता किसी टूल की पहचान है, किसी व्यक्ति की नहीं। इसकी एक नीति होती है: वे रिपॉज़िटरी और कार्रवाइयाँ जिन्हें वह इस्तेमाल कर सकता है। एक सेवा खाते में कुंजियाँ होती हैं। एक कुंजी की भी अपनी रिपॉज़िटरी और कार्रवाइयों की सूची होती है। प्रभावी अधिकार दोनों सूचियों का, कार्रवाई-दर-कार्रवाई, प्रतिच्छेदन होते हैं। खाली नीति फ़ाइलों तक कोई एक्सेस नहीं देती।
आप सेवा एक्सेस का प्रबंधन पुनर्प्राप्ति कुंजी से, या उस ऑपरेटर कुंजी से करते हैं जिसे स्वामी ने अधिकार प्रत्यायोजित किए हैं। कंसोल में:
- अगर आप साइन इन हैं तो डिस्कनेक्ट करें चुनें। फिर सेवा या ऑटोमेशन कुंजी से कनेक्ट करें खोलें, पुनर्प्राप्ति कुंजी को सेवा कुंजी में पेस्ट करें और कनेक्ट करें चुनें।
- सेवा एक्सेस खोलें। यह अनुभाग केवल पुनर्प्राप्ति कुंजी और ऑपरेटर कुंजियों के लिए दिखता है।
खाता और उसकी नीति बनाएँ
- सेवा एक्सेस में, सेवा खाता बनाएँ का विस्तार करें।
- एक खाते का नाम दर्ज करें (3 से 64 अक्षर, अंक,
.,_या-)। - रिपॉज़िटरी अनुमतियाँ के अंतर्गत रिपॉज़िटरी जोड़ें चुनें और रिपॉज़िटरी नाम टाइप करें।
- अनुमतियाँ भरें: पढ़ने का प्रीसेट और प्रकाशन का प्रीसेट सामान्य सेट सेट करते हैं, अनुमतियाँ साफ़ करें उन्हें साफ़ करता है, और अलग-अलग अनुमतियाँ हर कार्रवाई की सूची दिखाता है। किसी रिपॉज़िटरी को हटाने के लिए रिपॉज़िटरी हटाएँ चुनें।
- सेवा खाता बनाएँ चुनें।
दो प्रीसेट हैं:
| प्रीसेट | कार्रवाइयाँ |
|---|---|
| पढ़ने का प्रीसेट | repository.read, artifact.read, artifact.list, content.read, package.read, asset.read, annotation.read |
| प्रकाशन का प्रीसेट | रीड सेट, और upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.publish, asset.write, annotation.write |
कोई भी प्रीसेट प्रमोशन, पुनर्स्थापना या विलोपन शामिल नहीं करता। प्रमोशन जॉब के लिए artifact.promote जोड़ें। केवल डाउनलोड करने वाले डिप्लॉयमेंट एजेंट को arkvoryctl के लिए रीड सेट चाहिए। किसी पैकेज को नाम से सादे HTTP डाउनलोड के लिए, अकेला content.read पर्याप्त है।
एक नीति में अधिकतम 64 रिपॉज़िटरी और एक इंस्टॉलेशन में अधिकतम 1000 सेवा खाते हो सकते हैं। सहेजी गई नीति का एक संस्करण होता है। अगर इस बीच कोई उसे बदल देता है, तो कंसोल टकराव दिखाता है और आपका ड्राफ़्ट रखता है: खाता फिर से लोड करें चुनें और अपना बदलाव दोबारा लागू करें। खाता अक्षम करें खाते की हर कुंजी को अवरुद्ध कर देता है। जो ट्रांसफ़र पहले से चल रहे हैं वे पूरे हो सकते हैं।
कुंजी जारी करें, सहेजें और सक्रिय करें
- खाता और उसका सेवा कुंजियाँ खोलें।
- कुंजी जारी करें का विस्तार करें। एक कुंजी का नाम दर्ज करें। समाप्ति का समय (स्थानीय समय, वैकल्पिक) में समाप्ति सेट करें या 90 दिनों के लिए उसे खाली छोड़ दें। सबसे लंबी समाप्ति 365 दिन है।
- अगर कुंजी को खाते से कम चाहिए तो अनुमतियाँ सीमित करें। कुंजी जारी करें चुनें।
- विंडो नया सीक्रेट सहेजें सीक्रेट एक बार दिखाती है। सीक्रेट कॉपी करें चुनें और इसे अपने CI सीक्रेट स्टोर में रखें। सीक्रेट
arkvory_से शुरू होता है। - मैंने सीक्रेट सहेज लिया है चुनें और कुंजी सक्रिय करें चुनें।
जो कुंजी सक्रिय नहीं है वह बेकार है और 15 मिनट बाद समाप्त हो जाती है। जब तक आप उसे सक्रिय नहीं करते यह सक्रियण लंबित दिखती है। एक खाते में एक समय पर 3 सक्रिय कुंजियाँ और 2 पेंडिंग कुंजियाँ हो सकती हैं। स्थितियाँ हैं सक्रियण लंबित, सक्रिय, निरस्त और अवधि समाप्त; कुंजी का विवरण कुंजी की id और अनुमतियाँ सूचीबद्ध करता है।
अगर सीक्रेट कॉपी करने से पहले उत्तर खो जाए, तो सर्वर उसे दोबारा नहीं दिखा सकता। कुंजी निरस्त करें और दूसरी जारी करें।
API के साथ, पुनर्प्राप्ति कुंजी खाता बनाती है, फिर कुंजी जारी करती है। हेडर Idempotency-Key (1 से 128 अक्षर, अंक, ., _, : या -) दोहराए गए अनुरोध को सुरक्षित बनाता है, लेकिन दोहराव कोई सीक्रेट नहीं लौटाता। कुंजी खुद को सक्रिय कर लेती है जब वह activateServiceKey को कॉल करती है:
curl -X POST "$ARKVORY/api/v1/service-accounts" \
-H "Authorization: Bearer $RECOVERY_KEY" -H "Content-Type: application/json" \
-d '{"name":"ci-prod","bindings":[{"resource":{"kind":"repository","id":"releases"},"actions":["repository.read","artifact.read","artifact.list","content.read","package.read","upload.create","upload.read","upload.write","upload.complete","job.read","package.publish","asset.read","asset.write"]}]}'
curl -X POST "$ARKVORY/api/v1/service-accounts/$ACCOUNT_ID/keys" \
-H "Authorization: Bearer $RECOVERY_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: ci-prod-2026-10" \
-d '{"name":"pipeline-2026","bindings":[{"resource":{"kind":"repository","id":"releases"},"actions":["content.read","package.read","artifact.read"]}]}'
curl -X POST "$ARKVORY/api/v1/auth/activate-key" -H "Authorization: Bearer $NEW_SECRET"SDK में वही चरण:
const account = await root.administration.services.create('ci-prod', bindings);
const issued = await root.administration.credentials.issue(account.id, requestId, {
name: 'pipeline-2026',
bindings,
});
if (!issued.secret) throw new Error('Lost response: revoke the key and issue another');
await saveToSecretStore(issued.secret);
await new ArkvoryClient(url, () => issued.secret ?? '').identity.activateKey();सक्रिय की गई कुंजी को जॉब को ARKVORY_TOKEN_FILE या ARKVORY_TOKEN के रूप में दें। CI उदाहरण देखें।
रोटेट और निरस्त करें
किसी कुंजी को समाप्त होने से पहले, बिना किसी अंतराल के रोटेट करें:
- कुंजी के बगल में रोटेट करें चुनें। फ़ॉर्म पुरानी कुंजी की अनुमतियों से भरा होता है। आप उन्हें केवल रख या घटा सकते हैं।
- नई कुंजी जारी करें, उसका सीक्रेट सहेजें और उसे सक्रिय करें।
- अपने जॉब को नए सीक्रेट पर स्विच करें।
- पुरानी कुंजी पर निरस्त करें चुनें।
नई कुंजी को सक्रिय करने से पुरानी कुंजी अधिकतम 24 घंटे और सीमित हो जाती है, इसलिए भूली हुई पुरानी कुंजी जीवित नहीं रहती। निरस्त करना स्थायी होता है और कुंजी का नाम माँगता है। कुंजी के साथ नए अनुरोध तुरंत अस्वीकार कर दिए जाते हैं। जो ट्रांसफ़र पहले से चल रहे हैं वे पूरे हो सकते हैं। API के साथ ऑपरेशन हैं rotateServiceKey और revokeServiceKey।
खाते पर गतिविधि लॉग दिखाता है कि किसने कुंजियाँ जारी, सक्रिय, रोटेट और निरस्त कीं, समय के साथ। यह कोई सीक्रेट नहीं रखता। सर्वर सभी खातों की नवीनतम 100 000 घटनाएँ रखता है।
प्रत्यायोजित प्रशासन
रोज़मर्रा के काम में पुनर्प्राप्ति कुंजी का इस्तेमाल न करें। स्वामी सेवा प्रशासन के कुछ हिस्से किसी ऑपरेटर कुंजी को सौंप सकता है और पुनर्प्राप्ति कुंजी को ऑफ़लाइन रख सकता है।
- पुनर्प्राप्ति कुंजी से, ऑपरेटर के लिए खाली नीति वाला एक सेवा खाता बनाएँ, और उसके लिए एक कुंजी जारी करके सक्रिय करें।
- उस खाते का सेवा कुंजियाँ खोलें और कुंजी पर प्रत्यायोजित प्रशासन चुनें।
- नया प्रत्यायोजन का विस्तार करें। लक्ष्य खाता ID दर्ज करें, यानी वह खाता जिसे ऑपरेटर प्रबंधित करेगा।
- प्रशासनिक कार्रवाइयाँ चुनें और अधिकतम रिपॉज़िटरी अनुमतियाँ सेट करें, यानी रिपॉज़िटरी में ऑपरेटर अधिकतम जो दे सकता है।
- प्रत्यायोजन सहेजें चुनें।
सात कार्रवाइयाँ हैं:
| कार्रवाई | कंसोल लेबल | ऑपरेटर यह कर सकता है |
|---|---|---|
service-account.read | खाते पढ़ना | खाता देखना |
service-account.manage | खाते सक्षम या अक्षम करना | इसे सक्षम और अक्षम करना |
policy.read | खाता नीतियाँ पढ़ना | इसकी नीति पढ़ना |
policy.manage | खाता नीतियाँ प्रबंधित करना | इसकी नीति बदलना |
credential.read | कुंजियों का मेटाडेटा पढ़ना | इसकी कुंजियों की सूची बनाना |
credential.manage | कुंजियाँ जारी, रोटेट और निरस्त करना | इसकी कुंजियाँ जारी, रोटेट और निरस्त करना |
service-audit.read | सेवा ऑडिट पढ़ना | इसका गतिविधि लॉग पढ़ना |
नियम:
- ऑपरेटर जो कुछ सेट करता है वह सीमा के भीतर रहना चाहिए। वह जो कुंजी जारी करता है वह उसकी अपनी कुंजी से बाद में समाप्त नहीं हो सकती।
- ऑपरेटर लक्ष्य खाते के लिए कुंजियाँ जारी कर सकता है, इसलिए प्रत्यायोजन को उस सब पर भरोसे के रूप में देखें जिसकी सीमा अनुमति देती है।
- ऑपरेटर अपना खाता प्रबंधित नहीं कर सकता, और आगे प्रत्यायोजित नहीं कर सकता। एक खाता एक ही समय पर लक्ष्य और ऑपरेटर दोनों नहीं हो सकता।
- प्रत्यायोजन हटाएँ से प्रत्यायोजन हटाने पर ऑपरेटर द्वारा पहले से सक्रिय की गई कुंजियाँ निरस्त नहीं होतीं। उन्हें स्वयं निरस्त करें।
- ऑपरेटर अपने असाइनमेंट मेरे प्रशासनिक अधिकार में देखता है।
केवल पुनर्प्राप्ति कुंजी प्रत्यायोजन सेट करती है। ऑपरेशन हैं listServiceDelegations, setServiceDelegation और removeServiceDelegation।
ऑडिट
व्यवस्थापक इंस्टॉलेशन का सुरक्षा जर्नल पढ़ सकते हैं: साइन-इन और विफलताएँ, पंजीकरण, पासवर्ड परिवर्तन और रीसेट, उपयोगकर्ता, समूह और अनुदान परिवर्तन, और टोकन निर्माण और निरस्तीकरण। हर प्रविष्टि में समय, कर्ता, क्रेडेंशियल का प्रकार, क्लाइंट पता, लक्ष्य और परिणाम (success, failure या denied) होता है। इसमें कोई पासवर्ड या सीक्रेट नहीं होता। सर्वर प्रविष्टियाँ 365 दिनों या 1 000 000 प्रविष्टियों तक रखता है, जो पहले आए।
कंसोल में इस जर्नल के लिए कोई स्क्रीन नहीं है। इसे API से, व्यवस्थापक सत्र या पुनर्प्राप्ति कुंजी से पढ़ें। पेज डिफ़ॉल्ट रूप से 50 प्रविष्टियाँ रखते हैं और अधिकतम 100, सबसे नई पहले। अगले पेज के लिए next को after के रूप में दें।
curl -H "Authorization: Bearer $ADMIN_KEY" "$ARKVORY/api/v1/security/audit?limit=20"const page = await client.administration.security.audit({ limit: 20 });सेवा खाते का गतिविधि लॉग अलग है। कुंजी जारी करें, सहेजें और सक्रिय करें देखें।
अगर स्वामी बाहर लॉक हो जाए
जब कोई व्यवस्थापक के रूप में साइन इन नहीं कर सकता, तो पुनर्प्राप्ति कुंजी इस्तेमाल करें:
- सर्वर पर कुंजी पढ़ें: इंस्टॉलेशन डायरेक्टरी में
config/bootstrap-token.txt। केवल सर्वर व्यवस्थापक ही ऐसा कर सकता है। - कंसोल में, सेवा या ऑटोमेशन कुंजी से कनेक्ट करें खोलें, कुंजी को सेवा कुंजी में पेस्ट करें और कनेक्ट करें चुनें।
- उपयोगकर्ता और एक्सेस खोलें। पासवर्ड रीसेट करें का विस्तार करें, खाता चुनें, एक नया पासवर्ड दर्ज करें और पासवर्ड रीसेट करें चुनें। अगर खाता अक्षम दिखता है, तो सक्षम करें चुनें।
- नए पासवर्ड से साइन इन करें।
आप उपयोगकर्ता बनाएँ से नया व्यवस्थापक भी बना सकते हैं और व्यवस्थापक चुन सकते हैं।
फ़ॉर्म पहला स्वामी बनाएँ केवल तब तक काम करता है जब तक इंस्टॉलेशन में कोई खाता न हो। बाद में, पुनर्प्राप्ति कुंजी का इस्तेमाल खाते ठीक करने के लिए करें, नए सिरे से शुरू करने के लिए नहीं।
अगर पुनर्प्राप्ति कुंजी स्वयं खो जाए, तो सर्वर व्यवस्थापक config/keys.json में कुंजी का SHA-256 बदल देता है और API को रीस्टार्ट करता है। सुरक्षा देखें।