सामग्री पर जाएँ

खाते और एक्सेस ​

Arkvory चार प्रकार की क्रेडेंशियल जानता है। लोग पासवर्ड से साइन इन करते हैं। उनके अपने टूल व्यक्तिगत एक्सेस टोकन इस्तेमाल करते हैं। CI सिस्टम और डिप्लॉयमेंट एजेंट सेवा कुंजियाँ इस्तेमाल करते हैं। इंस्टॉलर एक और कुंजी बनाता है—पुनर्प्राप्ति कुंजी—सेटअप और आपात स्थितियों के लिए। सर्वर हर अनुरोध को उस क्रेडेंशियल के आधार पर जाँचता है जिसके साथ वह आया।

कौन क्या कर सकता है ​

क्रेडेंशियलकिसने बनायाअवधिप्रशासनरिपॉज़िटरी एक्सेस
पासवर्ड सत्रसाइन इन करना12 घंटेउपयोगकर्ता और समूह, अगर खाता व्यवस्थापक हैसमूहों के ज़रिए, प्रत्येक रिपॉज़िटरी पर पढ़ना या लिखना
व्यक्तिगत एक्सेस टोकनआप, पासवर्ड सत्र सेडिफ़ॉल्ट रूप से 90 दिन, अधिकतम 365कभी नहींआपके समूह, वैकल्पिक रूप से केवल पढ़ना
सेवा कुंजीपुनर्प्राप्ति कुंजी या प्रत्यायोजित ऑपरेटरडिफ़ॉल्ट रूप से 90 दिन, अधिकतम 365केवल वही जो स्वामी ने प्रत्यायोजित कियासेवा खाता नीति, कुंजी द्वारा सीमित
पुनर्प्राप्ति कुंजीइंस्टॉलरजब तक आप उसे बदलते नहींउपयोगकर्ता, समूह, सेवा खाते, बैकअपreleases पर पढ़ना और लिखना

तीन बातें आसानी से छूट सकती हैं:

  • व्यवस्थापक खाता उपयोगकर्ताओं और समूहों का प्रबंधन करता है। यह फ़ाइलों तक एक्सेस नहीं देता। फ़ाइलों तक पहुँच केवल समूह अनुदानों के ज़रिए होती है।
  • सेवा कुंजी पुनर्प्राप्ति कुंजी या ऑपरेटर कुंजी से बनाई जाती है, पासवर्ड सत्र से नहीं। जो व्यवस्थापक पासवर्ड से साइन इन करता है, वह सेवा खाते नहीं बना सकता।
  • व्यक्तिगत टोकन या सेवा कुंजी कभी उपयोगकर्ता, समूह या अन्य टोकन नहीं बना सकते।

स्वामी और पुनर्प्राप्ति कुंजी ​

पहला खाता स्वामी होता है। यह एक व्यवस्थापक है। Windows सेटअप विज़ार्ड इसे बनाता है। Linux और Docker पर आप इसे कंसोल में पुनर्प्राप्ति कुंजी की मदद से बनाते हैं, जैसा वेब कंसोल में बताया गया है।

स्वामी arkvory-owners समूह का सदस्य होता है, जिसके पास releases रिपॉज़िटरी पर लिखने का एक्सेस है। किसी अन्य रिपॉज़िटरी के लिए, आप स्वयं किसी समूह को एक्सेस दें। समूह और रिपॉज़िटरी एक्सेस देखें।

पुनर्प्राप्ति कुंजी इंस्टॉलेशन डायरेक्टरी में फ़ाइल config/bootstrap-token.txt है। इसे केवल सर्वर का व्यवस्थापक पढ़ सकता है। इसे CI या क्लाइंट मशीनों पर कॉपी न करें। इंस्टॉलेशन और अपडेट टूल इसे पढ़ते हैं, इसलिए इसे हटाएँ नहीं। सुरक्षा देखें।

उपयोगकर्ता बनाएँ ​

केवल व्यवस्थापक उपयोगकर्ता बनाते हैं। नाम में 3 से 64 अक्षर, अंक, ., _ या - होते हैं। पासवर्ड में 12 से 128 वर्ण होते हैं। एक इंस्टॉलेशन में अधिकतम 1000 खाते हो सकते हैं।

