
अपने टर्मिनल से सीधे Azure Privileged Identity Management (PIM) भूमिका सक्रियण प्रबंधित करने के लिए एक कमांड-लाइन इंटरफ़ेस उपकरण।
एक कमांड-लाइन इंटरफ़ेस टूल जो आपके टर्मिनल से सीधे Azure प्रिविलेज्ड आइडेंटिटी मैनेजमेंट (PIM) भूमिका सक्रियण प्रबंधित करने के लिए है।
azpim का उपयोग करने से पहले, सुनिश्चित करें कि आपके पास:
# Azure CLI स्थापित करें (यदि स्थापित नहीं है)
# देखें: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli
# Azure में लॉगिन करें
az login
# सत्यापित करें कि आप लॉग इन हैं
az account show
# npm का उपयोग करके
npm install -g azpim
# pnpm का उपयोग करके
pnpm add -g azpim
# yarn का उपयोग करके
yarn global add azpim
स्थापना के बाद, azpim कमांड वैश्विक रूप से उपलब्ध होगा।
यदि आपने पहले azp-cli का उपयोग किया था, तो आपके प्रीसेट ~/.config/azp-cli/ में संग्रहीत हैं (Windows पर %APPDATA%\azp-cli\ देखें)। माइग्रेट करने के लिए:
presets.json को नए स्थान पर कॉपी करें: ~/.config/azpim/ (या Windows पर %APPDATA%\azpim\)npm uninstall -g azp-cli# रिपॉजिटरी को क्लोन करें
git clone https://github.com/tapanmeena/azpim.git
cd azpim
# निर्भरताएं स्थापित करें
pnpm install
# प्रोजेक्ट बनाएं
pnpm build
# डेवलपमेंट के लिए वैश्विक रूप से लिंक करें
npm link
# वैश्विक स्थापना के बाद
azpim
# या विशिष्ट कमांड के साथ
azpim activate
azpim deactivate
azpim preset list
azpim update
# डेवलपमेंट मोड (स्रोत से)
pnpm dev
वैश्विक फ़्लैग:
--debug - डीबग लॉगिंग सक्षम करें--version - वर्ज़न नंबर दिखाएंआप जांच सकते हैं कि कोई नया वर्ज़न उपलब्ध है या नहीं:
azpim update
# उपनाम
azpim upgrade
नोट्स:
azpim update अप-टू-डेट होने पर कोड 0 के साथ, अपडेट उपलब्ध होने पर 2 के साथ और त्रुटि पर 1 के साथ बाहर निकलता है।--check-only - अपग्रेड निर्देश दिखाए बिना केवल स्थिति की जांच करें और प्रिंट करें।--output json स्क्रिप्ट के लिए उपयुक्त एक संरचित प्रतिक्रिया लौटाता है।azpim activate और azpim deactivate दिन में अधिकतम एक बार एक छोटा "अपडेट उपलब्ध" संकेत (टेक्स्ट मोड में) भी दिखाएंगे।AZPIM_NO_UPDATE_NOTIFIER=1 (या AZPIM_DISABLE_UPDATE_CHECK=1) के माध्यम से अपडेट जांच अक्षम करें।अपडेट-चेक कैश आपके कॉन्फ़िगरेशन निर्देशिका में प्रीसेट के साथ संग्रहीत है:
~/.config/azpim/update-check.json (या $XDG_CONFIG_HOME/azpim/update-check.json)%APPDATA%\azpim\update-check.jsonइंटरैक्टिव मेनू से गुज़रे बिना सीधे PIM भूमिकाओं को सक्रिय या निष्क्रिय करने के लिए फ़्लैग का उपयोग करें, स्क्रिप्टिंग और CI/CD वर्कफ़्लो के लिए एकदम सही।
# नाम से एकल भूमिका सक्रिय करें (गैर-इंटरैक्टिव)
azpim activate --non-interactive --yes \
--subscription-id <SUBSCRIPTION_GUID> \
--role-name "Owner" \
--duration-hours 2 \
--justification "Break-glass for incident" \
--output json
# एकाधिक भूमिकाएं सक्रिय करें (--role-name दोहराएं)
azpim activate --non-interactive --yes \
--subscription-id <SUBSCRIPTION_GUID> \
--role-name "Contributor" \
--role-name "User Access Administrator"
# यदि कोई भूमिका नाम कई पात्र भूमिकाओं (विभिन्न स्कोप) से मेल खाता है,
# तो --non-interactive त्रुटि देगा जब तक कि आप स्पष्ट रूप से सभी मिलानों को सक्रिय करने की अनुमति न दें
azpim activate --non-interactive --yes \
--subscription-id <SUBSCRIPTION_GUID> \
--role-name "Contributor" \
--allow-multiple
# अनुरोध सबमिट किए बिना पूर्वावलोकन करें कि क्या होगा
azpim activate --non-interactive --dry-run \
--subscription-id <SUBSCRIPTION_GUID> \
--role-name "Contributor" \
--output json
# विशिष्ट भूमिकाओं को निष्क्रिय करें
azpim deactivate --non-interactive --yes \
--subscription-id <SUBSCRIPTION_GUID> \
--role-name "Owner" \
--justification "Task completed"
# सभी सब्सक्रिप्शन में निष्क्रिय करें (subscription-id छोड़ें)
azpim deactivate --non-interactive --yes \
--role-name "Contributor" \
--allow-multiple
सामान्य फ़्लैग (सक्रियण/निष्क्रियण):
--non-interactive - इंटरैक्टिव प्रॉम्प्ट अक्षम करें-y, --yes - पुष्टिकरण प्रॉम्प्ट छोड़ें--subscription-id <id> - लक्ष्य सब्सक्रिप्शन (निष्क्रियण के लिए वैकल्पिक)--role-name <name> - लक्ष्य भूमिका नाम (दोहराया जा सकता है)--allow-multiple - एकाधिक भूमिका मिलान की अनुमति दें--dry-run - सबमिट किए बिना पूर्वावलोकन--output <text|json> - आउटपुट प्रारूप (डिफ़ॉल्ट: text)--quiet - गैर-आवश्यक आउटपुट दबाएंसक्रियण-विशिष्ट:
--duration-hours <n> - अवधि (1-8 घंटे, भूमिका के अनुसार डिफ़ॉल्ट भिन्न)--justification <text> - सक्रियण के लिए औचित्यनिष्क्रियण-विशिष्ट:
--justification <text> - निष्क्रियण के लिए औचित्य (वैकल्पिक)प्रीसेट आपको अपने दैनिक सक्रियण/निष्क्रियण रूटीन (सब्सक्रिप्शन + भूमिका नाम + अवधि + औचित्य) को सहेजने और उन्हें --preset <name> के साथ पुन: उपयोग करने देते हैं।
डिफ़ॉल्ट रूप से, प्रीसेट प्रति-उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइल में संग्रहीत होते हैं:
~/.config/azpim/presets.json (या $XDG_CONFIG_HOME/azpim/presets.json)%APPDATA%\azpim\presets.jsonस्थान को ओवरराइड करें:
AZPIM_PRESETS_PATH=/path/to/presets.jsonएक प्रीसेट एक या दोनों ब्लॉक परिभाषित कर सकता है:
activate: subscriptionId, roleNames[], durationHours, justification, allowMultipledeactivate: subscriptionId (वैकल्पिक), roleNames[], justification, allowMultiplejustification सरल टेम्पलेट का समर्थन करता है:
${date} → YYYY-MM-DD${datetime} → ISO टाइमस्टैम्प${userPrincipalName} → Microsoft Graph /me से हल# प्रीसेट बनाएं (इंटरैक्टिव विज़ार्ड)
azpim preset add daily-ops
# Azure एकीकरण के साथ प्रीसेट बनाएं (सब्सक्रिप्शन/भूमिकाएं लाता है)
azpim preset add daily-ops --from-azure
# प्रीसेट संपादित करें (इंटरैक्टिव विज़ार्ड)
azpim preset edit daily-ops
# सभी प्रीसेट सूचीबद्ध करें
azpim preset list
# एक प्रीसेट विवरण दिखाएं
azpim preset show daily-ops
# प्रीसेट हटाएं
azpim preset remove daily-ops
# प्रीसेट का उपयोग करें (फिर भी फ़्लैग प्रीसेट मानों को ओवरराइड करते हैं)
azpim activate --preset daily-ops --yes
# प्रीसेट का उपयोग करके गैर-इंटरैक्टिव रन
azpim activate --preset daily-ops --non-interactive --yes --output json
# प्रीसेट का उपयोग करके निष्क्रिय करें
azpim deactivate --preset daily-ops --non-interactive --yes
जब आप azpim preset add के माध्यम से एक प्रीसेट बनाते हैं, तो आप वैकल्पिक रूप से इसे activate और/या deactivate के लिए डिफ़ॉल्ट के रूप में सेट कर सकते हैं।
azpim activate --non-interactive --yes --subscription-id/--role-name निर्दिष्ट किए बिना काम कर सकता है।╔════════════════════════════════════════════════════╗
║ Azure PIM CLI - Role Activation Manager ║
╚════════════════════════════════════════════════════╝
✔ प्रमाणीकरण सफल
┌─ उपयोगकर्ता जानकारी ──────────────────────────────────
│ नाम: John Doe
│ ईमेल: [email protected]
└──────────────────────────────────────────────────────
✔ 3 सब्सक्रिप्शन मिले
? आप क्या करना चाहेंगे?
❯ ▶ भूमिका(एं) सक्रिय करें
◼ भूमिका(एं) निष्क्रिय करें
✕ बाहर निकलें
पसंदीदा आपको त्वरित पहुंच के लिए विशिष्ट सब्सक्रिप्शन को चिह्नित करने देते हैं। इंटरैक्टिव मेनू में सब्सक्रिप्शन सूचियों के शीर्ष पर पसंदीदा सब्सक्रिप्शन प्रदर्शित होते हैं।
डिफ़ॉल्ट रूप से, पसंदीदा प्रति-उपयोगकर्ता संग्रहीत होते हैं:
~/.config/azpim/users/<userId>/favorites.json%APPDATA%\azpim\users\<userId>\favorites.jsonस्थान को ओवरराइड करें:
AZPIM_FAVORITES_PATH=/path/to/favorites.json# सभी पसंदीदा सूचीबद्ध करें
azpim favorites list
azpim fav list
# सब्सक्रिप्शन को पसंदीदा में जोड़ें
azpim favorites add <subscription-id>
# भले ही सब्सक्रिप्शन कैश में न हो, तब भी जोड़ें
azpim favorites add <subscription-id> --force
# सब्सक्रिप्शन को पसंदीदा से हटाएं
azpim favorites remove <subscription-id>
# सभी पसंदीदा साफ़ करें
azpim favorites clear
# पसंदीदा को फ़ाइल में निर्यात करें
azpim favorites export ./my-favorites.json
# फ़ाइल से पसंदीदा आयात करें (मौजूदा को बदलता है)
azpim favorites import ./my-favorites.json
# पसंदीदा आयात करें और मौजूदा के साथ मर्ज करें
azpim favorites import ./my-favorites.json --merge
# सब्सक्रिप्शन कैश रिफ्रेश करें
azpim favorites refresh
azpim स्टार्टअप समय में सुधार करने के लिए स्वचालित रूप से सब्सक्रिप्शन जानकारी को कैश करता है। कैश में 6 घंटे का TTL (टाइम-टू-लिव) होता है और समाप्त होने पर स्वचालित रूप से रिफ्रेश होता है।
कैश फ़ाइलें प्रति-उपयोगकर्ता संग्रहीत होती हैं:
~/.config/azpim/users/<userId>/subscriptions-cache.json%APPDATA%\azpim\users\<userId>\subscriptions-cache.json# सब्सक्रिप्शन कैश को फोर्स रिफ्रेश करें
azpim favorites refresh
# हॉट रीलोड के साथ डेवलपमेंट मोड में चलाएं
pnpm dev
# TypeScript प्रोजेक्ट बनाएं
pnpm build
# बिल्ट एप्लिकेशन चलाएं
pnpm start
# कोडबेस को लिंट करें
pnpm lint
यह रिपोजिटरी CHANGELOG.md में Keep a Changelog प्रारूप का उपयोग करती है।
सर्वोत्तम परिणामों के लिए, Conventional Commits का उपयोग करें:
feat: ... (नई सुविधा) → मामूली बंपfix: ... (बग फिक्स) → पैच बंपchore: ..., docs: ..., refactor: ... (ब्रेकिंग के अलावा कोई बंप नहीं)सुनिश्चित करें कि CHANGELOG.md में Unreleased के अंतर्गत अद्यतित प्रविष्टियाँ हैं।
निम्नलिखित में से एक चलाएं:
# कमिट से स्वचालित रूप से अगला संस्करण निर्धारित करता है, CHANGELOG.md अपडेट करता है,
# package.json बढ़ाता है, और एक git टैग बनाता है।
pnpm release
# पूर्वावलोकन करें कि क्या बदलेगा
pnpm release:dry
# यदि आवश्यक हो तो विशिष्ट बंप को बलपूर्वक लागू करें
pnpm release -- --release-as patch
pnpm release -- --release-as minor
pnpm release -- --release-as major
git push --follow-tags
npm publish
# या
pnpm publish
azpim/
├── src/
│ ├── index.ts # CLI एंट्री पॉइंट और कमांड परिभाषाएं
│ ├── core/ # मौलिक उपयोगिताएं (कोई डोमेन लॉजिक नहीं)
│ │ ├── constants.ts # साझा जादुई मान और डिफ़ॉल्ट
│ │ ├── errors.ts # एकीकृत त्रुटि प्रबंधन उपयोगिताएं
│ │ ├── json-store.ts # सामान्य JSON फ़ाइल स्थायित्व
│ │ ├── paths.ts # कॉन्फ़िग/डेटा फ़ाइल पथ समाधान
│ │ └── ui.ts # टर्मिनल UI (स्पिनर, फ़ॉर्मेटिंग, रंग)
│ ├── azure/ # Azure SDK रैपर
│ │ ├── auth.ts # Azure CLI क्रेडेंशियल + ग्राफ /me लुकअप
│ │ └── azure-pim.ts # PIM भूमिका सक्रियण/निष्क्रियण API
│ ├── data/ # स्थानीय डेटा स्थायित्व
│ │ ├── favorites.ts # पसंदीदा प्रबंधन
│ │ ├── presets.ts # प्रीसेट कॉन्फ़िगरेशन और सत्यापन
│ │ ├── subscription-cache.ts # सब्सक्रिप्शन कैशिंग (6 घंटे TTL)
│ │ └── update-check.ts # अपडेट सूचना प्रणाली
│ └── cli/ # इंटरैक्टिव फ्लो और कमांड स्कैफोल्डिंग
│ ├── cli.ts # मुख्य मेनू लूप और साझा सहायक
│ ├── command-handler.ts # पुन: प्रयोज्य कमांड रैपर (auth, UI, त्रुटियाँ)
│ ├── activate-flow.ts # भूमिका सक्रियण (वन-शॉट + इंटरैक्टिव)
│ ├── deactivate-flow.ts # भूमिका निष्क्रियण (वन-शॉट + इंटरैक्टिव)
│ ├── subscription-selector.ts # पसंदीदा के साथ सब्सक्रिप्शन खोज/चयन
│ ├── favorites-manager.ts # इंटरैक्टिव पसंदीदा प्रबंधन मेनू
│ └── presets-cli.ts # प्रीसेट जोड़ें/संपादित/प्रबंधित विज़ार्ड
├── package.json
├── tsconfig.json
├── CHANGELOG.md
└── README.md
कोडबेस एक स्तरित मॉड्यूल संरचना का अनुसरण करता है:
core/ — संपूर्ण प्रोजेक्ट में साझा की गई शून्य-निर्भरता उपयोगिताएँ। json-store.ts एक सामान्य लोड/सेव पैटर्न प्रदान करता है जिसका उपयोग सभी डेटा स्थायित्व फ़ाइलों द्वारा किया जाता है। errors.ts त्रुटि निष्कर्षण और कमांड-स्तरीय त्रुटि हैंडलिंग को केंद्रीकृत करता है। constants.ts जादुई मानों को समाप्त करता है।azure/ — Azure SDKs (@azure/identity, @azure/arm-authorization) और देशी fetch के माध्यम से हल्के Microsoft Graph /me कॉल के आसपास पतले रैपर। कोई UI लॉजिक नहीं।data/ — स्थानीय फ़ाइल स्थायित्व (पसंदीदा, प्रीसेट, सब्सक्रिप्शन कैश, अपडेट स्थिति)। सभी सुसंगत फ़ाइल I/O के लिए json-store का उपयोग करते हैं।cli/ — उपयोगकर्ता-मुखी इंटरैक्टिव फ्लो और कमांड स्कैफोल्डिंग। एक रैपर प्रदान करता है जो सभी Commander कमांडों में बॉयलरप्लेट (auth, UI सेटअप, त्रुटि हैंडलिंग) को समाप्त करता है। सक्रियण और निष्क्रियण फ्लो से एक फ़ंक्शन साझा करते हैं।सुनिश्चित करें कि Azure CLI आपके PATH में स्थापित और सुलभ है:
az --version
सुनिश्चित करें कि आप Azure CLI में लॉग इन हैं:
az login
सत्यापित करें कि आपके खाते में PIM-पात्र भूमिकाएँ हैं:
az account show
जाँचें कि आपके पास Azure AD में आवश्यक अनुमतियाँ हैं या नहीं
az login --refreshयह प्रोजेक्ट ISC लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।
तपन मीना - [email protected]
योगदान का स्वागत है! कृपया बेझिझक एक पुल रिक्वेस्ट सबमिट करें।
git checkout -b feature/amazing-feature)git commit -m 'कोई अद्भुत सुविधा जोड़ें')git push origin feature/amazing-feature)| कमांड | उपनाम | विवरण |
|---|
activate | a | Azure PIM में भूमिका सक्रिय करें (डिफ़ॉल्ट) |
deactivate | d | Azure PIM में भूमिका निष्क्रिय करें |
preset | - | पुन: प्रयोज्य प्रीसेट प्रबंधित करें |
favorites | fav | पसंदीदा सब्सक्रिप्शन प्रबंधित करें |
check-update | update, upgrade | नया वर्ज़न उपलब्ध है या नहीं जांचें |
help | - | सहायता जानकारी प्रदर्शित करें |
| कमांड | विवरण |
|---|
preset list | सभी उपलब्ध प्रीसेट सूचीबद्ध करें |
preset show | किसी विशिष्ट प्रीसेट का विवरण दिखाएं |
preset add | नया प्रीसेट जोड़ें (इंटरैक्टिव विज़ार्ड) |
preset edit | मौजूदा प्रीसेट संपादित करें (इंटरैक्टिव विज़ार्ड) |
preset remove | प्रीसेट हटाएं |
| कमांड | विवरण |
|---|
favorites list | सभी पसंदीदा सब्सक्रिप्शन सूचीबद्ध करें |
favorites add | सब्सक्रिप्शन को पसंदीदा में जोड़ें |
favorites remove | सब्सक्रिप्शन को पसंदीदा से हटाएं |
favorites clear | सभी पसंदीदा साफ़ करें |
favorites export | पसंदीदा को फ़ाइल में निर्यात करें |
favorites import | फ़ाइल से पसंदीदा आयात करें |
favorites refresh | सब्सक्रिप्शन कैश रिफ्रेश करें |
command-handler.tswithCommandHandlersubscription-selector.tsselectSubscriptionInteractive| चर | विवरण |
|---|
AZPIM_PRESETS_PATH | प्रीसेट फ़ाइल पथ को ओवरराइड करें |
AZPIM_FAVORITES_PATH | पसंदीदा फ़ाइल पथ को ओवरराइड करें |
AZPIM_NO_UPDATE_NOTIFIER | स्वचालित अपडेट जाँच अक्षम करने के लिए 1 पर सेट करें |
AZPIM_DISABLE_UPDATE_CHECK | AZPIM_NO_UPDATE_NOTIFIER का उपनाम |