कंसोल में:

  1. व्यवस्थापक के रूप में साइन इन करें और उपयोगकर्ता और एक्सेस खोलें।
  2. उपयोगकर्ता बनाएँ का विस्तार करें।
  3. उपयोगकर्ता नाम और पासवर्ड दर्ज करें। व्यवस्थापक केवल उन लोगों के लिए चुनें जो उपयोगकर्ताओं का प्रबंधन करते हैं।
  4. उपयोगकर्ता बनाएँ चुनें।

तालिका खाते खातों की सूची दिखाती है। अक्षम करें किसी खाते को अवरुद्ध करता है: उसके सत्र तुरंत समाप्त हो जाते हैं और उसके व्यक्तिगत टोकन तब तक काम नहीं करते जब तक आप सक्षम करें न चुनें। किसी के लिए नया पासवर्ड सेट करने के लिए पासवर्ड रीसेट करें का विस्तार करें। इससे खाते के सत्र समाप्त हो जाते हैं और उसके सभी व्यक्तिगत टोकन निरस्त हो जाते हैं।

API के साथ, व्यवस्थापक सत्र या पुनर्प्राप्ति कुंजी इन ऑपरेशनों को कॉल करती है: createUser, updateUser और listUsers।

bash
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}'
typescript
await client.administration.users.create('anna', 'a long password here', false);

arkvoryctl में खातों के लिए कोई कमांड नहीं है। कंसोल या API इस्तेमाल करें।

स्व-पंजीकरण डिफ़ॉल्ट रूप से बंद होता है। सर्वर व्यवस्थापक इसे ARKVORY_ALLOW_REGISTRATION=true से चालू करता है (एनवायरनमेंट वेरिएबल देखें)। तब साइन-इन कार्ड पर साइन अप करें दिखता है। किसी नए खाते को किसी भी रिपॉज़िटरी तक तब तक एक्सेस नहीं मिलता जब तक व्यवस्थापक उसे किसी समूह में न जोड़े। स्व-पंजीकरण 900 खातों पर रुक जाता है, इसलिए 100 स्थान व्यवस्थापकों के लिए खाली रहते हैं।

समूह और रिपॉज़िटरी एक्सेस ​

लोगों को समूहों के ज़रिए एक्सेस मिलता है। एक समूह में सदस्य होते हैं और, प्रत्येक रिपॉज़िटरी के लिए, एक्सेस का एक स्तर होता है:

कंसोल में स्तरअर्थ
पढ़नादेखना और डाउनलोड करना
पढ़ना और लिखनापढ़ने वाला सब कुछ, और अपलोड, प्रकाशित करना, मेटाडेटा बदलना, प्रमोट करना और पुनर्स्थापित करना

रिपॉज़िटरी बनाने का कोई अलग चरण नहीं है। जैसे ही कोई अनुदान या सेवा नीति उसका नाम लेती है, वह अस्तित्व में आ जाती है। नाम में लोअरकेस लैटिन अक्षर, अंक, - और _ होते हैं, यह किसी अक्षर या अंक से शुरू होता है और अधिकतम 64 वर्णों का होता है। रिपॉज़िटरी देखें।

कंसोल में, उपयोगकर्ता और एक्सेस खोलें:

  1. समूह बनाएँ का विस्तार करें, एक एक्सेस समूह नाम (2 से 64 अक्षर, अंक, ., _ या -) दर्ज करें और समूह बनाएँ चुनें।
  2. समूह के सदस्य प्रबंधित करें का विस्तार करें, समूह और खाता चुनें, फिर समूह में जोड़ें चुनें। समूह से हटाएँ खाते को समूह से बाहर कर देता है।
  3. रिपॉज़िटरी एक्सेस प्रबंधित करें का विस्तार करें, समूह चुनें, रिपॉज़िटरी नाम टाइप करें, एक्सेस स्तर चुनें और एक्सेस सहेजें चुनें। एक्सेस हटाएँ एक्सेस छीन लेता है।

फ़ॉर्म के नीचे की तालिका हर समूह के सदस्य और एक्सेस नियम दिखाती है। किसी सदस्य या अनुदान को हटाना खाते के अगले अनुरोध पर प्रभावी होता है। फ़ाइलें जहाँ हैं वहीं रहती हैं।

एक इंस्टॉलेशन में अधिकतम 100 समूह, 10 000 सदस्यताएँ और कुल 10 000 अनुदान हो सकते हैं।

API के साथ, ऑपरेशन हैं createAccessGroup, addGroupMember, removeGroupMember, setGroupGrant और removeGroupGrant:

bash
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"}'
typescript
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 पासवर्ड बदलता है:

bash
curl -X POST "$ARKVORY/api/v1/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"name":"anna","password":"a long password here"}'

व्यक्तिगत एक्सेस टोकन ​

व्यक्तिगत एक्सेस टोकन आपके अपने टूल के लिए एक कुंजी है: आपके कंप्यूटर पर कोई स्क्रिप्ट, arkvoryctl, या SDK। यह आपके रूप में काम करता है, आपके समूहों की रिपॉज़िटरी के साथ।

केवल पासवर्ड सत्र टोकन बनाता है। एक टोकन दूसरा टोकन नहीं बना सकता और उसके पास व्यवस्थापक अधिकार नहीं होते।

  1. अपने पासवर्ड से साइन इन करें।
  2. रिपॉज़िटरी कनेक्शन कार्ड में व्यक्तिगत एक्सेस टोकन का विस्तार करें।
  3. टोकन का नाम दर्ज करें। समाप्ति अवधि चुनें: 30 दिन, 90 दिन या 365 दिन।
  4. एक्सेस चुनें: केवल पढ़ना या पढ़ना और लिखना। एक रीड टोकन हर बदलाव को 403 read_only_token के साथ अस्वीकार कर देता है।
  5. टोकन बनाएँ चुनें, फिर टोकन कॉपी करें। टोकन एक बार दिखाया जाता है। यह pat_ से शुरू होता है।

तालिका प्रत्येक टोकन का प्रीफ़िक्स, बनाया गया, समाप्ति, अंतिम उपयोग और स्थिति दिखाती है: सक्रिय, अवधि समाप्त या निरस्त। किसी टोकन को रोकने के लिए, टोकन निरस्त करें चुनें और निरस्त करें से पुष्टि करें। इसका इस्तेमाल करने वाले क्लाइंट तुरंत एक्सेस खो देते हैं।

एक खाते में 50 सक्रिय टोकन हो सकते हैं। व्यवस्थापक listAccountTokens और revokeAccountToken से किसी भी खाते के टोकन की सूची बना और निरस्त कर सकता है।

API के साथ, एक टोकन में नाम और, वैकल्पिक रूप से, समाप्ति (अब से अधिकतम 365 दिन) और स्कोप होता है:

bash
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"}'
typescript
const created = await client.identity.createToken('laptop', { scope: 'read-write' });
console.log(created.token); // shown once

API का डिफ़ॉल्ट स्कोप read-write है। कंसोल केवल पढ़ना पहले से चुना हुआ दिखाता है।

टोकन को arkvoryctl को एक निजी फ़ाइल में दें। कमांड लाइन देखें।

CI के लिए सेवा खाते और कुंजियाँ ​

सेवा खाता किसी टूल की पहचान है, किसी व्यक्ति की नहीं। इसकी एक नीति होती है: वे रिपॉज़िटरी और कार्रवाइयाँ जिन्हें वह इस्तेमाल कर सकता है। एक सेवा खाते में कुंजियाँ होती हैं। एक कुंजी की भी अपनी रिपॉज़िटरी और कार्रवाइयों की सूची होती है। प्रभावी अधिकार दोनों सूचियों का, कार्रवाई-दर-कार्रवाई, प्रतिच्छेदन होते हैं। खाली नीति फ़ाइलों तक कोई एक्सेस नहीं देती।

आप सेवा एक्सेस का प्रबंधन पुनर्प्राप्ति कुंजी से, या उस ऑपरेटर कुंजी से करते हैं जिसे स्वामी ने अधिकार प्रत्यायोजित किए हैं। कंसोल में:

  1. अगर आप साइन इन हैं तो डिस्कनेक्ट करें चुनें। फिर सेवा या ऑटोमेशन कुंजी से कनेक्ट करें खोलें, पुनर्प्राप्ति कुंजी को सेवा कुंजी में पेस्ट करें और कनेक्ट करें चुनें।
  2. सेवा एक्सेस खोलें। यह अनुभाग केवल पुनर्प्राप्ति कुंजी और ऑपरेटर कुंजियों के लिए दिखता है।

खाता और उसकी नीति बनाएँ ​

  1. सेवा एक्सेस में, सेवा खाता बनाएँ का विस्तार करें।
  2. एक खाते का नाम दर्ज करें (3 से 64 अक्षर, अंक, ., _ या -)।
  3. रिपॉज़िटरी अनुमतियाँ के अंतर्गत रिपॉज़िटरी जोड़ें चुनें और रिपॉज़िटरी नाम टाइप करें।
  4. अनुमतियाँ भरें: पढ़ने का प्रीसेट और प्रकाशन का प्रीसेट सामान्य सेट सेट करते हैं, अनुमतियाँ साफ़ करें उन्हें साफ़ करता है, और अलग-अलग अनुमतियाँ हर कार्रवाई की सूची दिखाता है। किसी रिपॉज़िटरी को हटाने के लिए रिपॉज़िटरी हटाएँ चुनें।
  5. सेवा खाता बनाएँ चुनें।

दो प्रीसेट हैं:

प्रीसेटकार्रवाइयाँ
पढ़ने का प्रीसेट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 सेवा खाते हो सकते हैं। सहेजी गई नीति का एक संस्करण होता है। अगर इस बीच कोई उसे बदल देता है, तो कंसोल टकराव दिखाता है और आपका ड्राफ़्ट रखता है: खाता फिर से लोड करें चुनें और अपना बदलाव दोबारा लागू करें। खाता अक्षम करें खाते की हर कुंजी को अवरुद्ध कर देता है। जो ट्रांसफ़र पहले से चल रहे हैं वे पूरे हो सकते हैं।

कुंजी जारी करें, सहेजें और सक्रिय करें ​

  1. खाता और उसका सेवा कुंजियाँ खोलें।
  2. कुंजी जारी करें का विस्तार करें। एक कुंजी का नाम दर्ज करें। समाप्ति का समय (स्थानीय समय, वैकल्पिक) में समाप्ति सेट करें या 90 दिनों के लिए उसे खाली छोड़ दें। सबसे लंबी समाप्ति 365 दिन है।
  3. अगर कुंजी को खाते से कम चाहिए तो अनुमतियाँ सीमित करें। कुंजी जारी करें चुनें।
  4. विंडो नया सीक्रेट सहेजें सीक्रेट एक बार दिखाती है। सीक्रेट कॉपी करें चुनें और इसे अपने CI सीक्रेट स्टोर में रखें। सीक्रेट arkvory_ से शुरू होता है।
  5. मैंने सीक्रेट सहेज लिया है चुनें और कुंजी सक्रिय करें चुनें।

जो कुंजी सक्रिय नहीं है वह बेकार है और 15 मिनट बाद समाप्त हो जाती है। जब तक आप उसे सक्रिय नहीं करते यह सक्रियण लंबित दिखती है। एक खाते में एक समय पर 3 सक्रिय कुंजियाँ और 2 पेंडिंग कुंजियाँ हो सकती हैं। स्थितियाँ हैं सक्रियण लंबित, सक्रिय, निरस्त और अवधि समाप्त; कुंजी का विवरण कुंजी की id और अनुमतियाँ सूचीबद्ध करता है।

अगर सीक्रेट कॉपी करने से पहले उत्तर खो जाए, तो सर्वर उसे दोबारा नहीं दिखा सकता। कुंजी निरस्त करें और दूसरी जारी करें।

API के साथ, पुनर्प्राप्ति कुंजी खाता बनाती है, फिर कुंजी जारी करती है। हेडर Idempotency-Key (1 से 128 अक्षर, अंक, ., _, : या -) दोहराए गए अनुरोध को सुरक्षित बनाता है, लेकिन दोहराव कोई सीक्रेट नहीं लौटाता। कुंजी खुद को सक्रिय कर लेती है जब वह activateServiceKey को कॉल करती है:

bash
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 में वही चरण:

typescript
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 उदाहरण देखें।

रोटेट और निरस्त करें ​

किसी कुंजी को समाप्त होने से पहले, बिना किसी अंतराल के रोटेट करें:

  1. कुंजी के बगल में रोटेट करें चुनें। फ़ॉर्म पुरानी कुंजी की अनुमतियों से भरा होता है। आप उन्हें केवल रख या घटा सकते हैं।
  2. नई कुंजी जारी करें, उसका सीक्रेट सहेजें और उसे सक्रिय करें।
  3. अपने जॉब को नए सीक्रेट पर स्विच करें।
  4. पुरानी कुंजी पर निरस्त करें चुनें।

नई कुंजी को सक्रिय करने से पुरानी कुंजी अधिकतम 24 घंटे और सीमित हो जाती है, इसलिए भूली हुई पुरानी कुंजी जीवित नहीं रहती। निरस्त करना स्थायी होता है और कुंजी का नाम माँगता है। कुंजी के साथ नए अनुरोध तुरंत अस्वीकार कर दिए जाते हैं। जो ट्रांसफ़र पहले से चल रहे हैं वे पूरे हो सकते हैं। API के साथ ऑपरेशन हैं rotateServiceKey और revokeServiceKey।

खाते पर गतिविधि लॉग दिखाता है कि किसने कुंजियाँ जारी, सक्रिय, रोटेट और निरस्त कीं, समय के साथ। यह कोई सीक्रेट नहीं रखता। सर्वर सभी खातों की नवीनतम 100 000 घटनाएँ रखता है।

प्रत्यायोजित प्रशासन ​

रोज़मर्रा के काम में पुनर्प्राप्ति कुंजी का इस्तेमाल न करें। स्वामी सेवा प्रशासन के कुछ हिस्से किसी ऑपरेटर कुंजी को सौंप सकता है और पुनर्प्राप्ति कुंजी को ऑफ़लाइन रख सकता है।

  1. पुनर्प्राप्ति कुंजी से, ऑपरेटर के लिए खाली नीति वाला एक सेवा खाता बनाएँ, और उसके लिए एक कुंजी जारी करके सक्रिय करें।
  2. उस खाते का सेवा कुंजियाँ खोलें और कुंजी पर प्रत्यायोजित प्रशासन चुनें।
  3. नया प्रत्यायोजन का विस्तार करें। लक्ष्य खाता ID दर्ज करें, यानी वह खाता जिसे ऑपरेटर प्रबंधित करेगा।
  4. प्रशासनिक कार्रवाइयाँ चुनें और अधिकतम रिपॉज़िटरी अनुमतियाँ सेट करें, यानी रिपॉज़िटरी में ऑपरेटर अधिकतम जो दे सकता है।
  5. प्रत्यायोजन सहेजें चुनें।

सात कार्रवाइयाँ हैं:

कार्रवाईकंसोल लेबलऑपरेटर यह कर सकता है
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 के रूप में दें।

bash
curl -H "Authorization: Bearer $ADMIN_KEY" "$ARKVORY/api/v1/security/audit?limit=20"
typescript
const page = await client.administration.security.audit({ limit: 20 });

सेवा खाते का गतिविधि लॉग अलग है। कुंजी जारी करें, सहेजें और सक्रिय करें देखें।

अगर स्वामी बाहर लॉक हो जाए ​

जब कोई व्यवस्थापक के रूप में साइन इन नहीं कर सकता, तो पुनर्प्राप्ति कुंजी इस्तेमाल करें:

  1. सर्वर पर कुंजी पढ़ें: इंस्टॉलेशन डायरेक्टरी में config/bootstrap-token.txt। केवल सर्वर व्यवस्थापक ही ऐसा कर सकता है।
  2. कंसोल में, सेवा या ऑटोमेशन कुंजी से कनेक्ट करें खोलें, कुंजी को सेवा कुंजी में पेस्ट करें और कनेक्ट करें चुनें।
  3. उपयोगकर्ता और एक्सेस खोलें। पासवर्ड रीसेट करें का विस्तार करें, खाता चुनें, एक नया पासवर्ड दर्ज करें और पासवर्ड रीसेट करें चुनें। अगर खाता अक्षम दिखता है, तो सक्षम करें चुनें।
  4. नए पासवर्ड से साइन इन करें।

आप उपयोगकर्ता बनाएँ से नया व्यवस्थापक भी बना सकते हैं और व्यवस्थापक चुन सकते हैं।

फ़ॉर्म पहला स्वामी बनाएँ केवल तब तक काम करता है जब तक इंस्टॉलेशन में कोई खाता न हो। बाद में, पुनर्प्राप्ति कुंजी का इस्तेमाल खाते ठीक करने के लिए करें, नए सिरे से शुरू करने के लिए नहीं।

अगर पुनर्प्राप्ति कुंजी स्वयं खो जाए, तो सर्वर व्यवस्थापक config/keys.json में कुंजी का SHA-256 बदल देता है और API को रीस्टार्ट करता है। सुरक्षा देखें।

Arkvory · ProAnimaStudio